3、传感器原理(上):加速度计工作原理、陀螺仪工作原理、磁力计工作原理、传感器误差模型

好,咱们进入正题。这一章聊传感器原理,我分成上下两篇来讲。上篇先讲清楚三个核心传感器——加速度计、陀螺仪、磁力计——它们到底怎么工作的,以及它们身上那些“不完美”的地方。

你想想看,姿态估计算法再漂亮,如果传感器数据本身是“脏”的,那输出结果肯定也是乱的。所以,理解传感器原理,说白了就是理解你的“数据源”。

3.1 加速度计工作原理

加速度计测的是什么?很多人第一反应是“速度变化率”。嗯,理论上没错,但在姿态估计里,我们更关心它测的是“比力”。

什么叫比力?简单说,就是物体受到的惯性力减去重力。你拿手机平放在桌上,加速度计读数是 (0, 0, 9.8) m/s²。为什么?因为它在抵抗重力,向上顶。如果它自由落体,读数就是 (0, 0, 0)。

我个人习惯把加速度计想象成一个“质量块+弹簧”系统。质量块被弹簧拉着,当有加速度时,质量块会偏移,偏移量正比于加速度。MEMS加速度计用的是电容检测——质量块移动,电容变化,读出电压。

关键点:加速度计在静态或低频运动时,可以准确测量重力方向。但高频振动或快速运动时,测量值会混入运动加速度,这时候用它算姿态就容易飘。

我在项目中遇到过一个问题:无人机悬停时,电机振动直接耦合到加速度计,导致姿态角抖动。后来加了低通滤波器才稳住。嗯,这里要注意,滤波会引入延迟,需要权衡。

3.2 陀螺仪工作原理

陀螺仪测角速度,单位是 °/s 或 rad/s。MEMS陀螺仪的原理跟加速度计不太一样,它用的是“科里奥利效应”。

说白了,就是一个质量块在高速振动,如果给它一个旋转,振动方向就会偏转。这个偏转力就是科里奥利力。检测这个力的大小,就能算出角速度。

我建议你把陀螺仪想象成一个“旋转敏感器”。它不依赖重力,所以无论你怎么转,它都能测出角速度。这是它比加速度计强的地方——动态响应快。

但陀螺仪有个致命弱点:零偏漂移。你把它静止放着,它读数不是0,而是一个小常数。而且这个常数会随着温度、时间慢慢变。我曾经在一个项目中,陀螺仪开机10分钟后零偏漂了0.5°/s,如果不补偿,积分出来的角度几分钟就飞了。

避坑指南:我曾经因为没做陀螺仪零偏校准,导致一个机器人原地转圈。后来老老实实加了静态零偏采集和温度补偿,问题才解决。

3.3 磁力计工作原理

磁力计测磁场强度,单位是 μT(微特斯拉)。它用来提供航向参考,也就是帮你找到北。

原理上,磁力计用的是“霍尔效应”或“磁阻效应”。简单说,磁场变化会引起材料电阻变化,通过检测电阻变化就能算出磁场大小和方向。

但磁力计是个“娇气”的传感器。为什么?因为它太容易被干扰了。你身边任何铁磁性物质——钢筋、电机、扬声器、甚至你口袋里的钥匙——都会改变局部磁场。

我记得有一次调试四旋翼,磁力计航向总是跳变。排查了半天,发现是电机线缆没做屏蔽,电流产生的磁场干扰了磁力计。后来把线缆远离磁力计,再做了硬铁校准,才稳定下来。

警告:磁力计不能单独用于室内导航。室内钢筋结构、电器设备会严重扭曲磁场。你想想看,在钢筋水泥的楼里,磁力计读数可能指向的不是地理北极,而是最近的钢筋柱子。

3.4 传感器误差模型

好了,三个传感器讲完了。但实际用起来,它们都不是完美的。我们需要一个误差模型来描述它们的不完美。

我习惯把误差分成两类:确定性误差和随机误差。

3.4.1 确定性误差

这类误差可以校准掉。主要包括:

  • 零偏(Bias): 传感器静止时的非零输出。比如陀螺仪零偏、加速度计零偏。
  • 比例因子(Scale Factor): 实际值与测量值之间的比例偏差。比如你转90°,陀螺仪积分出来是88°。
  • 非正交性(Misalignment): 三个轴不是严格垂直的。这会导致一个轴的运动会串到另一个轴上去。
  • 交叉耦合(Cross-axis Sensitivity): 一个轴的输入会影响另一个轴的输出。

举个例子,加速度计的误差模型可以写成:

a_measured = S * (a_true + b) + n

其中 S 是比例因子矩阵(包含非正交性),b 是零偏,n 是随机噪声。

3.4.2 随机误差

这类误差是随机的,没法完全校准,只能用滤波去估计。主要包括:

  • 白噪声(White Noise): 高频随机波动,功率谱密度恒定。
  • 随机游走(Random Walk): 零偏随时间缓慢漂移,像个醉汉走路。
  • 闪烁噪声(Flicker Noise): 低频噪声,1/f 特性。

在卡尔曼滤波里,我们通常把陀螺仪的零偏建模成随机游走过程。这样滤波器就能在线估计零偏,实时补偿。

核心思想:确定性误差靠校准,随机误差靠滤波。两者缺一不可。

3.5 小结

这一章我们聊了三个传感器的原理和误差模型。你记住一句话:加速度计提供重力参考,陀螺仪提供角速度,磁力计提供航向参考。但每个传感器都有“毛病”,需要用误差模型来描述,再用卡尔曼滤波去融合。

下一章,我会讲传感器标定和数据处理。到时候咱们手把手做一次校准,看看实际数据长什么样。

嗯,今天就到这儿。有问题随时找我。