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要这么设计了。

EKF传感器融合逻辑图 GPS 位置(水平) IMU 姿态 + 速度 磁力计 偏航 气压计 高度 EKF核心融合引擎 状态预测 + 测量更新(卡尔曼增益) 融合输出 位置 + 速度 + 姿态 + 偏航 说明: 每个传感器都有其“主战场”:GPS主导水平位置,IMU主导姿态和速度,磁力计主导偏航,气压计主导高度。 EKF根据当前场景动态调整各传感器的权重——信号差时降低信任,噪声大时增加滤波。

3.6 各传感器的局限对比表

我把四个传感器的关键局限整理成了表格。你调参时,可以对照这张表去排查问题。

传感器 主要局限 影响场景 EKF应对策略
GPS 信号遮挡、多路径、更新率低 城市峡谷、树荫下、室内 增大位置噪声,降低信任权重
IMU 积分漂移、温度零偏、振动噪声 长时间飞行、剧烈机动、低温环境 定期校准、加速度计/陀螺仪噪声参数
磁力计 电磁干扰、硬铁/软铁干扰、环境异常 大电流飞行、金属结构附近、高压线 椭球校准、增大偏航噪声、融合GPS航向
气压计 风敏感、温度漂移、气压变化 大风天、快速升降、温度突变 增大气压计门限、配合IMU垂直加速度

3.7 实战中的融合策略

搞清楚了每个传感器的脾气,接下来就是怎么用它们。我总结了几条实战经验:

  1. GPS信号好时:让EKF多信任GPS的位置和速度。这时候IMU的漂移可以被GPS持续修正,状态估计最准。
  2. GPS信号差时:EKF会自动切换到“惯性推算”模式。这时候IMU的零偏校准就至关重要了——我见过很多炸机案例,都是因为IMU零偏没校准,导致推算几分钟后位置偏了十几米。
  3. 磁力计受干扰时:如果你发现飞机在悬停时慢慢转圈,大概率是磁力计被干扰了。我建议在日志里查看mag_field的强度变化——如果波动超过50mGauss,就要考虑屏蔽或更换安装位置。
  4. 风大时:气压计的高度会跳动。这时候可以适当降低EKF对气压计的信任,让IMU的垂直加速度计多分担一些高度估计的任务。

重要提醒:不要试图通过调参来弥补传感器的物理缺陷。如果GPS天线被遮挡,你调再多的EKF参数也没用。先解决硬件安装和校准问题,再谈调参优化。这是我在无数次炸机后换来的教训。