1. 课程导入
做无人机飞控这些年,我越来越觉得定位系统就是无人机的"眼睛"和"小脑"。没有可靠的定位,再好的姿态控制算法也白搭。今天咱们就来聊聊PX4的定位模块到底是怎么一回事。
定位在无人机中的核心作用
说白了,定位解决的是三个问题:"我在哪?"、"我要去哪?"、"怎么去?"。你想想看,无人机在空中没有路标,没有车道线,全靠传感器数据来感知自身位置。
我记得刚入行那会儿,有个项目在室内飞,GPS信号被遮挡,无人机直接飘了。从那以后我深刻认识到——定位是飞控的基石,没有它,一切上层功能都是空中楼阁。
定位模块的核心职责:
- 提供无人机在三维空间中的位置(x, y, z)
- 提供速度信息(vx, vy, vz)
- 提供姿态信息(roll, pitch, yaw)
- 融合多传感器数据,输出最优估计
PX4定位系统整体架构
PX4的定位架构其实不复杂,但设计得很巧妙。它采用模块化设计,各个传感器通过uORB消息总线通信。我画了张图,你看一眼就明白了。
从图上你能看到,PX4的定位流程很清晰:传感器采集数据 → uORB总线分发 → EKF2滤波器融合 → 输出位置估计。我个人觉得,EKF2是整个定位系统的"大脑",它负责把各个传感器的数据揉在一起,取长补短。
小提示:PX4从v1.11开始默认使用EKF2,老版本的LPE(Local Position Estimator)已经废弃了。如果你还在用旧版本,建议尽快迁移。
主流定位方案对比
做项目这么多年,我接触过各种定位方案。每种方案都有自己的脾气,选型时得看场景。下面这个表格是我自己整理的,你参考一下。
| 定位方案 | 精度 | 更新频率 | 适用场景 | 主要局限 |
|---|---|---|---|---|
| GNSS(GPS/北斗) | 2-5m(单点) 0.1-0.5m(RTK) |
5-20 Hz | 室外开阔环境 | 室内/城市峡谷失效 |
| 视觉定位(VIO) | 0.1-0.5m | 10-30 Hz | 室内/弱GPS环境 | 光照敏感、计算量大 |
| 激光SLAM | 0.01-0.1m | 5-20 Hz | 室内/结构化环境 | 成本高、重量大 |
| 纯惯导(INS) | 短期精度高 长期漂移严重 |
100-1000 Hz | 辅助其他传感器 | 无法单独长时间使用 |
各方案深度解析
GNSS定位
GNSS是目前最成熟的室外定位方案。PX4支持GPS、北斗、GLONASS多系统联合定位。我建议你在开阔环境下优先使用GPS+北斗双模,搜星数量多,定位更稳。
不过要注意,单点GPS的精度只有2-5米,做航点飞行勉强够用,但要是做精准降落或者测绘,必须上RTK。我曾经在一个农业植保项目里,用RTK把定位精度做到了厘米级,效果确实好。
避坑指南:我曾经遇到过GPS天线安装位置不对,导致信号被机臂遮挡,定位精度直接掉到10米以上。GPS天线一定要放在无人机顶部,远离碳纤维和金属部件。
视觉定位
视觉定位这两年发展很快。PX4通过Realsense T265或者Intel D435这类传感器,可以实现VIO(视觉惯性里程计)。说白了就是摄像头看特征点,IMU测加速度,两者互补。
视觉定位最大的优势是不依赖外部信号,室内也能用。但缺点也很明显——光线暗了不行,纹理少了也不行。我记得有个项目在白色墙壁的走廊里飞,视觉定位直接失效,最后还是靠超声波补了回来。
激光SLAM
激光雷达的精度是最高的,但成本也是最高的。PX4目前对激光SLAM的支持主要通过外部计算平台(比如树莓派或NUC)完成,然后通过MAVLink把位置信息传给飞控。
说实话,消费级无人机很少用激光雷达,太重太贵了。但在工业巡检、矿井探测这些场景里,激光SLAM是首选,因为它在黑暗无光的环境下照样工作。
惯导定位
纯惯导(INS)我一般只把它当辅助手段。IMU的加速度计和陀螺仪频率高(能到1kHz),但积分一次就有漂移,积分两次漂移更严重。你想想看,一个0.01m/s²的加速度误差,积分10秒就变成1m/s的速度误差,再积分就是5米的位置误差。
所以PX4的做法是:用IMU做高频预测,用GPS/视觉做低频修正。这就是EKF2的核心思想——取长补短。
定位方案选型建议
说了这么多,到底怎么选?我根据项目经验给你几个建议:
- 室外开阔环境:GNSS + IMU 组合,成本低效果好
- 室内/隧道/矿井:视觉SLAM 或 激光SLAM,配合IMU
- 城市峡谷/弱GPS:视觉+GNSS+IMU 多传感器融合
- 高精度测绘:RTK-GNSS + IMU,必要时加视觉辅助
核心结论:没有一种定位方案是万能的。PX4的EKF2之所以强大,就是因为它能灵活组合多种传感器。你只需要根据场景选择合适的传感器组合,剩下的交给滤波器去融合。
嗯,这一章的内容就到这儿。定位模块的架构和方案对比,心里有数了吧?后面我们会深入EKF2的数学原理,到时候你就知道这些传感器数据是怎么揉在一起的了。