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预积分的基础。我画了一张图,帮你理清这个逻辑:

真实值 a_w, ω_t + 偏置 偏置 b b_a, b_g + 噪声 噪声 n n_a, n_g 测量值 a_m, ω_m 测量值 = 真实值 + 偏置 + 噪声 IMU测量模型结构图

从这张图可以看得很清楚:测量值不是真实值,它被偏置和噪声污染了。我们做IMU预积分,本质上就是在想办法消除偏置和噪声的影响。

1.5 噪声特性分析

IMU的噪声,我把它分成两类:

噪声类型 来源 特性 处理方法
白噪声 电子热噪声、量化噪声 高频、零均值、方差固定 低通滤波、滑动平均
随机游走 偏置随时间缓慢变化 低频、累积性 在线估计、定期校准

白噪声好理解,就是高频的随机抖动。你拿着IMU静止不动,看数据,会发现它在某个值附近来回跳。这个跳动的幅度,就是白噪声的方差。

随机游走就麻烦多了。它表现为偏置的缓慢漂移。我举个例子:你早上校准好的IMU,到下午可能偏置就变了。温度变化、器件老化都会导致这个现象。我在做长时间运行的机器人项目时,就遇到过偏置漂移导致定位精度下降的问题。

重要概念:IMU的噪声通常用"噪声密度"和"偏置稳定性"两个指标来描述。噪声密度越小,偏置稳定性越高,IMU的质量就越好。选型时一定要看这两个参数。

1.6 实际使用中的注意事项

说了这么多理论,我分享几个实际经验:

  • 上电预热:IMU刚上电时,内部温度还没稳定,偏置会漂移。我一般等3-5分钟再开始采集数据。
  • 静止初始化:在静止状态下,可以估计出初始偏置和重力方向。这个步骤不能省。
  • 温度补偿:如果工作环境温度变化大,建议做温度补偿。有些IMU芯片自带温度传感器,可以辅助校准。

小技巧:判断IMU是否静止,可以看加速度计输出的方差。如果方差小于某个阈值(比如0.01 m/s²),就认为静止了。这个方法我在多个项目中都用过,简单有效。

注意:不要直接用IMU的原始数据做积分。原始数据包含偏置和噪声,积分后误差会以时间的三次方增长。这就是为什么我们需要IMU预积分技术。

好了,这一章的内容就到这里。IMU的基础模型和噪声特性,是后面所有内容的地基。你把这个搞清楚了,后面学预积分、学融合,都会轻松很多。

下一章,我们会深入IMU预积分的核心——离散化处理。到时候我会手把手带你推导公式,还会分享我在代码实现中踩过的坑。


专注资料整理