IMU 综述
什么是 IMU
IMU(Inertial Measurement Unit,惯性测量单元)是一种测量物体加速度和角速度的传感器模块。它是机器人导航、姿态估计和运动控制的核心传感器之一,几乎存在于所有移动机器人平台中。
传感器组成
加速度计(Accelerometer)
原理:基于 MEMS 弹簧-质量块系统。当传感器加速时,质量块由于惯性产生相对位移,通过电容变化检测位移量。
其中:
- \(k\) 为弹簧刚度
- \(\Delta x\) 为质量块位移
- \(m\) 为质量块质量
测量内容:比力(Specific Force),即重力 + 运动加速度:
重力的影响
加速度计在静止时测量到的是重力加速度 \(g \approx 9.81 \, \text{m/s}^2\)。在使用加速度计进行导航时,必须从测量值中减去重力分量,这需要精确知道传感器的姿态。
陀螺仪(Gyroscope)
原理:基于科里奥利效应(Coriolis Effect)。一个振动的质量块在旋转参考系中会受到科里奥利力:
其中:
- \(m\) 为振动质量
- \(\boldsymbol{\omega}\) 为角速度
- \(\mathbf{v}\) 为振动速度
MEMS 陀螺仪让质量块在一个方向上持续振动,当存在旋转时,科里奥利力会在垂直方向产生位移,通过电容检测得到角速度。
测量内容:三轴角速度 \((\omega_x, \omega_y, \omega_z)\),单位 °/s 或 rad/s。
磁力计(Magnetometer)
原理:利用霍尔效应或磁阻效应测量地球磁场方向。
测量内容:三轴磁场强度,可用于计算航向角(Yaw)。
局限性:
- 受铁磁材料干扰(硬铁/软铁误差)
- 室内环境磁场不均匀
- 需要校准(椭球拟合)
IMU 配置分类
| 类型 | 传感器组合 | 可测量 | 代表产品 |
|---|---|---|---|
| 6 轴 | 加速度计 + 陀螺仪 | 加速度、角速度 | MPU6050、BMI088 |
| 9 轴 | 加速度计 + 陀螺仪 + 磁力计 | 加速度、角速度、航向 | BNO055、MPU9250 |
| 10 轴 | 9 轴 + 气压计 | 以上 + 高度估计 | BMP388 组合 |
IMU 噪声模型
IMU 的精度受多种噪声源影响,理解噪声模型对于传感器融合至关重要。
主要噪声类型
graph TD
A[IMU 噪声源] --> B[确定性误差]
A --> C[随机误差]
B --> B1[偏置 Bias<br/>常量偏移]
B --> B2[标度因子误差<br/>Scale Factor]
B --> B3[轴间耦合<br/>Cross-axis]
C --> C1[角度随机游走 ARW<br/>白噪声]
C --> C2[偏置不稳定性<br/>Bias Instability]
C --> C3[速率随机游走 RRW<br/>低频漂移]
陀螺仪噪声模型
连续时间模型:
其中:
- \(\tilde{\omega}(t)\) 为测量值
- \(\omega(t)\) 为真实角速度
- \(b_g(t)\) 为随时间缓慢漂移的偏置
- \(n_g(t)\) 为高斯白噪声,\(n_g \sim \mathcal{N}(0, \sigma_g^2)\)
偏置建模为随机游走:
加速度计噪声模型
结构类似陀螺仪,但加速度积分两次得到位置,误差累积更快:
惯性导航的漂移问题
纯惯性导航(仅用 IMU)的位置误差随时间平方增长。消费级 MEMS IMU 在几秒内就会产生米级漂移,因此必须与其他传感器(GPS、LiDAR、视觉)融合使用。
关键噪声参数
| 参数 | 符号 | 单位(陀螺) | 单位(加速度计) | 含义 |
|---|---|---|---|---|
| 角度/速度随机游走 | ARW / VRW | °/√h | m/s/√h | 白噪声强度 |
| 偏置不稳定性 | BI | °/h | μg | 偏置的最小可检测变化 |
| 偏置重复性 | Turn-on bias | °/h | mg | 每次上电的偏置变化 |
| 标度因子误差 | SF error | ppm | ppm | 测量值的比例误差 |
Allan 方差分析
Allan 方差是表征 IMU 噪声特性的标准方法,通过对不同平均时间 \(\tau\) 计算方差来识别各噪声分量。
其中 \(\bar{y}_k\) 为第 \(k\) 个长度为 \(\tau\) 的区间的平均值。
Allan 方差曲线解读
在 \(\log \sigma\) vs \(\log \tau\) 图上,不同噪声类型对应不同斜率:
| 噪声类型 | 斜率 | 特征 |
|---|---|---|
| 量化噪声 | -1 | 短 \(\tau\) 时出现 |
| 角度随机游走(ARW) | -1/2 | 白噪声,在 \(\tau = 1s\) 读数 |
| 偏置不稳定性(BI) | 0 | 曲线最低点 |
| 速率随机游走(RRW) | +1/2 | 长 \(\tau\) 时出现 |
| 速率斜坡 | +1 | 温度漂移等确定性趋势 |
import numpy as np
import allantools
# 从 IMU 静态数据计算 Allan 方差
# data: 陀螺仪某轴的静态采样数据
# rate: 采样率 (Hz)
(taus, adevs, errors, ns) = allantools.oadev(
data, rate=rate, data_type="freq"
)
# ARW: tau=1 时的 Allan deviation
# BI: Allan deviation 最小值
传感器融合流水线
graph LR
A[加速度计] --> D[姿态估计]
B[陀螺仪] --> D
C[磁力计] --> D
D --> E[互补滤波器<br/>或 EKF]
E --> F[Roll, Pitch, Yaw]
F --> G[与外部传感器融合]
G --> G1[GPS → 位置]
G --> G2[LiDAR → SLAM]
G --> G3[相机 → VIO]
G --> G4[轮式里程计 → 速度]
姿态表示
| 表示方法 | 参数数 | 优点 | 缺点 |
|---|---|---|---|
| 欧拉角 | 3 | 直观 | 万向锁(Gimbal Lock) |
| 旋转矩阵 | 9 | 无奇异性 | 参数冗余 |
| 四元数 | 4 | 无奇异性、计算高效 | 不够直观 |
| 旋转向量/轴角 | 3 | 最小参数化 | 0° 附近奇异 |
四元数更新:
IMU 等级分类
| 等级 | 陀螺偏置稳定性 | 代表产品 | 应用场景 | 价格 |
|---|---|---|---|---|
| 消费级 | >10 °/h | MPU6050, BMI160 | 手机、遥控器 | $1–5 |
| 工业级 | 1–10 °/h | BMI088, ADIS16465 | 无人机、机器人 | $10–100 |
| 战术级 | 0.1–1 °/h | HG1120, STIM300 | 导弹、高精度导航 | $1K–10K |
| 导航级 | <0.01 °/h | HG9900 | 惯性导航系统 | $50K+ |
| 战略级 | <0.001 °/h | 环形激光陀螺 | 潜艇、洲际导弹 | $100K+ |
参考资料
- 《Quaternion kinematics for the error-state Kalman filter》 - Joan Sola
- 《Strapdown Inertial Navigation Technology》 - Titterton & Weston
- Bosch BMI088/BNO055 数据手册
- InvenSense MPU6050 数据手册
- Allan Variance 分析教程:IEEE Std 952-1997