登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
APM飞控
›
ArduPilot-1-ArduPilot还是PX4?
返回列表
发新帖
查看:
1100
|
回复:
0
ArduPilot-1-ArduPilot还是PX4?
[复制链接]
ofuzlj
ofuzlj
当前离线
积分
1556
窥视卡
雷达卡
41
主题
778
帖子
1556
积分
金牌飞友
金牌飞友, 积分 1556, 距离下一级还需 1444 积分
金牌飞友, 积分 1556, 距离下一级还需 1444 积分
积分
1556
飞币
776
注册时间
2017-8-12
发消息
发表于 2022-12-7 14:40:23
|
显示全部楼层
|
阅读模式
在前面的分享
PX4-1-开源飞控项目
中,我们简单分享了一些比较知名的开源飞控项目,对ArduPilot也做了简单的介绍。
ArduPilot与PX4是目前最为成熟完善的开源飞控项目,两个项目的系统架构差异比较大,很多同学也会问我应该学习哪一个比较好。
在PX4系列分享中,我们已经更新了19篇文章(可以在公众号主页点击OPENUAV/PX4获取列表),对PX4的
系统架构
消息机制(uORB)
任务调度
设备驱动
日志系统
仿真系统
混控
ROS/ROS2接口
等方面都做了简单的介绍,大家对PX4应该有一些系统性的认识。
我们没有对ArduPilot做系统性的介绍,这里我们先简单介绍一下ArduPilot开源项目的基本信息。
ArduPilot也叫ArduPilotMega(APM),最早是基于Arduino运行在ATMEGA2560这一款8位AVR单片机上,目前的ArduPilot的代码架构也非常类似于Arduino的架构。
很多同学对这个板子应该都还有印象,最早接触它还是在大学时期,一晃已经过去将近10年。
ArduPilot项目起源于2007年,在2011年发布APM2时其系统架构已经有了目前的系统架构的雏形。
后面比较有重大意义的时间节点有:
2012年PX4项目发布,并发布了第一代PX4FMU,ArduPilot设计AP_HAL支持更多的飞控硬件
2013年ArduPilot将PX4项目作为中间件,实现对Pixhawk硬件的支持。
从这开始ArduPilot与PX4项目就有着紧密的关系,这时候ArduPilot的代码结构是这样的:
├── ArduCopter
├── ArduPlane
├── libraries
│ ├── AC_AttitudeControl
│ ├── AC_PID
│ ├── ...
│ ├── AP_HAL
│ ├── AP_HAL_Empty
│ ├── AP_HAL_Linux
│ ├── AP_HAL_PX4
│ ├── AP_HAL_SITL
├── modules
│ ├── PX4Firmware
│ ├── PX4NuttX
│ └── uavcan
2014年 DroneCode开源飞控基金会成立,PX4与ArduPilot都是其中的开源项目。
2016年ArduPilot与DroneCode因为理念的不同分道扬镳,ArduPilot脱离DroneCode基金会,这件事情当时引起了广泛讨论,ArduPilot与DroneCode的是非关系这里就不再讨论。
2018年ArduPilot引入ChibiOS作为ArduPilot的RTOS,移除了PX4Firmware、PX4NuttX,至此ArduPilot与PX4项目脱离关系。
到这里ArduPilot与PX4回到独立开发的阶段,最近几年都发展迅速,迭代非常快。
现在大家对ArduPilot项目的发展应该有一定的认识,我们对ArduPilot与PX4做一些简单的对比,下表是github上截至2022年11月19号的一些统计数据:
PX4
ArduPilot
commits(master分支)
41538
55588
forks
12.1k
13.5k
starred
6k
7.8k
contributors
556
661
从统计数据上看,ArduPilot在代码提交数量、项目forks、starred以及代码贡献者数量上都要多于PX4。
当然这些数据不能说明ArduPilot就优于PX4,ArduPilot项目发起比PX4更早,积累了更多的代码和功能。
在源码框架上的一些不同:
使用的RTOS不同:APM目前使用ChibiOS,而PX4使用Nuttx,当然它们都支持linux系统
消息机制不同:PX4使用uORB的微消息代理机制进行任务间的数据传递和消息同步等,任务间耦合较低;APM的模块封装在libraries中的各个类模块中,在应用层(ArduCopter、ArduPlane、Rover等)通过实例化具体的类来完成具体的功能,比如传感器、EKF、位置控制、motor等模块,模块间的数据传递通过类的输入输出接口完成。
任务框架不同:PX4的每个任务均运行在独立的task和工作队列中,而APM的应用层自己实现了一个调度器(AP_Scheduler)
代码框架的复杂程度上PX4会比APM复杂一些,模块的封装程度更高,在task、uorb、传感器的驱动封装上更为复杂一些,当然如果仅仅使用的话只要参考demo也能非常快的入门。
以下两图是ArduPilot与PX4的代码框架图
ArduPilot:
PX4:
初看两者的架构图可能对其理解不多。在后续的分享中我会新增ArduPilot这一主题,详细聊聊ArduPilot各个部分的系统架构,欢迎大家关注。
讲到这里还是没有回答我们选择ArduPilot还是PX4学习更为合适,可能如果大家对ArduPilot和PX4都有一定的了解,可能能选择更满足自己需求的项目,这里我先分享一下我自己的体会:
ArduPilot的开发时间更久,积累的代码和功能更多,使用体验上整体会略好一些,代码结构更加简单清晰,上手会容易一些,更适合航模或者飞控爱好者。
PX4起源于苏黎世联邦理工学院,发展比ArduPilot稍微晚一些,系统设计去耦合,且在对ROS与ROS2的支持上更充分一些,仿真系统也更完善一些,更适合高校研究开发。
以上是我个人的理解,可能有不准确的地方,欢迎私信我交流讨论。
往期分享:
AcmeGCS-21-原生ROS2支持
PX4-19-MicroDDS
PX4-18-混控动态分配
这里会不定期更新一些我整理的无人机相关知识,如果对您有帮助,欢迎关注转发分享。
PX4
,
还是
相关帖子
•
【真实测评】最好的第一人称拍摄设备!头戴还是挂脖?运动相机支架大测评。
•
PX4自动驾驶系统使用QFRTK双天线RTK。位置精度2厘米,角度精度0.2度
•
【开源无人机】从零启动mavros,打通ROS与PX4通信
•
一阶低通滤波(LPF)的原理及应用(以APM/PX4飞控为例)
•
超维小课堂(二十九):PX4无人机使用双天线RTK定位定向
•
超维小课堂(三十三):PX4固件没有电流计的情况下校准电调
•
PX4仿真环境下RGB-D+港科大Fast-Planner旋翼无人机自主导航
•
继neo全网首炸后,air 3S发布后30分钟不到我就炸鸡了,还是穿越机安全啊~
•
【连载】PX4自驾仪初步配置(五)
•
PX4从放弃到精通(二):ubuntu18.04配置px4编译环境及mavros环境
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表