3. IMU误差源分析
IMU预积分能否在长时间、强机动场景下保持可用,很大程度上取决于我们对误差源的认识是否完整。IMU的原始测量并不是“真值加一点白噪声”这么简单:它同时受到确定性误差、随机误差和环境耦合误差的影响。若把误差建模错,预积分残差就会带有系统性偏置,优化器会把这种偏置错误地分配给位姿、速度甚至地图点,最终表现为轨迹缓慢漂移或尺度不一致。因此,本节从工程视角梳理七类主要误差源,并说明它们在预积分与标定中的处理方式。
一、核心原理:从测量模型看误差来源
理想情况下,加速度计与陀螺仪的测量可写为:
a_meas = R^T (a_world - g) + b_a + s_a * a_true + N * a_true + n_a
ω_meas = ω_true + b_g + s_g * ω_true + M * ω_true + n_g
其中 b 为零偏,s 为尺度因子,N/M 表示轴间非正交与交叉耦合,n 为白噪声。温度漂移会让 b 与 s 随温度变化,动态误差则在剧烈运动时由振动、冲击和带宽限制引入。预积分中,零偏和尺度因子通常作为待估状态或标定参数,而白噪声与随机游走通过协方差传播进入信息矩阵。
关键认识:确定性误差可标定补偿,随机误差只能通过建模与滤波抑制,动态误差则依赖时间同步、带宽匹配和机械安装质量。
二、七类误差源的工程特征
| 误差源 | 典型表现 | 是否可标定 | 预积分中的处理 |
|---|---|---|---|
| 零偏 b | 静止时输出非零,积分后速度/位置线性漂移 | 可估计,但随温度和时间变化 | 作为状态量在线估计,预积分对 b 求雅可比 |
| 尺度因子 s | 大机动时测量被放大或缩小,尺度不一致 | 可离线标定 | 标定后补偿,或加入状态向量 |
| 非正交误差 | 三轴不正交,产生轴间耦合 | 可标定 | 用 3×3 安装矩阵校正 |
| 白噪声 n | 高频随机抖动,短时影响小 | 不可标定 | 通过噪声密度传播协方差 |
| 随机游走 | 零偏缓慢随机变化,长时间漂移主因 | 不可标定 | 用随机游走噪声密度建模 |
| 温度漂移 | 温升后零偏与尺度缓慢变化 | 可建模补偿 | 温度多项式或查表补偿 |
| 动态误差 | 振动、冲击、带宽不足导致瞬时失真 | 部分可抑制 | 时间同步、低通滤波、鲁棒核 |
三、方法流程:误差标定与补偿的典型步骤
- 静态采集:将IMU静置,采集数分钟数据,估计零偏初值与白噪声密度。
- 多位置标定:利用六面法或转台,分离尺度因子、非正交误差与零偏。
- 温控实验:在温箱中缓慢升降温,记录零偏与温度关系,拟合补偿曲线。
- 动态激励:用振动台或手持剧烈运动,评估带宽与动态误差。
- 参数写入:将标定结果写入配置文件,供预积分模块读取。
# 典型标定参数配置
accel:
bias: [0.012, -0.008, 0.021] # m/s^2
scale: [1.0021, 0.9987, 1.0013]
misalignment: [[1, 0.0012, -0.0008],
[0.0009, 1, 0.0015],
[-0.0011, 0.0007, 1]]
noise_density: 0.0025 # m/s^2/√Hz
random_walk: 0.0004 # m/s^3/√Hz
gyro:
bias: [0.0003, -0.0002, 0.0005] # rad/s
noise_density: 0.0002 # rad/√Hz
random_walk: 0.00002 # rad/s/√Hz
四、案例场景:温度漂移如何毁掉一次预积分
某四足机器人从室内(25℃)走到室外(5℃),IMU零偏随温度下降发生约 0.02 m/s² 的偏移。若预积分仍使用室内标定的零偏,10 秒后速度误差约 0.2 m/s,位置误差约 1 m。视觉惯性里程计中,这种误差会被错误地解释为相机外参或尺度变化,导致地图尺度缓慢收缩。解决方式不是简单增大噪声,而是引入温度补偿模型,并在预积分中对零偏变化量做一阶雅可比更新。
工程建议:零偏不是常数,而是“慢变量”。在预积分中保留对零偏的雅可比,可以在优化时快速重线性化,避免每次零偏更新都重新积分。
五、误区与复盘
- 误区一:把随机游走当成白噪声。白噪声影响短时方差,随机游走决定长期漂移,二者噪声密度量纲不同,混用会导致协方差失真。
- 误区二:只标零偏不标尺度。大机动场景下尺度误差会被误认为加速度变化,预积分残差出现方向性偏置。
- 误区三:忽略非正交误差。三轴耦合在旋转剧烈时表现为交叉轴干扰,容易被误判为外部扰动。
- 误区四:用低通滤波解决动态误差。过度滤波会引入相位延迟,破坏预积分与视觉的时间一致性。
复盘时建议建立误差清单:每次轨迹漂移后,先检查零偏是否随温度变化,再检查尺度与安装矩阵是否被正确补偿,最后评估动态段的时间同步与带宽匹配。只有把七类误差源分别定位,预积分与标定才能真正形成闭环。