第二章:传感器模型——IMU、GPS、磁力计、气压计

各位同学,欢迎来到实战课的第二讲。

上一章我们聊了EKF的整体框架,说白了就是“预测+更新”的循环。但EKF再厉害,也得有“食材”才能做饭。这“食材”是什么?就是传感器数据。

今天咱们就掰开揉碎,把四个最常用的传感器模型讲透:IMU(加速度计+陀螺仪)、GPS、磁力计、气压计

我个人习惯,在调EKF之前,一定会先把传感器模型在脑子里过一遍。为什么?因为模型不准,后面所有参数调优都是白费功夫。你想想看,你拿一把不准的尺子去量东西,量出来的结果能信吗?


2.1 IMU模型:加速度计与陀螺仪

IMU是EKF的“心脏”。它提供的是高频测量,通常100Hz到400Hz。但它的毛病也很明显——噪声大、有零偏、还会漂移

2.1.1 加速度计模型

加速度计测量的是比力(Specific Force),也就是物体受到的合力减去重力。数学上可以写成:

a_m = a_true - g + b_a + n_a

其中:

  • a_m:测量值
  • a_true:真实加速度(不含重力)
  • g:重力向量(注意符号!)
  • b_a:加速度计零偏(随时间缓慢变化)
  • n_a:高斯白噪声

关键点:加速度计不能直接用来算位置!因为它测的是“比力”,不是“加速度”。你得先把重力减掉,才能得到真实的运动加速度。

我在项目中遇到过一件事:有个同学直接把加速度计数据积分两次算位移,结果飞了不到10秒,位置误差就飘到几十米。嗯,这就是典型的“没搞清楚模型”的坑。

2.1.2 陀螺仪模型

陀螺仪测量的是角速度。模型类似:

ω_m = ω_true + b_g + n_g
  • ω_m:测量角速度
  • ω_true:真实角速度
  • b_g:陀螺仪零偏
  • n_g:白噪声

注意:陀螺仪的零偏漂移比加速度计更严重。我曾经见过一个IMU,上电后前5分钟零偏变化了0.5度/秒。如果不做在线估计,姿态误差会像滚雪球一样越来越大。

为什么会这样?因为陀螺仪积分一次就是角度,零偏误差会随时间线性累积。你想想看,0.5度/秒的零偏,飞一分钟就是30度误差,这还得了?

2.1.3 IMU噪声参数

调EKF时,IMU的噪声协方差矩阵(Q矩阵)是最关键的参数之一。我一般这样设置:

参数 典型值(消费级IMU) 说明
加速度计噪声密度 0.01 ~ 0.05 m/s²/√Hz 越大表示加速度计越“吵”
陀螺仪噪声密度 0.001 ~ 0.01 rad/s/√Hz 影响姿态估计的平滑度
加速度计零偏随机游走 1e-6 ~ 1e-4 m/s²/√s 控制零偏变化速度
陀螺仪零偏随机游走 1e-7 ~ 1e-5 rad/s/√s 太小则零偏更新慢,太大则估计抖动

我的经验:刚开始调参时,先把噪声密度设大一点(比如0.05),让滤波器更信任预测。等基本稳定了,再慢慢减小,让测量起更多作用。别一上来就追求“最优”,容易炸机。


2.2 GPS模型

GPS是室外定位的“主力军”。但它有两个硬伤:更新频率低(通常5-10Hz)、精度受环境影响大

GPS的测量模型很简单:

p_gps = p_true + n_gps

其中 n_gps 是高斯噪声,标准差一般在1-5米(单点定位)或0.1-0.5米(RTK)。

2.2.1 GPS的“脾气”

  • 水平精度好,垂直精度差:GPS的垂直误差通常是水平误差的1.5-2倍。所以EKF里,GPS对高度的约束要弱一些。
  • 有延迟:GPS数据从卫星到飞控,通常有100-200ms的延迟。如果你不做时间对齐,EKF的更新就会“错位”。
  • 多路径效应:在城市峡谷或树荫下,GPS信号会反射,导致位置跳变。

避坑指南:我曾经在调试一架无人机时,发现GPS位置突然跳了10米,结果EKF直接跟着跳,飞机差点翻掉。后来加了“残差检测”逻辑,发现GPS异常时自动降低权重,才解决问题。

2.2.2 GPS与IMU的融合策略

