3、IMU工作原理:加速度计与陀螺仪的核心原理,MEMS传感器特性与误差模型

好,咱们今天聊聊IMU。说白了,IMU就是组合导航系统的“感觉器官”。没有它,GPS信号一丢,定位就抓瞎了。我个人习惯把IMU比作一个盲人手里的探路杖——它不知道自己在哪,但它知道自己怎么动的。

这一章,咱们把加速度计和陀螺仪的原理掰开揉碎,再看看MEMS传感器那些“小脾气”,最后聊聊怎么给这些误差建模。嗯,内容有点干,但都是硬货。

3.1 加速度计:测量“感觉”到的加速度

加速度计测的是什么?不是速度,是加速度。但这里有个坑——它测的不是运动加速度,而是“比力”。

比力 = 物体受到的合力 - 重力

你想想看,把加速度计平放在桌上,它输出的是0吗?不是。它输出的是1个g(约9.8 m/s²),方向向上。因为桌面给它一个支持力,抵消了重力。所以它测的是“除了重力以外的力产生的加速度”。

核心公式:

a_measured = a_true + g

其中g是重力加速度矢量。做惯导解算时,必须把重力分量减掉,才能得到真实的运动加速度。

我在项目中遇到过一个问题:把IMU装在无人机上,起飞前静止初始化,加速度计读数居然是(0.02, -0.01, 9.81)。我当时还以为是传感器坏了,后来才意识到——只要模长接近9.8,方向大致向下,就是正常的。千万别指望三个轴都是0。

3.2 陀螺仪:测量角速度的“旋转感知器”

陀螺仪测的是角速度,单位是rad/s或°/s。MEMS陀螺仪的原理,说白了就是科里奥利效应。

一个质量块在芯片平面上高速振动。当芯片旋转时,质量块会受到一个垂直于振动方向的力——科里奥利力。这个力的大小正比于角速度。通过检测这个力,就能反推出角速度。

嗯,这里要注意:MEMS陀螺仪测的是相对于惯性空间的角速度,不是相对于地面的。所以地球自转也会被测到——虽然很小(15°/h),但在高精度应用中不能忽略。

个人经验: 我曾经调试一个车载导航系统,发现静止时陀螺仪z轴输出有0.01°/s的偏置。一开始以为是传感器坏了,后来算了一下——北京地区纬度约40°,地球自转水平分量是15°/h × cos(40°) ≈ 11.5°/h ≈ 0.0032°/s。加上温度漂移,0.01°/s完全正常。所以,别一看到非零值就慌。

3.3 MEMS传感器特性:小身材,大脾气

MEMS传感器便宜、体积小、功耗低,但精度嘛...你懂的。咱们来看看它的几个关键特性。

特性 典型值(消费级) 典型值(工业级) 说明
加速度计量程 ±2g ~ ±16g ±6g ~ ±24g 量程越大,分辨率越低
陀螺仪量程 ±250°/s ~ ±2000°/s ±125°/s ~ ±500°/s 车载一般用±250°/s足够
零偏稳定性 10 ~ 100 mg(加速度计) 0.1 ~ 1 mg 这是最重要的指标之一
角度随机游走 0.1 ~ 1 °/√h 0.01 ~ 0.1 °/√h 决定了纯惯性导航的发散速度
带宽 100 ~ 400 Hz 200 ~ 1000 Hz 越高越好,但噪声也大

你看这个表,消费级和工业级差了一个数量级。价格也差了一个数量级。做项目时怎么选?我建议:先看你的应用场景。车载导航用工业级就够了,导弹制导?那得上光纤陀螺。

3.4 误差模型:把“坏脾气”量化

传感器都有误差。咱们不能指望它完美,但可以建模补偿。MEMS传感器的误差模型,一般包含以下几项。

3.4.1 确定性误差

这些误差是固定的,可以通过标定消除。

  • 零偏(Bias): 输入为零时的输出。比如加速度计静止时输出不是0,而是某个常数。
  • 比例因子(Scale Factor): 实际输入与输出之间的比例关系。理想是1,实际可能是1.002。
  • 交叉耦合(Cross-axis Sensitivity): X轴输入在Y轴上产生输出。一般小于2%。
  • 非线性(Non-linearity): 输出与输入不是严格的线性关系。

标定模型(简化版):

a_true = S * (a_raw - b)

其中:
a_true:真实加速度
a_raw:原始读数
S:比例因子矩阵(3x3,包含交叉耦合)
b:零偏向量(3x1)

我在项目中做过六位置标定法。把IMU放在六个不同的姿态,每个姿态采集一组数据,然后解算出12个参数(3个零偏 + 9个比例因子/交叉耦合)。效果立竿见影,零偏从几十mg降到了几个mg。

3.4.2 随机误差

这些误差是随机的,只能用统计方法描述。常用的模型是Allan方差分析。

  • 角度随机游走(Angular Random Walk, ARW): 陀螺仪白噪声积分后产生的角度误差。单位是°/√h。
  • 速率随机游走(Rate Random Walk, RRW): 陀螺仪零偏的慢变漂移。单位是°/h/√h。
  • 量化噪声(Quantization Noise): ADC量化带来的误差。
  • 零偏不稳定性(Bias Instability): 零偏在1/f噪声影响下的低频漂移。这是衡量传感器质量的核心指标。

避坑指南: 我曾经用Allan方差分析一个IMU,发现它的零偏不稳定性是0.5°/h。我心想这参数不错啊,结果实际跑起来,10分钟就漂了5°。后来才发现——Allan方差分析需要足够长的静态数据(至少2小时),我只采了20分钟,低频特性根本没暴露出来。所以,做Allan方差分析,数据长度至少是你要分析的最长时间尺度的10倍。

3.4.3 温度误差

MEMS传感器对温度极其敏感。温度变化1°C,零偏可能漂移几个mg或几个°/h。

解决办法有两个:

  1. 硬件补偿: 在IMU内部集成温度传感器,查表补偿。
  2. 软件补偿: 建立温度-零偏模型,在线估计。

我个人习惯用二阶多项式拟合:

b(T) = b0 + b1*(T - T0) + b2*(T - T0)²

其中T0是标定时的参考温度。这个模型虽然简单,但在-40°C到85°C范围内能把零偏漂移减小80%以上。

3.5 小结:IMU误差的“三座大山”

咱们总结一下。IMU的误差,说白了就是三件事:

  1. 确定性误差: 零偏、比例因子、交叉耦合。通过标定解决。
  2. 随机误差: 白噪声、随机游走、零偏不稳定性。通过滤波(比如卡尔曼滤波)抑制。
  3. 温度误差: 温度漂移。通过补偿解决。

你想想看,这三个问题不解决,IMU的数据根本没法用。尤其是做组合导航时,GPS信号一丢,全靠IMU撑着。如果IMU误差模型没建好,那纯惯性导航的误差会以三次方的速度增长——位置误差 ∝ t³。嗯,这可不是闹着玩的。

警告: 千万别以为买了高精度IMU就万事大吉。再好的传感器,温度变化、安装误差、时间同步问题都会引入额外误差。我见过有人花2万块买了个工业级IMU,结果装在车上没做标定,精度还不如一个标定过的消费级IMU。所以,标定和建模才是王道。

下一章,咱们聊聊IMU的标定方法——怎么用最少的设备,把那些“坏脾气”参数都揪出来。