2. 惯性测量单元(IMU)误差模型

各位同学,咱们今天聊聊IMU的误差模型。说实话,我刚入行那会儿,总觉得IMU数据挺准的,毕竟厂家给的数据手册上写得漂漂亮亮。直到有一次做车载导航,车子停在原地,IMU输出的速度却在慢慢飘——嗯,从那以后我就明白了,搞导航,不懂误差模型,那就是在裸奔。

IMU由陀螺仪和加速度计组成。它们各自的误差,说白了就是测量值和真实值之间的偏差。咱们得把这些偏差拆开来看,一个一个建模,才能在后处理中补偿掉。

核心思想:误差模型不是用来吓人的,是用来“算账”的。你知道了误差长什么样,就能在算法里把它扣掉。

2.1 陀螺仪误差模型

陀螺仪测的是角速度。但实际输出里,混进了好几种“脏东西”。我个人习惯把它们分成五类:常值漂移、角度随机游走、速率斜坡、标度因数误差、安装误差。

2.1.1 常值漂移 (Bias)

这个最好理解。陀螺仪静止时,输出应该为零。但实际不是,它有个固定的偏置。比如你放那儿不动,它告诉你每秒转了0.01度——这就是常值漂移。

数学表达:

ω_measured = ω_true + ε_bias + noise

我在项目中遇到过,有些MEMS陀螺的常值漂移能到每秒几度。你想想看,如果不管它,积分出来的姿态几分钟就飞了。

避坑指南:常值漂移可以通过静态标定来估计。我曾经在实验室里把IMU放平,采集10分钟数据取平均,就能得到一个比较稳的bias估计值。

2.1.2 角度随机游走 (Angle Random Walk, ARW)

这个稍微绕一点。陀螺输出的噪声是白噪声,但积分之后,它就变成了随机游走。说白了,就是噪声在角度域里“散步”,越走越远。

为什么会这样?因为积分是个累加过程,白噪声的方差会随时间线性增长。角度误差的标准差跟√t成正比。

σ_θ(t) = ARW × √t

ARW的单位通常是 °/√h。数值越小,说明陀螺越安静。我记得有一次做无人机航测,用的工业级IMU,ARW大概0.01°/√h,飞半小时角度漂移还能接受。

2.1.3 速率斜坡 (Rate Ramp)

这个误差比较隐蔽。它指的是陀螺的常值漂移随时间缓慢变化,像个斜坡一样往上爬或往下掉。原因通常是温度变化或者器件老化。

模型:

ε_bias(t) = ε_0 + r × t

这里的r就是速率斜坡系数。我建议大家在长时间导航时,一定要考虑这个项。否则你会发现,一开始标定好的bias,过半小时就不准了。

2.1.4 标度因数误差 (Scale Factor Error)

陀螺输出的角速度值和真实值之间,存在一个比例偏差。比如你转了100度/秒,它输出98度/秒,这就是标度因数误差。

模型:

ω_measured = (1 + s) × ω_true + ...

s就是标度因数误差,通常用ppm(百万分之一)表示。高精度光纤陀螺的标度因数误差能做到10ppm以内,但MEMS的就差一些,可能到几千ppm。

注意:标度因数误差在大角速度下影响特别大。我做过一个高动态飞行试验,转弯时角速度很大,标度因数误差直接导致姿态解算发散。后来加了在线标定才稳住。

2.1.5 安装误差 (Misalignment Error)

IMU的三个轴应该互相垂直,但实际装配时总有偏差。比如X轴和Y轴不是严格90度,差了0.1度。这个误差在数学上表现为一个耦合矩阵。

模型:

ω_measured = M × ω_true + ...

其中M是一个3×3矩阵,对角线接近1,非对角线是小量。我习惯用三个角度(α, β, γ)来描述轴间偏差。

误差类型 典型值(MEMS) 典型值(光纤陀螺)
常值漂移 0.1 ~ 10 °/s 0.001 ~ 0.1 °/h
角度随机游走 0.1 ~ 1 °/√h 0.001 ~ 0.01 °/√h
标度因数误差 1000 ~ 10000 ppm 1 ~ 100 ppm
安装误差 0.1 ~ 1 ° 0.001 ~ 0.01 °

2.2 加速度计误差模型

加速度计和陀螺仪类似,也有自己的“毛病”。不过加速度计对重力敏感,标定起来更方便一些。咱们重点讲三个:零偏、标度因数误差、安装误差。

2.2.1 零偏 (Bias)

加速度计静止时,理论上只感受重力。但实际输出里,除了重力分量,还有一个固定的偏置。这就是零偏。

模型:

a_measured = a_true + b_a + noise

零偏的单位是m/s²或mg(1g = 9.8 m/s²)。MEMS加速度计的零偏通常在10~100mg之间。你想想看,100mg的零偏,积分10秒就产生0.5m/s的速度误差,再积分就是米级的位置误差。

经验之谈:加速度计零偏可以通过六位置法标定。把IMU的六个面分别朝上,采集数据,就能解算出三个轴的零偏。我每次做标定都会重复三次取平均,这样更稳。

2.2.2 标度因数误差 (Scale Factor Error)

和陀螺仪一样,加速度计的输出也存在比例偏差。比如真实加速度是10m/s²,它输出9.8m/s²,差了2%。

模型:

a_measured = (1 + s_a) × a_true + ...

标度因数误差在低精度MEMS里可能到1%~5%,高精度伺服加速度计能做到0.01%以下。我建议大家在选型时,先看看自己的应用场景。做手机导航,5%的误差也能忍;做导弹制导,0.01%都嫌多。

2.2.3 安装误差 (Misalignment Error)

加速度计的三个敏感轴也不一定完全正交。这个误差和陀螺的安装误差类似,可以用一个3×3矩阵来描述。

完整模型:

a_measured = M_a × (I + S_a) × a_true + b_a + noise

其中M_a是安装误差矩阵,S_a是标度因数误差对角阵,b_a是零偏。这三个参数合在一起,就是加速度计误差模型的全部家当。

总结一下:IMU误差模型就是给测量值“卸妆”。陀螺仪有5个参数要操心,加速度计有3个。搞清楚了这些,你就能在组合导航里把它们估计出来,然后补偿掉。

2.3 知识体系结构图

下面这张图,是我自己画的IMU误差模型结构。你可以把它当成一张“地图”,学完这章后,闭着眼睛也能画出每个误差项的位置和关系。

IMU误差模型知识结构 陀螺仪误差模型 常值漂移 (Bias) 角度随机游走 (ARW) 速率斜坡 (Rate Ramp) 标度因数误差 (Scale Factor) 安装误差 (Misalignment) 加速度计误差模型 零偏 (Bias) 标度因数误差 (Scale Factor) 安装误差 (Misalignment) 共同点 补偿方法:标定 + 在线估计 + 温度补偿

这张图把陀螺仪和加速度计的误差项分成了两个模块。左边蓝色是陀螺仪,右边橙色是加速度计。你注意看,标度因数误差和安装误差是两者共有的,而陀螺仪多了角度随机游走和速率斜坡——这是因为角速度积分后对噪声更敏感。

学习建议:别死记硬背这些误差项。你只要记住一个原则——任何测量都有偏差,偏差可以建模,模型可以补偿。剩下的,就是数学活儿了。


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