第一章:惯性导航基础——IMU原理、加速度计与陀螺仪、比力方程与姿态更新

各位同学,欢迎来到《卡尔曼滤波在INS中的融合实战》课程。

我是你们的老朋友,一个在组合导航领域摸爬滚打了十几年的工程师。今天咱们开始第一讲,聊聊惯性导航最底层的那些事儿。说白了,就是搞清楚我们手里的IMU(惯性测量单元)到底是个什么玩意儿,它怎么感知运动,我们又怎么用它来算姿态。

嗯,这部分内容虽然基础,但非常重要。我见过不少新手,一上来就调卡尔曼滤波参数,结果IMU的原始数据都没搞明白,最后定位飘到天上去都不知道为什么。所以,咱们把地基打牢。

1.1 IMU原理:它到底在测什么?

IMU,全称Inertial Measurement Unit,中文叫惯性测量单元。它就像一个黑盒子,里面装着两个核心传感器:加速度计和陀螺仪。

你想想看,我们人类怎么感知运动?靠眼睛看,靠耳朵里的前庭系统感受加速度和旋转。IMU就是模仿这个功能。它不依赖任何外部信号,完全靠自己内部感知,这就是“惯性”二字的由来。

我个人习惯把IMU比作一个“盲人”。它看不见GPS卫星,也看不见路标,但它能感受到自己被推了一下(加速度),或者被转了一下(角速度)。然后,它根据这些感受,推算出自己走了多远、转了多少角度。

核心要点: IMU输出的是原始物理量——加速度和角速度,不是位置和姿态。位置和姿态是后续积分算出来的。

1.2 加速度计:感受“比力”的传感器

加速度计,顾名思义,是测加速度的。但这里有个坑,我刚开始学的时候也栽过跟头。

加速度计测的并不是我们通常理解的“运动加速度”,而是“比力”(Specific Force)。比力是什么?是物体受到的除了重力以外的合力,除以质量。

公式很简单:f = a - g,其中f是比力,a是绝对加速度,g是重力加速度。

举个例子:你把加速度计平放在桌子上,它读数是多少?是0吗?不是!它读数是g,方向向上。因为它在抵抗重力,支撑力给了它一个向上的比力。如果它自由落体,读数反而是0,因为它和重力一起往下掉,没有支撑力了。

避坑指南: 我曾经在调试一个无人机时,发现悬停时加速度计Z轴读数不是9.8,而是9.6。排查了半天,发现是传感器安装有微小倾斜,导致重力分量被X、Y轴分担了。所以,加速度计标定和安装角度,是第一个要检查的。

在实际项目中,加速度计的输出模型可以写成:

f_meas = f_true + b_a + s_a * f_true + n_a

其中:

  • f_meas:测量值
  • f_true:真实比力
  • b_a:零偏(Bias),一个缓慢变化的误差
  • s_a:比例因子误差
  • n_a:随机噪声

嗯,这里要注意,零偏是卡尔曼滤波里要估计的关键状态量之一。

1.3 陀螺仪:测量角速度的“旋转感知器”

陀螺仪测的是角速度,单位通常是度/秒(°/s)或弧度/秒(rad/s)。

早期的陀螺仪是机械式的,靠高速旋转的转子来保持方向。现在的MEMS陀螺仪,用的是科里奥利效应。简单说,就是一个质量块在振动,当它被旋转时,会受到一个垂直于振动方向的力,测出这个力就能算出角速度。

陀螺仪的输出模型和加速度计类似:

ω_meas = ω_true + b_g + s_g * ω_true + n_g

这里b_g是陀螺零偏,是卡尔曼滤波里另一个要估计的关键状态。

警告: 陀螺仪的零偏会随时间缓慢变化,这叫“零偏稳定性”。一个低成本的MEMS陀螺,零偏稳定性可能在10°/h左右。这意味着,如果你只用陀螺仪积分算姿态,一分钟可能就漂移好几度。所以,必须用加速度计和磁力计来修正,或者用卡尔曼滤波融合。

1.4 比力方程:连接IMU和导航的桥梁

比力方程,是惯性导航里最核心的公式之一。它描述了载体加速度、比力和重力之间的关系。

在导航坐标系(比如北东地坐标系)下,比力方程长这样:

v̇^n = C_b^n * f^b - (2ω_ie^n + ω_en^n) × v^n + g^n

别被这个公式吓到,咱们拆开看:

  • v̇^n:导航系下的速度变化率(加速度)
  • C_b^n:姿态矩阵,把载体系下的比力转换到导航系
  • f^b:载体系下的比力(加速度计输出)
  • 2ω_ie^n × v^n:地球自转引起的哥氏加速度
  • ω_en^n × v^n:载体在地球表面运动引起的向心加速度
  • g^n:重力加速度

说白了,这个公式告诉我们:你测到的比力,一部分用来克服重力,一部分用来产生运动加速度,还有一部分被地球自转和运动本身“吃掉”了。

我记得在做一个车载导航项目时,车速到了120km/h,哥氏加速度项已经不能忽略了。如果不补偿,位置误差会以每小时几百米的速度累积。所以,高精度导航里,这些项一个都不能省。

1.5 姿态更新:从角速度到姿态矩阵

有了陀螺仪的角速度,我们怎么更新姿态?常用的方法有三种:欧拉角法、方向余弦矩阵法、四元数法。

我个人最推荐四元数法,因为它没有万向节死锁,计算量也小。姿态更新公式如下:

q̇ = 0.5 * q ⊗ ω

其中q是四元数,ω是角速度向量,表示四元数乘法。

离散化后,我们通常用一阶龙格-库塔法来更新:

q_{k+1} = q_k + Δt * q̇_k

或者用更精确的毕卡算法(Bortz算法),考虑圆锥运动补偿。嗯,这里要注意,在高动态环境下(比如无人机剧烈震动),圆锥误差会很大,必须用高阶补偿算法。

实战经验: 我曾经在一个旋翼无人机项目里,发现姿态发散得厉害。排查后发现,陀螺仪采样率只有100Hz,而电机震动频率是200Hz。这导致严重的频率混叠,角速度测量值全是噪声。后来把采样率提高到400Hz,并加了低通滤波,问题才解决。所以,采样率和滤波截止频率的匹配,是工程里的关键。

1.6 本章知识体系总览

为了让大家更直观地理解本章的知识结构,我画了一张图:

第一章:惯性导航基础 - 知识体系 IMU 惯性测量单元 加速度计 (比力 f^b) 陀螺仪 (角速度 ω^b) 比力方程 v̇^n = C_b^n·f^b - (2ω_ie+ω_en)×v^n + g^n 姿态更新 (四元数法) q̇ = 0.5 * q ⊗ ω 导航解算 (位置、速度) 姿态矩阵 C_b^n 最终输出:位置、速度、姿态 误差模型 b_a, s_a, n_a 误差模型 b_g, s_g, n_g

这张图把本章的核心逻辑串起来了:IMU输出原始比力和角速度,经过误差补偿后,通过比力方程和姿态更新算法,最终解算出位置、速度和姿态。而卡尔曼滤波,就是在这个链条上,用外部观测(比如GPS)来修正IMU的累积误差。

好了,第一章的内容就到这里。记住,理解IMU的原理和误差特性,是做好组合导航的第一步。下一章,我们会深入讨论姿态的表示方法——欧拉角、四元数和方向余弦矩阵,以及它们之间的转换关系。


公众号:蓝海资料掘金营,微信deep3321