3、硬件支持生态:主流Pixhawk系列硬件支持情况、外围设备兼容性对比
选飞控固件,说白了就是选硬件生态。你代码写得再漂亮,板子跑不起来也是白搭。PX4和ArduPilot虽然都支持Pixhawk标准,但支持的深度、广度,以及对周边设备的兼容性,差别其实挺大的。我这些年经手过不下二十种飞控板,踩过的坑不少,今天跟你聊聊这里面的门道。
3.1 Pixhawk系列硬件支持:谁更“亲民”?
先看一张总览图,帮你快速建立整体认知。
从这张图你能看出来,PX4对Pixhawk标准的支持更“激进”。它从v1到v6全线覆盖,而且对第三方板卡(比如CUAV、Holybro、mRo)的适配速度非常快。我个人习惯是,如果项目需要用到最新的硬件特性,比如STM32H7或者F7系列,我会优先选PX4。它的NuttX RTOS驱动层写得很干净,新板子出来基本两周内就能跑起来。
ArduPilot这边呢?它更“念旧”。Pixhawk v1/v2这些老古董,ArduPilot跑得比PX4还稳。我记得有一次项目要用APM 2.x的库存板子,ArduPilot一把就过,PX4反而要改不少底层配置。但代价是,它对v5/v6的支持有点慢半拍。新板子出来,ArduPilot社区往往要等一两个月才能稳定适配。
核心结论:如果你追求新硬件、快迭代,选PX4;如果你手头有老设备、求稳定,ArduPilot更省心。
3.2 外围设备兼容性:传感器、GPS、数传、遥控器
硬件板子只是第一步。飞控真正干活,靠的是外围设备。我见过太多人板子选对了,结果GPS不认、数传连不上、遥控器丢包,最后整个项目重来。下面这张表是我自己整理的兼容性清单,你直接拿去用。
| 设备类型 | 具体型号 | PX4 兼容性 | ArduPilot 兼容性 | 我的经验备注 |
|---|---|---|---|---|
| GPS/RTK | u-blox M8N / M9N | ★★★★★ 原生支持 | ★★★★★ 原生支持 | 两者都很好,M9N在PX4上多模融合更顺 |
| Here+ / Here3 | ★★★★☆ 需手动配置 | ★★★★★ 即插即用 | ArduPilot对Here系列有专属驱动 | |
| Septentrio mosaic-H | ★★★☆☆ 社区驱动 | ★★★★☆ 官方支持 | 高精度场景,ArduPilot更成熟 | |
| 数传电台 | Holybro Telemetry Radio | ★★★★★ 原生支持 | ★★★★★ 原生支持 | 都很好,注意固件版本匹配 |
| Microhard pDDL | ★★★☆☆ 需第三方驱动 | ★★★★☆ 官方集成 | 工业级场景,ArduPilot更省事 | |
| 遥控器接收机 | SBUS / PPM / DSMX | ★★★★★ 原生支持 | ★★★★★ 原生支持 | 两者无差异,SBUS最稳 |
| CRSF (Crossfire) | ★★★★☆ 需配置参数 | ★★★★★ 原生支持 | ArduPilot对CRSF的遥测回传更完整 | |
| 光流/视觉 | PX4FLOW / OptiFlow | ★★★★★ 原生支持 | ★★★☆☆ 需手动编译 | PX4对光流传感器支持更广 |
| Intel RealSense T265 | ★★★★☆ 通过MAVSDK | ★★★★☆ 通过MAVSDK | 两者都需要额外开发,PX4的集成示例更多 |
一个小技巧:如果你不确定某个外设在PX4上能不能用,直接去它的硬件数据库查。ArduPilot则可以在编译时用 configure --list 看支持的驱动列表。
3.3 避坑指南:我踩过的三个硬件坑
讲完理论,说点实际的。这些年我在硬件兼容性上栽过不少跟头,挑三个典型的跟你说说。
坑一:Pixhawk v4 的 I2C 总线冲突
我曾经在一个农业无人机项目里,用Pixhawk v4跑PX4,外挂了一个I2C的激光雷达和一个I2C的温湿度传感器。结果一上电,雷达数据乱跳,温湿度直接读不到。查了两天,最后发现是v4的I2C总线驱动能力不足,两个设备抢地址。解决办法是换用UART接口的雷达,或者加一个I2C多路复用器。如果你用ArduPilot,它的I2C驱动有重试机制,能缓解这个问题,但治标不治本。
坑二:GPS 的波特率不匹配
有一次给客户调试,用的是u-blox M9N GPS,默认波特率是38400。但PX4的默认GPS波特率是9600。我忘了改参数,结果GPS一直报“no GPS data”。折腾了一下午,最后在QGroundControl里把 GPS_1_BAUD 改成38400才解决。ArduPilot这边,它的GPS自动检测功能更强,能自适应波特率,但也不是100%成功。我的建议是:拿到新GPS,先看手册确认波特率,别偷懒。
坑三:数传电台的固件版本不匹配
Holybro的Radio Telemetry,PX4和ArduPilot都能用,但固件版本必须匹配。我曾经把PX4的固件刷到数传里,然后拿去连ArduPilot的飞控,结果一直断连。后来才发现,PX4的数传固件用的是MAVLink 2协议,ArduPilot默认是MAVLink 1。解决办法是重新刷数传固件,或者在ArduPilot的参数里开启MAVLink 2。嗯,这里要注意:买数传时问清楚卖家刷的是哪个固件版本。
重要提醒:硬件兼容性不是一成不变的。PX4和ArduPilot都在快速迭代,今天不支持的设备,明天可能就支持了。我的习惯是:每次项目开始前,先去官方论坛搜一下最新的兼容性报告,别只看旧文档。
3.4 如何快速判断一个外设是否兼容?
你不可能记住所有外设的兼容性。我教你一个快速判断的方法,分三步走:
- 查官方数据库:PX4有硬件数据库,ArduPilot有外设列表。输入型号,直接看结果。
- 看驱动源码:如果数据库没有,去GitHub看源码。PX4的驱动在
src/drivers/目录下,ArduPilot的在libraries/AP_*目录下。有对应的.c或.cpp文件,基本就支持。 - 搜社区案例:在PX4的Discuss论坛或ArduPilot的Discourse里搜设备型号。如果有人成功用过,会发帖分享配置方法。
这三步走下来,99%的设备你都能搞清楚。剩下1%?嗯,那就只能自己动手试了。我一般会先搭一个最小系统,只接飞控和那个外设,看能不能通信。能通,再往上加其他设备。
3.5 小结:硬件选型的三个原则
说了这么多,最后给你三个原则,记牢了:
- 原则一:新项目用新硬件,选PX4;老项目维护用老硬件,选ArduPilot。
- 原则二:外设兼容性,先查数据库,再看源码,最后问社区。
- 原则三:别迷信“即插即用”。任何外设到手,先看手册,确认波特率、协议、固件版本。
硬件生态这块,说白了就是“匹配”二字。飞控和外设匹配好了,项目就顺了。匹配不好,你后面所有的工作都是在填坑。希望今天的内容能帮你少走弯路。