3. IMU原理

在轮速与IMU组合导航系统中,IMU(惯性测量单元)负责提供高频的角速度和比力信息,是航位推算与姿态估计的核心传感器。理解IMU内部加速度计与陀螺仪的工作机理,并掌握其误差模型,是后续进行零偏补偿、标定和组合滤波的前提。本节从敏感原理出发,逐步建立从理想输出到真实输出的误差描述框架。

一、加速度计与陀螺仪的工作原理

加速度计测量的是比力,即载体受到的除重力外的非引力加速度在敏感轴上的投影。以常见的MEMS电容式加速度计为例,其核心是一个由硅微加工形成的质量块,通过弹性梁悬置于固定电极之间。当载体沿敏感轴加速时,质量块因惯性产生位移,导致差分电容发生变化,电容变化量经调制解调后正比于加速度。静止时,加速度计输出的是重力在敏感轴上的分量,因此单轴加速度计无法区分重力与运动加速度,必须结合姿态信息才能分离。

陀螺仪测量的是载体绕敏感轴的角速度。MEMS陀螺仪通常利用科里奥利效应:驱动质量块在平面内做高频振动,当载体绕垂直轴旋转时,科里奥利力使质量块在正交方向产生位移,该位移经电容检测后正比于角速度。与加速度计不同,陀螺仪不直接感受重力,但存在零偏、标度因数非线性和随机游走等误差。在组合导航中,陀螺仪积分得到姿态变化,加速度计在重力约束下修正姿态,两者互补。

IMU误差传递链:从物理敏感到导航输出 加速度计(比力) 质量块 + 弹性梁 + 差分电容 输出:a = f + g(比力) 误差:零偏、标度因数、噪声 陀螺仪(角速度) 驱动振动 + 科里奥利力检测 输出:ω(角速度) 误差:零偏、标度因数、随机游走 统一误差模型 y = (1 + s)·x + b + n s:标度因数误差 b:零偏(常值+温漂) n:随机噪声(白噪声+随机游走) 标定与补偿流程 静态零偏估计 → 六面法标度因数 → Allan方差分析噪声 → 温度补偿 补偿后输出:ω̂ = (ω_raw − b) / (1 + s) 轮速 + IMU 组合导航 姿态、速度、位置融合估计 重力约束姿态 积分得姿态变化

二、误差模型:零偏、标度因数与随机噪声

真实IMU的输出可统一表示为:

y = (1 + s) · x + b + n

其中 x 为真实物理量,y 为传感器读数,s 为标度因数误差,b 为零偏,n 为随机噪声。这一模型虽然简洁,却涵盖了工程中最主要的误差来源。

  • 零偏(Bias):当输入为零时传感器的非零输出。零偏又分为常值零偏、温度漂移零偏和逐次启动零偏。常值零偏可通过静态标定估计并补偿;温漂零偏需要建立温度-零偏曲线;逐次启动零偏每次上电不同,需在组合导航中在线估计。
  • 标度因数(Scale Factor):传感器输出与真实输入之间的比例系数偏差。理想情况下标度因数为1,实际存在非线性、不对称性和温度敏感性。标度因数误差在大角速度或大加速度场景下影响显著,例如车辆急转弯时陀螺仪输出可能被系统性放大或缩小。
  • 随机噪声:包括白噪声和随机游走。白噪声表现为高频抖动,可通过低通滤波或卡尔曼滤波抑制;随机游走表现为零偏随时间的缓慢漂移,其功率谱密度用角度随机游走(ARW)或速度随机游走(VRW)描述,是限制纯惯性导航精度的关键因素。

三、Allan方差与噪声参数辨识

Allan方差是分析IMU随机噪声的标准工具。对静态采集的长时间数据,按不同时间簇长度计算方差,再绘制双对数曲线,可以辨识出量化噪声、角度随机游走、零偏不稳定性、速率随机游走等噪声项。工程中常用以下参数描述:

噪声项 Allan曲线斜率 物理含义 典型影响
量化噪声 -1 ADC量化误差 高频抖动
角度随机游走 -1/2 白噪声积分 姿态随机漂移
零偏不稳定性 0 零偏缓慢波动 长时间航向误差
速率随机游走 +1/2 零偏随机游走 速度/位置发散

工程提示:Allan方差分析要求传感器静止且温度稳定,采集时长通常不少于2小时。对于MEMS IMU,角度随机游走常以 °/√h 为单位,零偏不稳定性以 °/h 为单位,两者共同决定组合导航中IMU权重的分配。

四、案例:轮速与IMU组合中的零偏补偿

假设某车辆在平坦路面直线行驶,轮速计提供纵向速度,IMU提供角速度和比力。若陀螺仪存在常值零偏 b_g,则航向角会随时间线性漂移,导致组合导航位置误差随行驶距离累积。处理流程如下:

  1. 车辆静止时采集陀螺仪输出,计算均值作为初始零偏估计 b_g0。
  2. 利用轮速计判断车辆是否直线行驶,在直线段内将航向角变化率与轮速差进行比对,在线修正残余零偏。
  3. 在卡尔曼滤波中,将陀螺仪零偏和加速度计零偏作为状态量,通过观测量持续估计。
  4. 对加速度计,利用重力矢量在静止或匀速段的投影,估计并补偿零偏和标度因数。
# 静态零偏估计示例(伪代码)
gyro_samples = collect_gyro_data(duration=60s, stationary=True)
bias_gyro = mean(gyro_samples)
gyro_corrected = gyro_raw - bias_gyro

# 在线零偏估计(卡尔曼滤波状态更新)
state = [attitude, velocity, position, bias_gyro, bias_accel]
state = kalman_update(state, wheel_speed, imu_data)

五、常见误区与复盘

误区一:认为零偏是一个固定常数,标定一次即可永久使用。实际上零偏随温度、时间和启动次数变化,必须结合在线估计。

误区二:忽略标度因数非线性,仅补偿零偏。在大动态场景下,标度因数误差可能比零偏影响更大。

误区三:用白噪声模型描述所有随机误差。随机游走具有时间相关性,若用白噪声近似,卡尔曼滤波会过度信任IMU,导致发散。

复盘要点:IMU误差建模的核心是区分确定性误差和随机误差。确定性误差(零偏、标度因数)通过标定和在线估计补偿;随机误差(白噪声、随机游走)通过滤波和权重分配抑制。只有建立准确的误差模型,轮速与IMU组合导航才能在隧道、城市峡谷等GNSS失效场景下保持可用的定位精度。