1. IMU基础与传感器模型
大家好,我是你们这门课的主讲。今天咱们来聊聊IMU——惯性测量单元。这东西在机器人、自动驾驶、无人机里太常见了。说白了,它就是给系统提供加速度和角速度的传感器。但你要是以为它就是个简单的数据采集器,那可就错了。
我刚开始做SLAM那会儿,对IMU的理解特别浅。觉得不就是读个数嘛,有什么难的?结果第一次做紧耦合融合,数据一进来,定位直接飘到天上去。嗯,从那以后我才老老实实把IMU的模型和噪声特性啃了一遍。
1.1 IMU工作原理
IMU内部主要包含两个核心器件:加速度计和陀螺仪。加速度计测量的是比力(specific force),也就是物体受到的惯性力与重力的合力。陀螺仪测量的是角速度,也就是物体绕各个轴旋转的快慢。
你可能会问:为什么加速度计测的不是纯加速度?
这个问题问得好。想象一下,你站在地面上,加速度计的输出是向上的,大小是g。但你的速度并没有变化。这是因为加速度计测量的是支撑力,而不是运动加速度。这个细节,我在做VIO初始化时吃过亏,后面会详细讲。
1.2 加速度计模型
加速度计的测量模型,我习惯写成这样:
a_m = R^T * (a_w - g_w) + b_a + n_a
其中:
- a_m:加速度计测量值(传感器坐标系)
- R:从世界坐标系到传感器坐标系的旋转矩阵
- a_w:物体在世界坐标系下的真实加速度
- g_w:世界坐标系下的重力向量
- b_a:加速度计偏置(bias)
- n_a:加速度计噪声
这里有个关键点:测量值减去重力项,才能得到真实的运动加速度。我在项目里见过有人直接把加速度计输出积分算速度,结果速度越来越大,最后定位完全崩了。说白了,就是忘了去掉重力。
1.3 陀螺仪模型
陀螺仪的模型相对简单一些:
ω_m = ω_t + b_g + n_g
其中:
- ω_m:陀螺仪测量值
- ω_t:真实角速度
- b_g:陀螺仪偏置
- n_g:陀螺仪噪声
陀螺仪的问题在于,它对角速度积分得到角度。积分嘛,误差会累积。我曾经在一个长距离的无人机飞行测试中,陀螺仪偏置没校准好,飞了5分钟,航向角偏了30度。嗯,那次差点炸机。
1.4 测量值与真实值的关系
搞清楚测量值和真实值的关系,是做IMU预积分的基础。我画了一张图,帮你理清这个逻辑:
从这张图可以看得很清楚:测量值不是真实值,它被偏置和噪声污染了。我们做IMU预积分,本质上就是在想办法消除偏置和噪声的影响。
1.5 噪声特性分析
IMU的噪声,我把它分成两类:
| 噪声类型 | 来源 | 特性 | 处理方法 |
|---|---|---|---|
| 白噪声 | 电子热噪声、量化噪声 | 高频、零均值、方差固定 | 低通滤波、滑动平均 |
| 随机游走 | 偏置随时间缓慢变化 | 低频、累积性 | 在线估计、定期校准 |
白噪声好理解,就是高频的随机抖动。你拿着IMU静止不动,看数据,会发现它在某个值附近来回跳。这个跳动的幅度,就是白噪声的方差。
随机游走就麻烦多了。它表现为偏置的缓慢漂移。我举个例子:你早上校准好的IMU,到下午可能偏置就变了。温度变化、器件老化都会导致这个现象。我在做长时间运行的机器人项目时,就遇到过偏置漂移导致定位精度下降的问题。
重要概念:IMU的噪声通常用"噪声密度"和"偏置稳定性"两个指标来描述。噪声密度越小,偏置稳定性越高,IMU的质量就越好。选型时一定要看这两个参数。
1.6 实际使用中的注意事项
说了这么多理论,我分享几个实际经验:
- 上电预热:IMU刚上电时,内部温度还没稳定,偏置会漂移。我一般等3-5分钟再开始采集数据。
- 静止初始化:在静止状态下,可以估计出初始偏置和重力方向。这个步骤不能省。
- 温度补偿:如果工作环境温度变化大,建议做温度补偿。有些IMU芯片自带温度传感器,可以辅助校准。
小技巧:判断IMU是否静止,可以看加速度计输出的方差。如果方差小于某个阈值(比如0.01 m/s²),就认为静止了。这个方法我在多个项目中都用过,简单有效。
注意:不要直接用IMU的原始数据做积分。原始数据包含偏置和噪声,积分后误差会以时间的三次方增长。这就是为什么我们需要IMU预积分技术。
好了,这一章的内容就到这里。IMU的基础模型和噪声特性,是后面所有内容的地基。你把这个搞清楚了,后面学预积分、学融合,都会轻松很多。
下一章,我们会深入IMU预积分的核心——离散化处理。到时候我会手把手带你推导公式,还会分享我在代码实现中踩过的坑。