2. 惯性导航基础
各位同学,咱们今天聊聊惯性导航的根基——IMU。说实话,我做了这么多年融合定位,发现很多问题都出在基础没打牢。你想想看,如果连传感器怎么工作的都不清楚,后面做融合算法那不是瞎蒙吗?
这一节我会把IMU的里里外外掰开揉碎了讲。嗯,咱们从最核心的三个问题入手:IMU到底怎么感知运动?加速度计和陀螺仪的数据怎么理解?坐标系怎么转来转去?
2.1 IMU工作原理:一个盒子里的物理世界
IMU,全称Inertial Measurement Unit,说白了就是一个能感知自身运动的盒子。它里面装了两个核心传感器:加速度计和陀螺仪。加速度计测的是比力,陀螺仪测的是角速度。
我记得刚入行时,有个老工程师跟我说过一句话:「IMU不直接告诉你位置,它只告诉你变化。」这句话我到现在都觉得是真理。你想想,加速度计输出的是加速度,陀螺仪输出的是角速度,都是变化率。要得到位置和姿态,你得积分。
核心概念:IMU测量的是惯性空间中的物理量,不是直接的位置或姿态。所有导航结果都是通过积分计算出来的。
为什么会这样?因为IMU的工作原理基于牛顿力学。加速度计内部有一个检测质量块,当IMU加速时,质量块会因惯性产生位移,这个位移被电容或压电效应检测出来,转换成电信号。陀螺仪呢,基于科里奥利效应——振动质量在旋转时会产生垂直于振动方向的力,测这个力就知道角速度了。
我在项目中遇到过一件事:有个同事把IMU直接贴在金属板上,结果数据噪声大得离谱。后来发现是金属板的热膨胀影响了IMU的安装应力。嗯,这里要注意,IMU对安装环境非常敏感。
2.2 加速度计模型:别被「加速度」三个字骗了
加速度计测的其实不是运动加速度,而是比力(Specific Force)。比力 = 物体受到的合力 - 重力加速度。用公式表示:
a_measured = a_true - g
其中 a_measured 是加速度计输出,a_true 是物体在惯性系中的真实加速度,g 是重力加速度向量。
你想想看,如果IMU静止放在桌面上,a_true = 0,但加速度计输出的是 -g,也就是向上1个g。这就是为什么静止时加速度计读数是9.8 m/s²左右。很多新手会问:「为什么不动还有加速度?」——因为重力一直在啊。
加速度计的数学模型一般写成:
a_meas = a_true - g + b_a + n_a + s_a * a_true
其中:
- b_a:零偏(bias),传感器固有的偏移量
- n_a:随机噪声,白噪声为主
- s_a:比例因子误差,测量值与真实值的比例偏差
个人经验:我建议你在做IMU标定时,先测零偏。把IMU静止放30秒,取平均值就是零偏。这个值每次上电都可能不一样,所以最好每次开机都重新标定。
2.3 陀螺仪模型:转得快不等于转得准
陀螺仪测的是角速度,单位通常是 rad/s 或 °/s。它的数学模型和加速度计类似:
ω_meas = ω_true + b_g + n_g + s_g * ω_true
其中 ω_meas 是测量值,ω_true 是真实角速度,b_g 是零偏,n_g 是噪声,s_g 是比例因子误差。
陀螺仪有个很讨厌的特性——零偏稳定性。什么意思?就是零偏会随着时间和温度缓慢漂移。我曾经做过一个实验,把IMU放在恒温箱里,24小时内零偏漂移了0.01 °/s。看起来很小对吧?但积分10分钟,角度误差就达到6°了。这就是为什么纯惯性导航不能长时间工作。
避坑指南:我曾经在无人机项目上吃过亏。陀螺仪零偏没校准好,起飞后无人机自己转圈。后来我养成了习惯:每次上电后先静止10秒,用这段时间的数据估算零偏。这个习惯救了我很多次。
2.4 坐标系定义与转换:一切定位的起点
坐标系是融合定位的「语言」。不同传感器用不同坐标系说话,你得把它们翻译成同一种语言。常用的坐标系有:
| 坐标系 | 符号 | 说明 |
|---|---|---|
| 地心地固系 | ECEF | 原点在地心,Z轴指向北极,X轴指向本初子午线 |
| 导航坐标系 | n系 | 通常用东北天(ENU)或北东地(NED) |
| 载体坐标系 | b系 | 固定在IMU上,X前Y右Z下(常见) |
| IMU坐标系 | i系 | 传感器自身的坐标系,通常与b系对齐 |
坐标系转换的核心是旋转矩阵。从b系到n系的旋转矩阵 R_b^n 可以用欧拉角表示:
R_b^n = R_z(ψ) * R_y(θ) * R_x(φ)
其中 φ 是横滚角,θ 是俯仰角,ψ 是航向角。注意旋转顺序,我习惯用 Z-Y-X 顺序,也就是先航向、再俯仰、最后横滚。
你想想看,如果IMU装在车上,车头朝北,车身水平,那么b系和n系是重合的。一旦车转弯,b系就相对于n系旋转了。这个旋转关系就是姿态。
重要提醒:坐标系转换时,一定要搞清楚旋转顺序和正方向定义。不同IMU厂商的定义可能不同。我建议你在代码里统一用四元数表示姿态,避免欧拉角的万向锁问题。
2.5 知识体系总览
下面这张图是我自己画的,把这一节的核心逻辑串起来了。你仔细看看,IMU工作原理是基础,加速度计和陀螺仪模型是数据来源,坐标系定义与转换是数据处理的关键。三者缺一不可。
这张图你看懂了吗?从上往下看,IMU工作原理是基础,它告诉我们传感器怎么感知物理量。加速度计和陀螺仪模型告诉我们数据里有哪些误差。最后坐标系定义与转换告诉我们怎么把数据用起来。
我个人习惯在项目开始时,先把坐标系定义写清楚。哪个轴朝前、哪个轴朝上、旋转顺序是什么,都写在文档里。这样后面做融合算法时,不会因为坐标系搞混而浪费几天时间。
小技巧:如果你不确定IMU的坐标系定义,可以做个简单实验:把IMU绕X轴旋转90°,看陀螺仪输出哪个轴变化最大。这样就能确定X轴方向。我每次拿到新IMU都会做这个测试。
好了,这一节的内容就到这里。记住一句话:IMU不告诉你位置,它只告诉你变化。你的工作就是把这些变化变成位置和姿态。