第一章:IMU基础与误差来源

大家好,我是老张。在惯性导航这行摸爬滚打了十几年,今天咱们来聊聊IMU数据预处理的第一步——搞清楚你的传感器到底是怎么工作的,以及它都会犯哪些“错误”。

说实话,很多新手拿到IMU数据就直接开干,结果发现姿态解算出来飘得离谱。嗯,这其实很正常。你不了解误差来源,就没办法对症下药。我个人习惯是,拿到一个新IMU,先花半天时间把它的“脾气”摸透。

1.1 IMU工作原理:它到底在测什么?

IMU,全称惯性测量单元。说白了,就是加速度计加陀螺仪的组合体。

  • 加速度计:测量物体的比力。注意,不是重力,是比力。静止时它测的是重力加速度g,运动时测的是运动加速度和重力的合成。
  • 陀螺仪:测量物体的角速度。也就是你转得有多快。

我遇到过不少工程师,把加速度计当成“水平仪”用。其实它只能告诉你当前加速度的方向,不是绝对的水平参考。你想想看,如果IMU在自由落体,加速度计输出是0,但物体并不是水平的。

核心公式(简化版):

加速度计输出 = 真实加速度 + 重力加速度 + 误差项
陀螺仪输出 = 真实角速度 + 误差项

1.2 误差模型:IMU的“坏习惯”

每个IMU都有自己的“坏习惯”。我习惯把这些误差分成两类:确定性误差和随机误差。

确定性误差,说白了就是可以标定补偿的。随机误差,嗯,那是真随机,只能靠滤波。

1.2.1 零偏(Bias)

零偏是最常见的误差。IMU静止时,输出应该为0,但它偏不。比如陀螺仪静止时输出0.01°/s,这就是零偏。

零偏又分两种:

  • 零偏稳定性(Bias Instability):长时间内零偏的缓慢漂移。我见过最差的MEMS IMU,开机一小时零偏能漂移0.5°/s。
  • 零偏重复性(Bias Repeatability):每次开机时零偏的差异。今天开机是0.01°/s,明天开机可能是0.015°/s。

我的经验: 零偏稳定性决定了你能做多长时间的纯惯性导航。如果你需要10分钟以上的导航精度,零偏稳定性必须优于0.01°/h。我曾经在一个无人机项目里,因为没注意零偏稳定性,导致悬停5分钟后位置漂移了200米。

1.2.2 刻度因子(Scale Factor)

刻度因子,就是输入和输出之间的比例关系不准确。比如你转了100°/s,陀螺仪输出却是99.5°/s,差了0.5%。

为什么会这样?说白了,制造工艺的误差。每个IMU的刻度因子都不一样,而且还会随温度变化。

误差类型 典型值(消费级) 典型值(工业级) 典型值(战术级)
零偏稳定性 0.1 - 1 °/s 0.01 - 0.1 °/s < 0.01 °/h
刻度因子误差 1% - 5% 0.1% - 1% < 0.01%
交轴耦合 1% - 3% 0.1% - 1% < 0.01%

1.2.3 交轴耦合(Cross-Axis Sensitivity)

交轴耦合,这个比较隐蔽。理想情况下,X轴加速度计只测X方向的加速度。但实际上,Y轴和Z轴的加速度也会串扰到X轴输出上。

我曾经在一个高精度导航项目里,发现姿态解算总是有周期性误差。排查了三天,最后发现是交轴耦合导致的。当时那个IMU的交轴耦合系数是2%,在剧烈振动环境下,这个误差被放大了好几倍。

避坑指南: 交轴耦合在低端IMU中尤其严重。如果你做的是高动态应用(比如无人机、机器人),一定要做六位置标定法来补偿交轴耦合。我曾经因为偷懒没做,结果在急转弯时姿态解算直接发散。

1.3 误差模型数学表达

好了,咱们用数学语言总结一下。一个完整的IMU误差模型长这样:

加速度计输出 = S_a * (真实加速度 + 重力 + 零偏) + 交轴耦合项 + 噪声
陀螺仪输出 = S_g * (真实角速度 + 零偏) + 交轴耦合项 + 噪声

其中S_a和S_g就是刻度因子矩阵。交轴耦合项是一个3x3的矩阵,非对角线元素就是耦合系数。

你想想看,如果不做标定,这些误差项会直接进入你的姿态解算和导航计算。零偏会导致角度漂移,刻度因子会导致速度误差,交轴耦合会导致姿态耦合误差。

1.4 知识体系框架

下面这张图,是我自己总结的IMU误差知识体系。每次带新人,我都会先让他们看这张图。

IMU误差知识体系 IMU 加速度计 陀螺仪 零偏 刻度因子 交轴耦合 随机噪声 零偏稳定性 刻度因子非线性 轴间串扰 角度随机游走 静态标定 六位置法 温度补偿 滤波去噪 目标:建立精确的误差模型,实现高精度导航 标定 → 补偿 → 滤波 → 融合

1.5 小结

这一章咱们把IMU的底细摸清楚了。记住三点:

  • 零偏是最大的敌人,尤其是零偏稳定性
  • 刻度因子和交轴耦合,在高动态下会要命
  • 误差模型是标定和滤波的基础,别跳过

我个人习惯,每次拿到新IMU,先做一次完整的标定实验。把零偏、刻度因子、交轴耦合都标定出来,然后才敢用。你想想看,如果连传感器的误差都不清楚,后面的滤波和融合做得再好,也是白搭。

一句话总结: IMU误差预处理,说白了就是“知己知彼”。知道传感器会犯什么错,才能提前做好补偿。


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