传感器初探:加速度计、陀螺仪与磁力计
做姿态解算这么多年,我始终觉得一个道理特别朴素:你连传感器的脾气都摸不透,就别指望能写出好算法。今天咱们就来聊聊这三个老伙计——加速度计、陀螺仪、磁力计。它们各自有什么本事,又有什么臭毛病。
核心观点:没有完美的传感器,只有懂得扬长避短的工程师。
加速度计:它测的到底是什么?
很多人以为加速度计测的是「运动加速度」,其实不然。它测的是比力(Specific Force),也就是物体受到的合力中,除去引力后的那部分。说白了,它感受到的是「支撑力」。
举个例子:你站在地上不动,加速度计读数是 (0, 0, 1g)。为什么?因为地面在托着你,给你一个向上的支撑力。如果你自由落体,加速度计读数会变成 (0, 0, 0)。嗯,这时候它「失重」了。
我在项目中遇到过一个问题:无人机悬停时,加速度计读数一直在 0.98g 到 1.02g 之间跳。一开始我以为是算法问题,后来发现是机臂的振动传到了传感器。所以啊,加速度计对高频振动特别敏感,这是它的第一个特性。
| 特性 | 说明 |
|---|---|
| 测量原理 | 检测质量块受到的惯性力,输出比力值 |
| 静态特性 | 静止时能准确感知重力方向,用于计算俯仰和横滚 |
| 动态特性 | 对运动加速度敏感,但容易被振动干扰 |
| 主要局限 | 无法区分重力加速度和运动加速度 |
我的经验:做四轴飞行器时,我习惯在加速度计数据进入滤波器之前,先加一个低通滤波。截止频率设在 5-10Hz 左右,能有效滤掉电机振动。但别设太低,否则动态响应会变慢。
陀螺仪:角速度的忠实记录者
陀螺仪测的是角速度,单位是 °/s 或 rad/s。它基于科里奥利力原理——一个振动的质量块,当它旋转时会产生一个垂直于振动方向的力。测出这个力,就能算出角速度。
陀螺仪有个让我又爱又恨的特点:短期精度极高,但长期会漂移。你想想看,它测的是角速度,要得到角度就得积分。积分嘛,误差会一点点累积。我曾经做过一个实验:把陀螺仪放在桌上一动不动,10分钟后积分出来的角度已经偏了 5 度。
为什么会这样?因为陀螺仪有零偏(Bias),也就是静止时输出不为零。这个零偏会随时间变化,还受温度影响。我记得有一次在户外做测试,中午太阳晒着,陀螺仪的零偏比早上大了将近一倍。
避坑指南:我曾经因为没做零偏校准,导致一个机器人项目在运行 20 分钟后姿态完全乱掉。从那以后,我每次上电都会做静态零偏采集,取前 200 个样本的平均值作为零偏补偿值。
| 特性 | 说明 |
|---|---|
| 测量原理 | 科里奥利效应,检测振动质量块的横向位移 |
| 短期特性 | 动态响应快,高频噪声小,适合跟踪快速运动 |
| 长期特性 | 存在零偏漂移,积分后角度误差随时间累积 |
| 温度敏感性 | 零偏随温度变化,需要温度补偿或定期校准 |
磁力计:寻找北方的指南针
磁力计测的是磁场强度,单位是 μT(微特斯拉)。它利用的是霍尔效应或磁阻效应——磁场变化会引起材料电阻或电压的变化。通过测量三个轴上的磁场分量,就能算出地磁场方向,也就是我们说的「航向角」。
但磁力计有个大问题:太容易被干扰了。你身边随便一个金属物体、一根电线、甚至一块混凝土里的钢筋,都会让磁场读数变形。我在一个室内定位项目里吃过这个亏——明明校准好了,一靠近墙角航向角就跳了 30 度。
另外,磁力计需要做硬铁校准和软铁校准。硬铁干扰是固定的偏置,比如电路板上的永磁体;软铁干扰是方向依赖的,比如铁磁性材料会扭曲磁场线。不做校准的话,航向角误差能到十几度。
关键点:磁力计只能提供水平方向上的参考,而且必须配合加速度计做倾斜补偿。否则,当传感器倾斜时,测出来的磁场方向是错的。
| 特性 | 说明 |
|---|---|
| 测量原理 | 霍尔效应或磁阻效应,检测地磁场矢量 |
| 主要用途 | 提供航向角参考,修正陀螺仪的偏航漂移 |
| 主要局限 | 易受铁磁材料干扰,需要环境校准 |
| 校准要求 | 硬铁校准(消除固定偏置)和软铁校准(消除方向依赖误差) |
我的做法:每次换场地,我都会让设备在空中画一个「8」字,用采集到的数据做椭球拟合校准。虽然麻烦,但效果立竿见影。
三种传感器的互补关系
现在你该明白了,为什么姿态解算要用互补滤波——因为这三个传感器正好互补:
- 加速度计:低频准,高频差。静止时能给出准确的俯仰和横滚,但动态时被振动污染。
- 陀螺仪:高频准,低频差。短时间内的角速度测量很可靠,但长时间积分会漂移。
- 磁力计:提供绝对航向参考,但容易受环境干扰,而且需要倾斜补偿。
说白了,就是用陀螺仪跟踪快速运动,用加速度计和磁力计来「拉回」长期漂移。互补滤波就是干这个活的——把高频信号给陀螺仪,把低频信号给加速度计和磁力计,各取所长。
这张图把整个逻辑串起来了。你看,三个传感器各司其职,互补滤波器就是那个「和事佬」——谁在什么频段靠谱,就多信谁一点。这就是互补滤波的精髓。
一句话总结:加速度计和磁力计是「长期记忆」,告诉你现在大概在什么位置;陀螺仪是「短期记忆」,告诉你刚才发生了什么变化。互补滤波就是让两者互相纠正,得到稳定又灵敏的姿态估计。