IMU惯性导航基础:加速度计与陀螺仪原理
做无人机定位,IMU是绕不开的核心传感器。我最早接触IMU是在一个四旋翼飞控项目上,当时觉得这东西不就是测个加速度和角速度嘛,能有多复杂?结果一上手就被各种漂移和噪声教做人了。今天咱们就把IMU的底裤扒干净,从原理到算法再到标定,一条线捋清楚。
加速度计与陀螺仪的工作原理
先说说加速度计。它测量的是比力,不是单纯的加速度。什么意思呢?就是物体受到的合力减去重力。你想想看,无人机悬停时,加速度计测到的是1g向上的力,而不是0。这个细节我当年在实验室里栽过跟头——以为静止时加速度应该是0,结果数据死活对不上。
加速度计内部结构,常见的是MEMS电容式。说白了就是有个质量块挂在弹簧上,加速度让质量块位移,改变电容值。我习惯把这种传感器想象成「弹簧秤」,只不过它称的是惯性力。
陀螺仪测量角速度,原理是科里奥利效应。MEMS陀螺仪里有个振动的质量块,当它旋转时,科里奥利力会让质量块在垂直方向产生位移。这个位移很小,但通过电容检测能读出来。嗯,这里要注意:陀螺仪测的是角速度,不是角度。要得到角度,得积分。
关键区别:加速度计测比力,陀螺仪测角速度。两者都不能直接给出位置或姿态,需要算法融合。
捷联惯导算法
捷联惯导,就是把IMU「绑」在无人机上,没有物理平台,全靠数学计算。我参与过一个物流无人机项目,用的就是捷联方案。说实话,刚开始看到那些四元数、方向余弦矩阵,头都大了。但后来发现,核心就三步:姿态更新、速度更新、位置更新。
姿态更新
姿态更新最常用的是四元数法。为什么用四元数?因为它没有欧拉角的万向锁问题,计算量也比方向余弦矩阵小。更新公式很简单:
q_new = q_old + 0.5 * dt * q_old ⊗ ω
其中ω是陀螺仪测的角速度,⊗表示四元数乘法。每次更新后要归一化,防止误差累积。我见过有人忘了归一化,结果姿态越算越偏,最后无人机直接翻了个跟头。
速度与位置更新
速度更新需要把加速度计测的比力转换到导航坐标系,再减去重力。公式如下:
v_new = v_old + dt * (C(q) * a_accel - g)
C(q)是姿态矩阵,把加速度从机体坐标系转到导航坐标系。位置更新就更直接了:
p_new = p_old + dt * v_new
看起来简单吧?但实际跑起来,你会发现积分误差像滚雪球一样越来越大。这就是为什么纯惯导只能撑几十秒,必须配合GPS或视觉做修正。
我的经验:捷联惯导的更新频率至少要200Hz以上,否则高频振动会混叠进导航解算。我习惯用400Hz,留点余量。
IMU误差模型与标定
IMU不是完美的,它有各种误差。我把它分成两类:确定性误差和随机误差。确定性误差可以通过标定消除,随机误差只能靠滤波。
确定性误差
主要包括:
- 零偏(Bias):静止时输出不为零。加速度计零偏一般在mg级别,陀螺仪在°/h级别。
- 尺度因子(Scale Factor):输入输出比例不准确。比如输入1g,输出0.98g。
- 交叉耦合(Cross-axis):一个轴的输入在其他轴上产生输出。说白了就是轴没对准。
标定这些误差,最经典的方法是六位置法。把IMU放在六个正交方向上,采集数据,然后解方程。我曾经用转台做过一次高精度标定,结果发现手工摆放的误差比传感器本身的误差还大。后来我改用3D打印的夹具,精度才上去。
| 误差类型 | 典型值(消费级MEMS) | 标定后残余 |
|---|---|---|
| 加速度计零偏 | ±50 mg | < 5 mg |
| 陀螺仪零偏 | ±10 °/s | < 0.1 °/s |
| 尺度因子误差 | ±1% | < 0.1% |
| 交叉耦合 | ±2% | < 0.2% |
随机误差
随机误差主要是角度随机游走(ARW)和速率随机游走(RRW)。这些可以用Allan方差分析。我习惯用艾伦方差图来评估IMU的噪声特性,横轴是相关时间,纵轴是方差。从图上能看出:
- 斜率-1/2的部分是角度随机游走
- 斜率+1/2的部分是速率随机游走
- 最低点是零偏稳定性
避坑指南:我曾经在标定时忽略了温度影响,结果冬天和夏天的零偏差了3倍。后来我加了一个温控模型,把温度补偿进去,效果立竿见影。记住:MEMS IMU对温度非常敏感,标定一定要在目标温度范围内做。
IMU误差模型与标定流程
下面这张图是我自己总结的标定流程,每次做新项目都按这个来:
标定完成后,误差补偿公式很简单:
a_corrected = S_a * (a_raw - b_a - T_a * a_raw)
w_corrected = S_g * (w_raw - b_g - T_g * w_raw)
其中S是尺度因子矩阵,b是零偏,T是交叉耦合矩阵。把这些参数写进固件里,每次上电先做一次初始化标定,然后实时补偿。我习惯把标定参数存在EEPROM里,换传感器时重新标定一次。
实用技巧:如果你没有转台,可以用「静态+旋转」的简易标定法。把IMU静止放几分钟,估算零偏;然后手动旋转每个轴,用最小二乘法拟合尺度因子。精度虽然不如转台,但够用。
好了,IMU的基础就这些。加速度计和陀螺仪的原理搞清楚了,捷联惯导算法能跑通了,误差模型和标定也做完了,接下来就可以把IMU数据喂给融合滤波器了。记住:IMU是定位系统的「内耳」,它告诉你身体怎么动,但不知道自己在哪。想知道在哪,得靠下一层的传感器融合。