3. 传感器融合基础:GPS、IMU、磁力计、气压计各自的特点与局限
做飞控调参这么多年,我越来越觉得一个道理:没有完美的传感器,只有会搭配的融合算法。你想想看,如果某个传感器啥都能干,那还要EKF干嘛?直接用它不就完了。
这一节,咱们就把四个核心传感器——GPS、IMU、磁力计、气压计——挨个拆开看看。它们各自擅长什么,又在什么场景下掉链子。搞懂了这些,你调EKF参数时心里就有底了。
核心观点:传感器融合的本质,就是用各传感器的长处去补对方的短处。GPS怕遮挡,IMU怕漂移,磁力计怕干扰,气压计怕风。EKF要做的,就是在不同场景下动态调整对每个传感器的信任度。
3.1 GPS:室外定位的基石,但别太依赖它
GPS是EKF位置估计的主心骨。在开阔天空下,它能给你米级甚至亚米级的绝对位置。我个人习惯把GPS当作“锚点”——它告诉飞控“你现在大概在这个经纬度”,然后IMU负责在两次GPS更新之间做短时间的高频推算。
GPS的优势很明显:
- 提供绝对位置,没有累积误差
- 更新率虽然只有5-10Hz,但足够做位置修正
- 配合RTK可以做到厘米级精度
但它的局限也很要命:
- 信号遮挡:我在城市峡谷里飞过一架六轴,GPS瞬间从12颗星掉到4颗,位置跳了十几米。嗯,那次差点炸机。
- 多路径效应:高楼反射的信号会让位置出现系统性偏差,你调EKF参数都救不回来。
- 更新率低:10Hz的更新率对于剧烈机动来说太慢了,中间全靠IMU撑着。
- 高度不准:GPS的垂直精度比水平精度差2-3倍,所以EKF里高度主要靠气压计。
调参提示:在GPS信号好的地方,可以把EKF的GPS位置噪声设小一点(比如0.5-1.0m),让EKF更信任GPS。但在城市环境,我建议把噪声放大到2.0-3.0m,避免位置跳变影响控制。
3.2 IMU:高频姿态的脊梁,但漂移是宿命
IMU包含加速度计和陀螺仪。它每秒能输出几百次数据,是飞控实时响应的基础。说白了,没有IMU,飞控就是个瞎子。
加速度计的特点:
- 能感知重力方向,所以可以辅助确定俯仰和横滚
- 但加速度计分不清“重力”和“运动加速度”——你急加速时,它以为你在倾斜
- 高频噪声大,需要低通滤波
陀螺仪的特点:
- 测量角速度,积分得到角度
- 但积分就会漂移——温度变化、零偏不稳定,都会让角度慢慢跑偏
- 我遇到过一台飞控,陀螺仪零偏在起飞后5分钟内漂了3度,如果不靠磁力计和GPS修正,飞机会一直偏航
避坑指南:我曾经在调试时忽略了IMU温度校准。冬天室外零下10度起飞,IMU的零偏和常温差了将近一倍。结果EKF的位置估计一直收敛不了,飞机在空中晃得像喝醉了。后来我养成了一个习惯:每次换IMU或换环境温度,先做一次六面校准。
3.3 磁力计:偏航的救星,但也是最脆弱的传感器
磁力计(罗盘)是EKF里唯一能提供绝对偏航参考的传感器。没有它,GPS+IMU只能给出相对偏航,飞机会慢慢转圈。
磁力计的作用:
- 测量地球磁场方向,给出磁北偏角
- 在EKF里,它主要用来修正陀螺仪的偏航漂移
但它的局限让人头疼:
- 电磁干扰:电机、电调、电源线都会产生磁场。我见过一架四轴,电机油门从50%推到80%,磁力计读数偏了15度。EKF直接懵了。
- 硬铁/软铁干扰:机身上的铁磁材料会扭曲磁场,需要做椭球拟合校准。
- 环境磁场异常:在钢筋建筑、高压线附近,磁力计基本废了。
关键参数:ArduPilot里有个参数叫COMPASS_OFFS_MAX,默认是500mGauss。如果校准后偏移量超过这个值,飞控会报错。我建议在装机后先看日志里的磁力计偏移量,如果超过300mGauss,就要检查安装位置或重新校准。
3.4 气压计:高度估计的支柱,但风是它最大的敌人
气压计是EKF里高度通道的主力。GPS高度不准,IMU积分会漂,只有气压计能给出相对稳定的高度变化。
气压计的优势:
- 分辨率高,能感知厘米级的高度变化
- 更新率20-50Hz,比GPS快
- 没有累积漂移(但受天气影响)
它的致命弱点:
- 风敏感:这是最大的坑。风吹过气压计的开孔,会造成压力波动。我在海边飞过一架固定翼,侧风一吹,气压计高度跳了2米,飞控以为飞机在爬升,自动推了油门——结果越飞越高。
- 温度漂移:从室内拿到室外,温度变化会让气压计读数缓慢漂移,需要几分钟才能稳定。
- 气压变化:天气系统变化也会影响绝对高度,但EKF一般用相对高度,所以影响不大。
调参技巧:如果你在风大的环境飞行,可以适当增大EKF里气压计的噪声参数(EKF2_BARO_GATE或EKF3_BARO_GATE),让EKF不那么信任气压计。我一般从默认的5.0调到8.0-10.0,效果不错。
3.5 传感器融合的逻辑:一张图看懂
下面这张图展示了EKF里四个传感器如何协同工作。我画这张图时,特意把每个传感器的“主战场”标了出来——你看完就明白为什么EKF要这么设计了。
3.6 各传感器的局限对比表
我把四个传感器的关键局限整理成了表格。你调参时,可以对照这张表去排查问题。
| 传感器 | 主要局限 | 影响场景 | EKF应对策略 |
|---|---|---|---|
| GPS | 信号遮挡、多路径、更新率低 | 城市峡谷、树荫下、室内 | 增大位置噪声,降低信任权重 |
| IMU | 积分漂移、温度零偏、振动噪声 | 长时间飞行、剧烈机动、低温环境 | 定期校准、加速度计/陀螺仪噪声参数 |
| 磁力计 | 电磁干扰、硬铁/软铁干扰、环境异常 | 大电流飞行、金属结构附近、高压线 | 椭球校准、增大偏航噪声、融合GPS航向 |
| 气压计 | 风敏感、温度漂移、气压变化 | 大风天、快速升降、温度突变 | 增大气压计门限、配合IMU垂直加速度 |
3.7 实战中的融合策略
搞清楚了每个传感器的脾气,接下来就是怎么用它们。我总结了几条实战经验:
- GPS信号好时:让EKF多信任GPS的位置和速度。这时候IMU的漂移可以被GPS持续修正,状态估计最准。
- GPS信号差时:EKF会自动切换到“惯性推算”模式。这时候IMU的零偏校准就至关重要了——我见过很多炸机案例,都是因为IMU零偏没校准,导致推算几分钟后位置偏了十几米。
- 磁力计受干扰时:如果你发现飞机在悬停时慢慢转圈,大概率是磁力计被干扰了。我建议在日志里查看
mag_field的强度变化——如果波动超过50mGauss,就要考虑屏蔽或更换安装位置。 - 风大时:气压计的高度会跳动。这时候可以适当降低EKF对气压计的信任,让IMU的垂直加速度计多分担一些高度估计的任务。
重要提醒:不要试图通过调参来弥补传感器的物理缺陷。如果GPS天线被遮挡,你调再多的EKF参数也没用。先解决硬件安装和校准问题,再谈调参优化。这是我在无数次炸机后换来的教训。