3. IMU模型与误差分析
做视觉惯性导航,IMU的标定是绕不开的一关。说实话,我最早接触IMU时,觉得这东西不就是个加速度计加陀螺仪嘛,数据读出来直接用不就完了?结果第一次做融合定位,跑出来的轨迹直接飞到了天上……后来才明白,IMU的误差模型如果不搞清楚,后面所有工作都是白搭。
这一节,咱们就掰开揉碎,把IMU的模型和误差分析讲透。
3.1 IMU工作原理
IMU,全称Inertial Measurement Unit,惯性测量单元。它内部通常包含三轴加速度计和三轴陀螺仪。加速度计测的是比力,也就是物体受到的惯性力与重力之和;陀螺仪测的是角速度。
你可能会问:为什么加速度计测的不是纯加速度?嗯,这里有个关键点——加速度计里的检测质量块,在重力场中也会感受到力。所以静止时,加速度计读数是重力加速度g,而不是0。这个特性在做初始化时特别重要。
我个人的习惯是,拿到一个新IMU,先把它平放静置,看加速度计Z轴读数是不是接近9.8 m/s²。如果是,说明基本工作正常。如果偏差太大,那就要小心了。
3.2 加速度计模型
加速度计的测量模型,可以写成这样:
a_m = R * (a_true - g) + b_a + n_a
其中:
a_m:测量值R:旋转矩阵(从载体坐标系到世界坐标系)a_true:真实加速度g:重力加速度b_a:加速度计零偏n_a:高斯白噪声
说白了,测量值 = 真实运动 + 重力 + 误差。这里最容易忽略的是重力项。我在项目中遇到过有人直接把加速度计积分求速度,结果速度越来越大,就是因为没扣除重力。
关键点:加速度计不能直接积分得到速度,必须先扣除重力分量。
3.3 陀螺仪模型
陀螺仪的模型相对简单一些:
ω_m = ω_true + b_g + n_g
其中:
ω_m:测量角速度ω_true:真实角速度b_g:陀螺仪零偏n_g:高斯白噪声
陀螺仪最怕的是零偏。你想想看,如果零偏是0.01 rad/s,积分10秒,角度误差就达到了0.1 rad,约5.7度。这在视觉SLAM里,足以让地图点投影到完全错误的位置。
我的经验:选IMU时,陀螺仪的零偏稳定性比加速度计更重要。因为角度误差会通过旋转矩阵传播到位置估计中,影响更大。
3.4 Allan方差分析
Allan方差是分析IMU噪声特性的标准工具。它通过计算不同时间尺度上的方差,来分离出各种噪声源。
具体做法是:采集一段长时间的静态数据(通常1-2小时),然后计算不同积分时间τ下的Allan方差。结果画在双对数坐标下,会呈现出一条曲线,不同斜率对应不同噪声类型。
| 斜率 | 噪声类型 | 物理含义 |
|---|---|---|
| -1/2 | 角度随机游走(ARW) | 白噪声积分后的结果 |
| 0 | 零偏不稳定性 | 零偏随时间缓慢漂移 |
| +1/2 | 速率随机游走 | 零偏的随机变化 |
| +1 | 量化噪声 | AD转换带来的误差 |
我曾经用Allan方差分析过一个国产IMU,发现它的零偏不稳定性拐点出现在τ=100秒左右。这意味着,如果你做100秒以内的积分,零偏基本稳定;超过100秒,零偏就开始明显漂移了。这个信息对设计VINS系统的初始化策略很有帮助。
注意:Allan方差分析需要足够长的静态数据。少于30分钟的数据,分析结果不可靠。我建议至少采集1小时。
3.5 随机游走与零偏不稳定性
这两个概念经常被混淆。我简单解释一下:
- 角度随机游走:白噪声积分后产生的角度误差。它随时间以√t的速度增长。
- 速率随机游走:零偏的随机变化。它随时间以t^(3/2)的速度增长。
- 零偏不稳定性:零偏在长时间尺度上的漂移幅度。它决定了IMU的长期精度。
在VINS系统中,我们通常把零偏建模为随机游走过程:
ḃ = n_b
其中n_b是高斯白噪声。这个模型虽然简单,但在实际工程中效果不错。我习惯在状态向量里加入零偏项,并在滤波过程中实时估计它。
避坑指南:我曾经在某个项目中,把零偏初始值设成了0,结果滤波器收敛很慢,前几十秒的轨迹都是歪的。后来改成先静态初始化,用前100帧数据估算零偏初值,效果好了很多。
3.6 知识体系总览
下面这张图,把IMU模型与误差分析的核心逻辑串起来了:
从这张图可以看得很清楚:IMU的误差分析,最终要落到标定参数上,然后喂给VINS系统。每一步都有坑,但每一步也都有对应的分析方法。
实用建议:做IMU标定时,我推荐先用Allan方差分析出噪声特性,再用六面法标定尺度因子和交轴误差。零偏可以在线估计,但初值一定要给准。
公众号:蓝海资料掘金营,微信deep3321