1. PX4 概述与生态:从历史到选型,我带你捋一遍
做无人机开发这些年,我接触过不少飞控系统。但要说哪个开源项目最让我觉得「靠谱」,那还得是 PX4。今天咱们就从它的历史、协议、硬件、架构,再到和 ArduPilot 的对比,把 PX4 的底细彻底聊透。
1.1 PX4 的历史沿革:一个瑞士实验室的意外走红
PX4 最早是苏黎世联邦理工学院(ETH Zurich)的一个计算机视觉项目。2011 年,几位博士生为了做视觉导航研究,顺手写了一套飞控固件。没想到,这套代码后来成了无人机开源界的顶梁柱。
我记得 2014 年第一次接触 PX4 时,它还是个「学生作品」——文档少、接口乱、动不动就炸机。但到了 2016 年,PX4 被 Linux 基金会旗下的 Dronecode 项目接管,开始走正规军路线。从那以后,代码质量、社区规范、硬件支持都上了好几个台阶。
几个关键时间点:
- 2011 年:ETH Zurich 启动 PX4 项目,最初用于视觉惯性里程计研究。
- 2014 年:Pixhawk 1 硬件发布,PX4 成为其默认固件。
- 2016 年:PX4 加入 Dronecode 基金会,开始标准化治理。
- 2019 年:PX4 v1.10 发布,引入 uXRCE-DDS 中间件,正式拥抱 ROS 2。
- 2023 年:PX4 v1.14 发布,支持多旋翼、固定翼、VTOL、无人船、无人车全平台。
核心观点:PX4 不是一夜爆红的。它从学术项目走到工业级飞控,靠的是持续迭代和社区共建。如果你现在入坑,选 v1.14 或更新的稳定版,别碰那些「古董版本」。
1.2 开源协议:BSD 3-Clause,给你最大的自由度
PX4 采用 BSD 3-Clause 协议。说白了,就是你可以随便用、随便改、甚至闭源商用,只要保留版权声明就行。
我见过不少团队担心「开源协议会不会有坑」。这里我直接说结论:BSD 3-Clause 是商业友好的。你不需要把修改后的代码开源,也不需要向社区付费。相比之下,GPL 协议(比如 ArduPilot 早期版本)就有「传染性」——你用了 GPL 代码,整个项目都得开源。
| 协议 | 商用限制 | 修改后必须开源 | 保留版权声明 |
|---|---|---|---|
| BSD 3-Clause | 无 | 否 | 是 |
| GPL v3 | 有(传染性) | 是 | 是 |
| Apache 2.0 | 无 | 否 | 是 |
避坑指南:我曾经见过一个团队,把 PX4 改了一通后直接卖产品,结果被「假律师」吓唬说侵权。其实只要你在产品文档里保留 BSD 版权声明,就完全合规。别自己吓自己。
1.3 硬件支持列表:Pixhawk 系列是主力,但不是唯一
PX4 官方支持的硬件列表很长,但核心就是 Pixhawk 系列。从最早的 Pixhawk 1,到现在的 Pixhawk 6X、Pixhawk 6C,性能翻了十几倍。
我个人习惯把硬件分成三档:
- 入门级:Pixhawk 4 Mini、Pixhawk 6C。适合学习、小型无人机、预算有限的项目。
- 进阶级:Pixhawk 6X、Pixhawk 5X。带双 IMU、双气压计、冗余电源,适合工业应用。
- 旗舰级:CUAV V5+、Holybro Pixhawk 6X Pro。支持多路串口、CAN 总线、RTK GPS,适合复杂系统。
你想想看,为什么 Pixhawk 系列能成为事实标准?因为它的硬件设计是开源的——原理图、PCB、BOM 全公开。这意味着任何厂商都可以生产兼容板,价格自然就下来了。
| 硬件型号 | 处理器 | IMU | 接口数量 | 推荐场景 |
|---|---|---|---|---|
| Pixhawk 4 Mini | STM32F427 | 单 IMU | 5 路 UART | 学习、小型四轴 |
| Pixhawk 6C | STM32H743 | 双 IMU | 8 路 UART | 中型无人机 |
| Pixhawk 6X | STM32H753 | 双 IMU + 双气压计 | 10 路 UART | 工业、科研 |
注意:别只看芯片型号。Pixhawk 6X 的 H753 比 6C 的 H743 多了硬件加密和更多内存,但价格也翻倍。选型时先问自己:我真的需要双 IMU 冗余吗?如果只是飞着玩,6C 完全够用。
1.4 软件架构全景图:从底层驱动到上层应用
PX4 的软件架构,说白了就是一套 模块化实时系统。它跑在 NuttX RTOS 上,所有功能都是独立的模块,通过 uORB 消息总线通信。
我画了一张架构图,你一看就明白:
嗯,这里要注意:uORB 是 PX4 的灵魂。每个模块(比如 GPS 驱动、姿态控制器)都通过 uORB 发布自己的数据,其他模块订阅需要的数据。这种设计让系统非常灵活——你想换一个姿态控制算法?写个新模块,订阅 IMU 数据,发布控制指令就行,不用动其他代码。
我刚开始学 PX4 时,最头疼的就是理解 uORB 的发布/订阅模型。后来我做了个小实验:写一个自定义模块,订阅 GPS 数据,然后通过 MAVLink 发到地面站。前后只用了 30 行代码。那一刻我才真正明白,模块化架构有多香。
1.5 与 ArduPilot 的对比:选哪个?看场景
这个问题我几乎每次培训都会被问到。我的回答是:没有绝对的好坏,只有适不适合。
ArduPilot 的历史比 PX4 更久,2007 年就开始了。它走的是「全功能」路线——固定翼、多旋翼、无人车、无人船、潜水器,全平台覆盖。而 PX4 更偏向「现代架构」——代码更干净、模块化更好、对 ROS 2 的支持更原生。
| 对比维度 | PX4 | ArduPilot |
|---|---|---|
| 操作系统 | NuttX RTOS | ChibiOS / Linux |
| 编程语言 | C++(现代风格) | C++(传统风格) |
| 消息机制 | uORB 发布/订阅 | 全局变量 + 库函数 |
| ROS 2 支持 | 原生(uXRCE-DDS) | 通过 MAVROS 桥接 |
| 硬件支持 | Pixhawk 系列为主 | 更广泛(包括 Arduino) |
| 学习曲线 | 中等(需要理解 uORB) | 较平缓(参数配置为主) |
| 商业应用 | 较多(工业、科研) | 较多(农业、测绘) |
我个人习惯这样选:
- 如果你要做 科研、算法验证、ROS 2 集成,选 PX4。它的模块化架构和 DDS 支持让你少写很多胶水代码。
- 如果你要做 传统测绘、农业植保、固定翼长航时,选 ArduPilot。它的参数体系更成熟,社区案例更多。
- 如果你是 初学者,我建议从 PX4 开始。因为它的代码结构更清晰,学完 PX4 再看 ArduPilot 会容易很多。
我的经验:我曾经在两个项目里分别用了 PX4 和 ArduPilot。PX4 的项目是「视觉避障 + ROS 2 控制」,从开发到调试只用了 3 个月。ArduPilot 的项目是「固定翼测绘」,参数调了 2 周才稳定。不是说 ArduPilot 不好,而是不同场景有不同最优解。
1.6 小结:PX4 生态的核心优势
聊了这么多,总结一下 PX4 生态的几大优势:
- BSD 协议:商用无压力,闭源不担心。
- Pixhawk 硬件:开源设计、厂商众多、价格透明。
- uORB 架构:模块化、可扩展、易调试。
- ROS 2 原生支持:科研和工业的标配。
- 社区活跃:GitHub 上 7 万+ Star,问题响应快。
嗯,第一章的内容就到这。记住一句话:PX4 不是万能的,但它是目前开源飞控里最「现代」的选择。后面的章节,我会带你深入每个模块的源码和原理。准备好了吗?