第三章 传感器原理(下):IMU工作原理

好,咱们接着聊传感器。上一章我们把激光雷达聊透了,这一章轮到IMU了。

IMU这东西,说白了就是惯性测量单元。它里面装了两个核心器件:加速度计和陀螺仪。加速度计测什么?测你有多「晃」。陀螺仪测什么?测你转得有多「快」。两者一结合,就能知道载体在三维空间里的运动状态。

我个人习惯把IMU叫做「盲人导航仪」。为什么?因为它不需要任何外部信号,全靠内部惯性来推算位置。GPS信号丢了?没关系,IMU还能撑一会儿。但你要知道,它也有个致命缺点——误差会累积。嗯,这个我们后面细说。

3.1 加速度计工作原理

加速度计的原理其实不复杂。你想想看,一个弹簧挂着一个小球,你推它一下,弹簧就会拉伸或压缩。加速度计内部就是类似的结构——一个质量块连着弹簧,当有加速度时,质量块会偏移,通过测量偏移量就能反推出加速度。

我在项目中遇到过一种情况:把IMU放在桌面上静止,按理说加速度计应该只测到重力加速度(9.8 m/s²)。但实际读数总在9.79到9.81之间跳。这不是器件坏了,而是噪声和温度漂移在作怪。

关键点:加速度计测量的是「比力」,不是纯加速度。比力 = 物体加速度 - 重力加速度。所以静止时,它测到的是向上的1g,而不是0。

加速度计的输出模型可以写成:

a_m = a_true + b_a + n_a + s_a * a_true + ...

其中:

  • a_m:测量值
  • a_true:真实比力
  • b_a:零偏(bias)
  • n_a:白噪声
  • s_a:尺度因子误差

你看,真实值被一堆误差项污染了。这就是为什么IMU不能直接拿来用,必须先标定。

3.2 陀螺仪工作原理

陀螺仪比加速度计有意思。它测的是角速度,也就是你转得有多快。

传统的机械陀螺仪靠的是角动量守恒——一个高速旋转的转子,你转它,它会反抗。但现在的MEMS陀螺仪用的是科里奥利效应。说白了,就是一个振动的质量块,当你转动它时,它会受到一个垂直于振动方向的力。测这个力的大小,就能算出角速度。

我曾经踩过一个坑:把陀螺仪装在无人机上,起飞前没做静态初始化。结果无人机一升空就开始慢慢自旋,我还以为是电机出了问题。后来才发现,陀螺仪的零偏没补偿,积分出来的角度一直在漂。

避坑指南:陀螺仪的零偏会随时间缓慢变化,这叫「零偏稳定性」。好的IMU零偏稳定性在10°/h以内,差的可能到100°/h。选型时一定要看这个参数。

陀螺仪的测量模型和加速度计类似:

ω_m = ω_true + b_g + n_g + s_g * ω_true + ...

这里b_g是陀螺零偏,n_g是角速度白噪声。注意,陀螺的噪声通常比加速度计大,因为MEMS结构更敏感。

3.3 IMU测量模型与噪声特性

好,我们把两个传感器合起来看。一个完整的IMU测量模型长这样:

加速度计: a_m = R^T * (a_true - g) + b_a + n_a
陀螺仪:   ω_m = ω_true + b_g + n_g

其中R是姿态矩阵,g是重力向量。注意加速度计模型里有个-g,这就是为什么静止时它测到的是向上的1g。

噪声特性这块,我建议你重点关注两个东西:

  1. 白噪声(White Noise):高频随机波动,可以用方差描述。单位是 m/s²/√Hz 或 rad/s/√Hz。
  2. 随机游走(Random Walk):零偏的缓慢漂移,本质上是积分后的噪声。单位是 m/s²/√(Hz³) 或 rad/√(Hz³)。

你想想看,白噪声是高频的,可以通过低通滤波压一压。但随机游走是低频的,滤波反而会放大它。这就是为什么IMU数据不能简单滤波了事。

经验之谈:我在做VINS-Mono时,发现IMU的艾伦方差(Allan Variance)曲线特别有用。它能帮你直观地看出噪声类型和零偏稳定性。建议每个做SLAM的人都学会看艾伦方差图。

3.4 IMU坐标系

IMU有自己的坐标系,通常叫body frame(b系)。它的定义是:

  • x轴:指向IMU的右侧(通常与PCB板的长边平行)
  • y轴:指向IMU的前方
  • z轴:指向上方(右手定则)

但这里有个坑——不同厂家的IMU坐标系定义可能不一样。比如InvenSense的MPU系列,它的坐标系是x向右、y向前、z向上。但Bosch的BMI系列,z轴可能是向下的。你如果不看数据手册直接拿来用,姿态解算会直接崩掉。

我遇到过最离谱的一次:一个学生把IMU的坐标系搞反了,结果融合出来的姿态一直在180°和0°之间跳。查了两天才发现是坐标系定义问题。

重要提醒:IMU坐标系和车体坐标系通常不重合。你需要一个外参矩阵把它们对齐。这个外参矩阵一般通过标定得到,精度要求高的话,建议用Kalibr工具做。

3.5 知识体系总览

下面这张图把IMU的核心知识点串起来了。你可以看到,从物理原理到测量模型,再到坐标系,最后落到实际应用,每一步都有坑要填。

IMU知识体系结构图 加速度计 陀螺仪 测量原理 弹簧-质量块模型 测量原理 科里奥利效应 IMU测量模型 a_m = a_true + b_a + n_a + ... 噪声特性 白噪声 · 随机游走 坐标系 body frame · 外参标定

你看,从加速度计和陀螺仪出发,经过测量原理、测量模型,最后落到噪声特性和坐标系。每一步都环环相扣。我个人觉得,理解IMU的关键不在于记住公式,而在于明白「测量值 = 真实值 + 误差」这个核心思想。所有的算法,本质上都是在和误差做斗争。

一个小建议:如果你刚开始接触IMU,别急着调算法。先拿一个IMU模块,接上单片机,读一读原始数据。看看静止时的噪声有多大,转动时响应快不快。亲手摸一摸,比看一百篇论文都管用。


公众号:蓝海资料掘金营,微信deep3321