在无人机技术圈,PX4和ArduPilot是两座无法绕开的高峰;它们不是简单的“飞行程序”,而是完整的机器人操作系统。对于技术开发者:先学PX4架构,再学ArduPilot应用,是最稳妥的路线。
一、PX4与ArduPilot:同源却走向两条技术路线
PX4和ArduPilot早期共享大量底层代码,后因设计理念不同,分化为两大生态:
- ArduPilot(AP):稳定、兼容极强、支持设备最多,偏向实用主义;
- PX4:架构现代化、模块化、标准严格,偏向学术/工业标准化。
总结:玩穿越机、老玩家、多设备兼容 → ArduPilot;开发、二次开发、行业无人机、研究 → PX4。
二、PX4架构:基于微内核的现代化设计
PX4的核心是微内核+异步消息总线,这是它最强大的地方。
1. 微内核架构
PX4把所有功能拆成独立的模块(Module):姿态估计;位置控制;导航;传感器采集;电机输出;GPS解析;避障系统。每个模块独立运行、独立编译、独立启停。一个模块崩溃,不会拖垮整个飞控——这就是高可靠性的来源。
2. uORB消息总线(PX4灵魂)
PX4所有模块之间不直接调用函数,而是通过uORB消息通信。比如:
- 传感器把数据发布成sensor_gyro消息
- 姿态解算订阅这个消息,计算姿态
- 控制器订阅姿态,输出油门
- 电调模块订阅控制量,驱动电机
这种解耦设计,让PX4成为最容易二次开发的飞控系统。
3. 任务调度:实时性保障
PX4运行在NuttX RTOS实时操作系统上,所有任务按优先级抢占式调度:
- 最高优先级:IMU采集、姿态解算;
- 中优先级:位置控制、导航;
- 低优先级:日志、通信、USB。
保证最关键的飞行任务永远不被阻塞。
三、ArduPilot架构:大一统的高度集成框架
ArduPilot的设计思路是单任务大循环+线程辅助。

四、PX4 vs ArduPilot:底层核心差异对比
1. 架构差异。PX4微内核、消息总线、异步、模块化;ArduPilot大循环、同步、高度集成。
2. 实时性。PX4:优先级调度 → 更适合高动态飞行;ArduPilot:固定循环 → 更稳定、更易调试。
3. 开发难度。PX4架构新,文档规范,学习曲线中等;ArduPilot代码量大、历史包袱重,深度开发更难。
4. 应用场景。PX4:研究、行业机、自主AI飞行、激光雷达避障;ArduPilot:航拍、穿越机、测绘、长期稳定作业。

五、两大飞控的共同底层逻辑(技术核心)
虽然架构不同,但飞行的本质是一致的:
1. 传感器数据流程完全一样:传感器采集 → 滤波 → 姿态估计 → 位置估计 → 控制律 → 电机输出。
2. 控制层级一致:姿态内环(最快);速度中环;位置外环(最慢)。
3. 都依赖EKF2 / EKF3:PX4使用EKF2,ArduPilot使用EKF3,本质都是扩展卡尔曼滤波,融合GPS、IMU、罗盘、视觉、雷达等数据。EKF是开源飞控能精准悬停的核心。
六、PX4和ArduPilot不只是两套代码,它们是全球无人机技术的精华合集。

七、PX4代表未来、模块化、标准化;ArduPilot代表稳定、兼容、实用主义。没有绝对的好坏,只有场景适合与否。
附录:PIXHAWK飞控的调试
PIXHAWK飞控的调试

PIXHAWK是一款开源硬件,起源于苏黎世联邦理工大学的计算机视觉与几何实验室、自主系统实验室和自动控制实验室的PX4项目。2014年,3DR联合APM小组和PX4小组,在PX4的基础上推出了升级版本,也就是这个PIXHAWK 1代,其主控制器使用了一款168MHz的STM32F427处理器(32位的处理器),老的APM硬件平台(Ardupilot Mega)使用的是8位的处理器,所以在处理一些复杂的运算上,PIXHAWK有明显的优势。
PIXHAWK是APM小组和PX4小组共同推出的产品,既可以安装APM固件,也可以安装PX4固件,PX4固件也被叫作PIXHAWK的原生固件。APM固件推出的时间比较早,经过这些年的发展和很多开源高手的维护,功能相对更完善,也更稳定。

2016年,PIXHAWK又有了第二代产品PIXHAWK2,其前身是3DR solo无人机的专用飞控,PIXHAWK2相比PIXHAWK1代,在处理器和传感器的规格相仿,但是它采用的主控与载板分离式的设计,非常方便用于二次开发。
主控CUBE内部50%以上都是减震海棉,能够减轻飞行器震动对传感器的影响;它还内置了加热电阻,可以让IMU长时间保持在最佳工作温度;三套加速度计、陀螺仪和磁罗盘组合,有更高的冗余性。


▲PIXHAWK的连接示意图

不同的飞控对电机序号的标识也是不一样的,我们这次安装的是4轴,这个是官方文档里4轴电机标识的说明,我们连接它们所对应的电调就是用主要输出部分的第1到第4列针,1对1,2对2,3对3,4对4。

接收机与飞控应该怎么连接呢。PIXHAWK的遥控输入既支持PPM,也支持S.BUS。我们建议使用支持S.BUS的接收机,这样连接比较简单,直接把接收机连在RC IN这个接口上就行了。如果接收机不支持S.BUS,只支持PWM,那我们就需要使用PPM编码器进行转接,把PWM接收机与PPM编码器之间通道一一对应连接,然后再把PPM编码器连接在飞控RC IN接口上。我们这次的课程就是用PPM编码器来转接PWM接收机信号的,左面的线连接飞控,右面的线连接收机,这上面有通道1到通道8的标识,连接的时候我们要与接收机一一对应。

▲FMU和IO模块的指示灯

▲安全开关指示灯

▲飞控状态指示灯

这次我们把PIXHAWK安装在以前用过的一个机架,机架轴距是360,电机是2212 920KV,20电调。遥控器还是天地飞9二代,9通道接收机。
