3、硬件支持生态:主流Pixhawk系列硬件支持情况、外围设备兼容性对比

选飞控固件,说白了就是选硬件生态。你代码写得再漂亮,板子跑不起来也是白搭。PX4和ArduPilot虽然都支持Pixhawk标准,但支持的深度、广度,以及对周边设备的兼容性,差别其实挺大的。我这些年经手过不下二十种飞控板,踩过的坑不少,今天跟你聊聊这里面的门道。

3.1 Pixhawk系列硬件支持:谁更“亲民”?

先看一张总览图,帮你快速建立整体认知。

PX4 vs ArduPilot 硬件支持生态对比 PX4 生态 Pixhawk 标准全系列(v1/v2/v4/v5/v6) CUAV / Holybro / mRo 等第三方板 高通骁龙Flight / 树莓派CM4 NuttX RTOS 原生驱动支持 新硬件适配周期:2-4周 ArduPilot 生态 Pixhawk v1/v2/v4(v5/v6 部分支持) Cube系列 / Here系列 / RADIO ChibiOS / HAL 驱动层(硬件抽象) 老硬件兼容性好(如APM 2.x) 新硬件适配周期:4-8周 绿色=强支持 橙色=中等支持 紫色=架构特点 红色=弱项

从这张图你能看出来,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 如何快速判断一个外设是否兼容?

你不可能记住所有外设的兼容性。我教你一个快速判断的方法,分三步走:

  1. 查官方数据库:PX4有硬件数据库,ArduPilot有外设列表。输入型号,直接看结果。
  2. 看驱动源码:如果数据库没有,去GitHub看源码。PX4的驱动在 src/drivers/ 目录下,ArduPilot的在 libraries/AP_* 目录下。有对应的.c或.cpp文件,基本就支持。
  3. 搜社区案例:在PX4的Discuss论坛或ArduPilot的Discourse里搜设备型号。如果有人成功用过,会发帖分享配置方法。

这三步走下来,99%的设备你都能搞清楚。剩下1%?嗯,那就只能自己动手试了。我一般会先搭一个最小系统,只接飞控和那个外设,看能不能通信。能通,再往上加其他设备。

3.5 小结:硬件选型的三个原则

说了这么多,最后给你三个原则,记牢了:

  • 原则一:新项目用新硬件,选PX4;老项目维护用老硬件,选ArduPilot。
  • 原则二:外设兼容性,先查数据库,再看源码,最后问社区。
  • 原则三:别迷信“即插即用”。任何外设到手,先看手册,确认波特率、协议、固件版本。

硬件生态这块,说白了就是“匹配”二字。飞控和外设匹配好了,项目就顺了。匹配不好,你后面所有的工作都是在填坑。希望今天的内容能帮你少走弯路。