IMU基础:加速度计、陀螺仪、磁力计的工作原理、坐标系与测量模型
在进入高度估计的实战之前,我们必须先建立对IMU(惯性测量单元)内部三大核心传感器的深刻理解。加速度计、陀螺仪和磁力计各自测量不同的物理量,拥有不同的噪声特性和误差演化规律。对于TinyML应用而言,我们不仅要理解它们“测什么”,更要理解它们“怎么测”、“误差从哪来”以及“如何用数学模型描述”。本章将系统拆解这三种传感器的工作原理、坐标系定义、测量模型,并给出在嵌入式环境下进行数据融合前的关键预处理思路。
2.1 加速度计:测量比力而非纯加速度
加速度计的核心工作原理基于牛顿第二定律和胡克定律的工程实现。MEMS加速度计内部包含一个质量块,通过弹性梁悬挂在硅片上。当芯片经历加速度时,质量块因惯性发生位移,改变电容极板间距或压阻值,通过检测电容变化或电阻变化即可反推加速度大小。但这里有一个关键概念:加速度计测量的并不是运动加速度a,而是比力f = a - g,其中g为重力加速度矢量。当传感器静止时,a=0,但输出为-g,即感受到向上的支撑力。这一特性使得加速度计在静态或准静态条件下可以充当倾角计——通过重力矢量在三个轴上的投影分量计算俯仰角和横滚角。
在高度估计应用中,加速度计的直接输出并不能用于积分求速度或位移,因为其噪声密度通常在100-300 μg/√Hz量级,积分一次会引入随时间增长的随机游走误差。更合理的用法是:利用加速度计输出的重力方向来校正姿态角,进而将气压计或GPS的高度数据与惯性导航解算结果进行融合。对于TinyML平台(如STM32F4系列搭配LSM6DSOX),我们通常配置加速度计量程为±4g或±8g,输出数据率(ODR)设为104Hz或208Hz,以匹配姿态解算的实时性要求。
2.2 陀螺仪:角速度测量与积分漂移
MEMS陀螺仪基于科里奥利效应工作。当质量块在驱动轴方向做高频振动时,若芯片绕敏感轴旋转,科里奥利力会使质量块在检测轴方向产生位移,该位移与输入角速度成正比。通过电容检测即可获得角速度值。陀螺仪输出的是载体相对于惯性空间的角速度在载体坐标系下的投影,单位通常为°/s或rad/s。在姿态解算中,我们通过四元数或欧拉角的微分方程对角速度进行积分,从而获得姿态角。
陀螺仪的主要误差源包括:零偏稳定性(Bias Instability)、角度随机游走(ARW)和温度漂移。零偏稳定性决定了陀螺仪在静止时输出角速度的波动程度,典型MEMS陀螺仪为5-20°/h;角度随机游走则描述了积分后角度误差随时间平方根增长的特性。例如,一个ARW为0.3°/√h的陀螺仪,积分10秒后角度误差约为0.3×√(10/3600)≈0.016°,看似很小,但若持续积分10分钟,误差将增长到约0.3×√(600/3600)≈0.122°。对于高度估计而言,陀螺仪的姿态误差会间接影响加速度计重力分量的去除精度,从而影响垂直加速度的积分结果。
| 误差类型 | 典型量级 | 对高度估计的影响 | 补偿策略 |
|---|---|---|---|
| 零偏稳定性 | 5-20°/h | 姿态缓慢漂移,导致重力分量去除不净 | 上电静态标定,温度补偿 |
| 角度随机游走 | 0.1-0.5°/√h | 积分后角度噪声累积 | 互补滤波高频衰减 |
| 比例因子误差 | 0.1%-1% | 角速度测量偏差,动态时姿态误差增大 | 出厂校准,六面标定 |
| 温度漂移 | 0.5-2°/h/°C | 环境温度变化引起零偏变化 | 内置温度传感器建模补偿 |
2.3 磁力计:地磁矢量与航向参考
磁力计测量的是环境磁场在载体坐标系下的三个分量。地球磁场强度约为25-65μT,方向从地理南极指向北极(磁北极),且在不同纬度有不同倾角。磁力计在IMU中的核心作用是提供绝对航向参考(Yaw角),因为加速度计只能提供俯仰和横滚,而陀螺仪的Yaw积分会持续漂移。在高度估计场景中,磁力计并非直接参与垂直方向计算,但它对于多旋翼或机器人的水平速度估计至关重要——如果航向不准,水平加速度分解到导航坐标系时会产生误差,进而影响垂直方向的加速度解算。
磁力计面临两大干扰:硬磁干扰(电路板上的永磁体或铁磁性材料产生的固定偏置)和软磁干扰(铁磁性材料对地磁场的扭曲)。硬磁干扰表现为三个轴上的常数偏置,可以通过旋转平台采集数据拟合球心进行消除;软磁干扰则表现为椭球变形,需要更复杂的椭球拟合算法。在TinyML工程中,我们通常先执行简单的“8字校准”获取硬磁偏置,再在姿态解算中降低磁力计权重,避免附近金属结构或电机电流引起的瞬态磁场扰动。
2.4 坐标系定义与旋转关系
IMU数据融合的核心是坐标系变换。我们定义两个主要坐标系:载体坐标系(b系)和导航坐标系(n系)。b系原点位于IMU中心,X轴指向载体前方,Y轴指向右侧,Z轴垂直向下(右手定则,NED系)。n系通常取为当地水平坐标系,X轴指向北,Y轴指向东,Z轴指向地心(NED)。从b系到n系的旋转可以用欧拉角(横滚φ、俯仰θ、航向ψ)或四元数q表示。四元数避免了欧拉角的万向锁问题,计算效率高,是TinyML平台的首选。
在高度估计中,我们需要将加速度计测得的比力从b系转换到n系:
f_n = R(q) * f_b
其中R(q)为旋转矩阵。转换后,n系下的垂直加速度为:
a_vertical = f_n[2] + g // 因为f = a - g,所以a = f + g
这里g取9.80665 m/s²。若姿态估计存在1°的俯仰误差,在水平飞行时会产生约0.17 m/s²的垂直加速度误差,积分1秒后产生约0.17 m/s的速度误差,再积分则产生约0.085m的高度误差。由此可见,姿态精度对高度估计的长期稳定性至关重要。
2.5 测量模型与噪声特性分析
为了在卡尔曼滤波或互补滤波中正确设置过程噪声和测量噪声,我们需要建立传感器的测量模型。以加速度计为例,其输出模型为:
a_meas = a_true + b_a + s_a * a_true + n_a
其中b_a为零偏,s_a为比例因子误差,n_a为高斯白噪声。在TinyML应用中,我们通常忽略比例因子误差(经过出厂校准后小于0.5%),将模型简化为:
a_meas = a_true + b_a + n_a
陀螺仪的模型类似:
ω_meas = ω_true + b_g + n_g
零偏b_g在每次上电后可以视为常数,但会随温度缓慢变化。因此,在系统初始化阶段,我们采集100-200个静态样本求平均,作为零偏的初始估计值。对于噪声方差,可以通过Allan方差分析确定。下表给出了典型MEMS传感器在TinyML平台上的噪声参数参考:
| 传感器 | 噪声密度 | 零偏稳定性 | 带宽 | 适用滤波策略 |
|---|---|---|---|---|
| 加速度计 | 150 μg/√Hz | ±20 mg | 400 Hz | 低通滤波,截止频率5-10Hz |
| 陀螺仪 | 0.003 °/s/√Hz | 10 °/h | 200 Hz | 高通滤波,截止频率0.01-0.1Hz |
| 磁力计 | 0.3 mGauss/√Hz | ±1% FS | 100 Hz | 滑动平均滤波,窗口10-20ms |
2.6 实战场景:静态初始化与姿态解算预处理
在TinyML高度估计项目中,我们以STM32F411搭配LSM6DSOX(加速度计+陀螺仪)和LIS3MDL(磁力计)为例。系统上电后,首先执行以下初始化流程:
- 硬件配置:设置加速度计量程±4g,陀螺仪量程±2000°/s,磁力计量程±4 Gauss,ODR统一为208Hz。
- 静态采集:保持设备静止2秒,采集400个加速度计和陀螺仪样本,计算均值作为零偏初值。
- 磁力计校准:执行8字旋转,采集至少200个点,拟合球心获得硬磁偏置。
- 初始姿态确定:利用加速度计静态输出计算初始俯仰和横滚角,利用磁力计水平分量计算初始航向角。
完成初始化后,进入主循环。每5ms读取一次传感器数据,先减去零偏,再通过四元数微分方程更新姿态。姿态更新频率与传感器ODR一致,确保积分精度。在高度估计中,我们使用互补滤波将加速度计的重力参考与陀螺仪的短时精度结合:
// 互补滤波核心伪代码
angle = 0.98 * (angle + gyro_rate * dt) + 0.02 * accel_angle;
这里的0.98和0.02是权重系数,决定了陀螺仪和加速度计的信任程度。系数选择取决于传感器噪声特性和动态场景。对于高度估计,我们更关注垂直方向的加速度,因此需要确保姿态解算的俯仰和横滚误差小于0.5°。
2.7 常见误区与总结复盘
在IMU基础教学中,学员常犯以下错误:
- 误区一:认为加速度计输出就是运动加速度。实际上静止时输出为-g,需要加上g才能得到真实加速度。
- 误区二:忽略陀螺仪零偏的温漂特性。上电校准后,随着运行时间增加,零偏可能变化,导致姿态缓慢漂移。
- 误区三:磁力计直接使用未校准数据。未校准的磁力计航向误差可达10°以上,严重影响水平速度解算。
- 误区四:所有传感器使用相同滤波参数。加速度计需要低通滤波抑制振动,陀螺仪需要高通滤波去除零偏,磁力计需要滑动平均抑制高频噪声。