GPS更新慢,IMU更新快。EKF的做法是:

  1. IMU数据来了,做“预测步”(时间更新)
  2. GPS数据来了,做“更新步”(测量更新)
  3. 两次GPS之间,全靠IMU积分撑着

说白了,GPS负责“拉回来”,IMU负责“填中间”。


2.3 磁力计模型

磁力计用来测量磁场,帮助确定航向(偏航角)。但它是四个传感器里最“娇气”的。

模型长这样:

m_m = R * m_earth + b_hard + S * m_earth + n_m
  • R:旋转矩阵(从机体到导航系)
  • m_earth:当地地磁场向量
  • b_hard:硬铁干扰(由机载铁磁材料引起)
  • S:软铁干扰矩阵
  • n_m:测量噪声

核心问题:磁力计最怕“干扰”。电机电流、大电流导线、甚至附近的金属结构,都会让测量值失真。

2.3.1 磁力计校准

我建议,每次换飞控或改变机架结构后,都做一次磁力计校准。校准方法:

  1. 把无人机在空中转几圈(绕所有轴)
  2. 记录所有方向的磁场测量值
  3. 拟合出一个椭球,算出硬铁和软铁参数

嗯,这里要注意:校准时的环境要和实际飞行环境尽量一致。你在室内校准,拿到室外飞,地磁场方向都变了,校准等于白做。

2.3.2 磁力计在EKF中的使用

磁力计通常只用来修正偏航角。因为俯仰和滚转有加速度计和陀螺仪就够了,磁力计对这两个轴的贡献很小,反而容易引入噪声。

我一般这样设置:

  • 磁力计的测量噪声设得比较大(比如10-20度),防止它把姿态带偏
  • 只在GPS信号好的时候启用磁力计更新(因为地磁场模型需要位置信息)
  • 如果发现磁力计残差突然变大,立即降低权重或直接禁用

2.4 气压计模型

气压计用来测高度。原理很简单:气压随高度增加而降低。但实际用起来,坑不少。

模型:

p_baro = p_0 * exp(-h / H_scale) + n_baro
  • p_0:海平面气压
  • h:高度
  • H_scale:标高(约8430米)
  • n_baro:噪声

2.4.1 气压计的“天敌”

气压计最怕两样东西:温度

  • :无人机飞行时,螺旋桨下洗气流会冲击气压计,导致高度读数上下跳动。我见过最夸张的,悬停时气压计高度波动超过2米。
  • 温度:气压计芯片本身对温度敏感。从室内拿到室外,温度变化10度,高度读数可能漂移1-2米。

我的做法:给气压计加海绵罩,减少气流冲击。同时在EKF里把气压计的噪声设成动态的——悬停时噪声大,平飞时噪声小。这样能有效减少高度抖动。

2.4.2 气压计与GPS高度融合

GPS高度不准,气压计受气流影响。两者融合,取长补短:

  • 气压计提供短时间内的相对高度变化(平滑但会漂)
  • GPS提供长时间内的绝对高度参考(不准但无漂移)
  • EKF把两者加权平均,得到最优高度估计

2.5 传感器模型知识体系总览

下面这张图,是我自己总结的传感器模型关系图。你看一眼,就能明白每个传感器在EKF里扮演什么角色:

传感器模型与EKF融合关系图 EKF状态估计器 预测 + 更新 IMU 加速度计+陀螺仪 100-400Hz | 高频预测 GPS 位置测量 5-10Hz | 低频更新 磁力计 航向测量 易受干扰 | 需校准 气压计 高度测量 受气流温度影响 高频预测 位置更新 航向更新 高度更新 注:箭头方向表示数据流向,EKF融合所有传感器信息进行最优状态估计

2.6 本章小结

好了,四个传感器模型讲完了。我帮你捋一下重点:

  • IMU:高频但会漂,零偏必须在线估计
  • GPS:低频但绝对准确,注意延迟和异常跳变
  • 磁力计:航向专用,校准是前提,干扰是常态
  • 气压计:高度好帮手,但怕风怕温度

记住一句话:没有完美的传感器,只有聪明的融合算法。EKF的价值,就是把每个传感器的优点用起来,缺点补上去。

下一章,我们会把这些模型装进EKF的框架里,看看它们是怎么协同工作的。到时候我会手把手带你推导公式、写代码。