第3章 传感器基础(IMU):加速度计、陀螺仪、磁力计与误差模型
做导航调参,绕不开IMU。说白了,IMU就是机器人的“内耳”——它告诉飞控或自驾仪:我现在是歪的还是正的?我在加速还是减速?我朝哪个方向在走?
我刚开始接触多旋翼时,总觉得IMU数据很“玄学”。明明飞机放在桌上不动,加速度计读数却在跳;明明没转它,陀螺仪却输出非零值。后来踩了不少坑才明白:不是传感器坏了,是我不懂它的脾气。
这一章,咱们就把IMU的三个核心传感器——加速度计、陀螺仪、磁力计——的原理、数据特性和误差模型讲透。你理解透了,后面调参才能有的放矢。
3.1 加速度计:感知“重力方向”
加速度计测量的是物体受到的比力(specific force),单位是 m/s² 或 g(1g ≈ 9.81 m/s²)。它内部有一个质量块,当物体加速或倾斜时,质量块会挤压或拉伸压电晶体或电容极板,产生电信号。
关键认知:加速度计在静止时,测到的是重力加速度矢量。也就是说,它告诉你“哪边是下”。
核心公式(简化):
a_measured = a_true + g + bias + noise
其中 g 是重力加速度矢量(约 9.81 m/s²,方向竖直向下)。
我在项目中遇到过一个问题:飞机悬停时高度漂移。排查到最后,发现是加速度计Z轴偏置没校准,导致积分出的垂直速度一直在累积。嗯,这里要注意:加速度计的偏置误差会通过二次积分变成位置误差,而且随时间发散。
调参小技巧:在静止状态下采集30秒加速度计数据,取均值作为偏置。我习惯在每次上电后做一次静态校准,尤其是温度变化大的环境。
3.2 陀螺仪:测量“角速度”
陀螺仪测量的是物体绕各轴的旋转角速度,单位是 °/s 或 rad/s。MEMS陀螺仪利用科里奥利效应——一个振动的质量块在旋转时会产生垂直于振动方向的位移,通过检测这个位移来推算角速度。
陀螺仪的数据特性与加速度计完全不同:
- 动态响应快:能捕捉到瞬间的旋转,适合做姿态控制的内环。
- 有零偏(bias):静止时输出不为零,需要校准。
- 温度敏感:零偏随温度漂移,这是很多“冷启动漂移”问题的根源。
你想想看,如果陀螺仪零偏是 0.1°/s,积分1分钟就是 6° 的姿态误差。对于需要精确悬停的无人机来说,这已经不可接受了。
避坑指南:我曾经在冬季室外试飞,飞机起飞后姿态快速漂移,差点炸机。后来发现是陀螺仪温度补偿没开,零偏从室温到零下10度漂了 0.5°/s。所以,如果你的飞控支持温度校准,一定要开启。
3.3 磁力计:寻找“北”
磁力计测量的是地球磁场矢量,单位是 μT(微特斯拉)。它本质上是一个三轴磁阻传感器,通过检测磁场方向来推算航向(yaw)。
但磁力计有个大问题:它太容易被干扰了。
- 硬铁干扰:永磁体、电机、扬声器等产生的固定偏移磁场。
- 软铁干扰:铁磁性材料(如钢架、电池)对地磁场的扭曲。
- 动态干扰:大电流变化(如电机急加速)产生的瞬态磁场。
我见过不少新手,磁力计没校准就直接飞,结果飞机在空中“画圈”——航向一直在漂。说白了,磁力计的数据如果不做椭球拟合校准,基本没法用。
校准方法:将飞机在空中做“∞”字旋转,采集各方向数据,然后拟合椭球参数。大部分开源飞控(如PX4、ArduPilot)都内置了这个流程。
3.4 IMU数据特性与误差模型
把三个传感器放在一起看,它们的误差特性可以归纳为以下几类:
| 误差类型 | 加速度计 | 陀螺仪 | 磁力计 |
|---|---|---|---|
| 零偏(Bias) | 静态时输出偏移,可校准 | 静止时非零输出,温度敏感 | 硬铁干扰,需椭球拟合 |
| 比例因子(Scale Factor) | 输出与实际值的比例偏差 | 同样存在,但通常较小 | 软铁干扰导致各轴灵敏度不同 |
| 噪声(Noise) | 白噪声 + 低频漂移 | 白噪声为主,高频段明显 | 受电磁环境干扰大 |
| 交轴耦合 | 各轴间存在微小串扰 | 同样存在 | 安装误差导致 |
这些误差在导航解算中会如何传播?我画了一张图,帮你理清逻辑:
从这张图你能看到:陀螺仪的零偏会直接导致姿态误差,而姿态误差又会让加速度计的重力分量投影错误,最终导致位置解算发散。这就是为什么IMU校准是导航调参的第一步,也是最重要的一步。
3.5 误差建模与补偿策略
在实际工程中,我们通常用以下模型来描述IMU的误差:
a_meas = S_a * (a_true + g) + b_a + n_a
ω_meas = S_g * ω_true + b_g + n_g
m_meas = S_m * (R * m_earth) + b_m + n_m
其中:
- S 是比例因子矩阵(含交轴耦合)
- b 是零偏向量
- n 是噪声
- R 是旋转矩阵(将地磁场从导航系转到机体系)
补偿策略我总结为三步:
- 出厂校准:在工厂用转台和六面体标定比例因子和交轴耦合,写入芯片。
- 上电校准:静止状态下采集数据,估计零偏。我习惯采集30秒数据取平均。
- 在线估计:在滤波器(如EKF)中把零偏作为状态变量实时估计,这是最鲁棒的做法。
重要提醒:不要以为做了出厂校准就万事大吉。温度变化、老化、冲击都会改变零偏。我见过一个案例:飞机摔过一次后,陀螺仪零偏漂了 0.3°/s,但用户没重新校准,结果第二次飞行直接翻机。
3.6 本章小结
IMU是导航系统的“感官”,但它并不完美。加速度计告诉你重力方向但怕振动,陀螺仪告诉你旋转速度但会漂移,磁力计告诉你北方但怕干扰。理解它们的误差特性,是调参的前提。
我个人习惯在每次调参前,先检查IMU的原始数据:静止时加速度计读数是否接近 (0, 0, 9.81)?陀螺仪零偏是否在 0.1°/s 以内?磁力计数据是否在椭球表面?这些检查能帮你省下大量排查时间。