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工作原理 加速度计模型 陀螺仪模型 • 比力测量原理 • 科里奥利效应 • 检测质量块位移 • 电容/压电检测 • 比力 = 加速度 - 重力 • 零偏 b_a • 随机噪声 n_a • 比例因子 s_a • 角速度测量 • 零偏稳定性 • 温度漂移 • 比例因子误差 坐标系定义与转换 ECEF → 导航系(n) → 载体系(b) → IMU系(i) 三者结合:IMU原始数据 → 误差补偿 → 坐标系转换 → 导航解算

这张图你看懂了吗?从上往下看,IMU工作原理是基础,它告诉我们传感器怎么感知物理量。加速度计和陀螺仪模型告诉我们数据里有哪些误差。最后坐标系定义与转换告诉我们怎么把数据用起来。

我个人习惯在项目开始时,先把坐标系定义写清楚。哪个轴朝前、哪个轴朝上、旋转顺序是什么,都写在文档里。这样后面做融合算法时,不会因为坐标系搞混而浪费几天时间。

小技巧:如果你不确定IMU的坐标系定义,可以做个简单实验:把IMU绕X轴旋转90°,看陀螺仪输出哪个轴变化最大。这样就能确定X轴方向。我每次拿到新IMU都会做这个测试。

好了,这一节的内容就到这里。记住一句话:IMU不告诉你位置,它只告诉你变化。你的工作就是把这些变化变成位置和姿态。