2. 惯性导航基础:惯性导航原理(捷联式与平台式),牛顿力学与导航方程,IMU测量模型与误差源(零偏、噪声、尺度因子),坐标系定义(导航系、载体系、地心地固系)
各位同学,欢迎来到惯性导航的世界。说实话,这是整个视觉融合导航的基石。你想想看,如果连IMU怎么工作的、误差从哪来的都搞不清楚,后面做融合滤波基本就是盲人摸象。我个人习惯把这一章叫做“打地基”,地基不牢,楼盖得再高也得塌。
2.1 惯性导航原理:平台式 vs 捷联式
惯性导航,说白了就是“猜”你在哪。怎么猜?靠加速度和角速度积分。但积分这东西,一步错步步错。所以系统架构的选择就至关重要了。
平台式惯导,我刚开始接触时觉得它像个“老古董”。它用物理平台模拟导航坐标系,把加速度计和陀螺仪放在一个稳定平台上,平台通过伺服电机始终跟踪导航系(比如当地水平系)。好处是计算简单,因为测量值直接就是导航系下的。坏处嘛——又大又重又贵,机械结构复杂得要命。我在某次项目评审会上见过一个老专家,他当年做平台式惯导,光调平台的水平度就调了三天三夜。
捷联式惯导,这才是现代的主流。它把IMU直接“绑”在载体上,没有物理平台。那怎么得到导航系下的数据?靠计算机算!用陀螺仪测角速度,实时更新姿态矩阵,再把加速度计测的比力投影到导航系。说白了,就是用数学平台代替物理平台。
核心区别一句话:平台式用硬件扛,捷联式用软件算。捷联式便宜、可靠、体积小,但计算量大,对算法要求高。
我个人建议:做视觉融合导航,99%的情况选捷联式。别纠结。除非你做的项目对精度要求变态高,而且预算无上限,那当我没说。
2.2 牛顿力学与导航方程
惯性导航的物理基础,其实就是牛顿第二定律:F = ma。但放到地球上,事情就复杂了。因为地球在转,重力也在变。
导航方程,我习惯把它写成这样:
在导航系(n系)下:
位置微分: p_dot = v
速度微分: v_dot = C_b^n * f^b - (2ω_ie^n + ω_en^n) × v + g^n
姿态微分: C_b^n_dot = C_b^n * (ω_nb^b ×)
看着有点吓人?别怕,我拆开讲。
- C_b^n:从载体系到导航系的旋转矩阵,也就是姿态。这是核心中的核心。
- f^b:加速度计测的比力,单位是m/s²。注意,它测的是“比力”,不是纯加速度。比力 = 加速度 - 重力。
- 2ω_ie^n × v:科里奥利加速度。地球自转引起的,你往北走,它会把你往东推。我在做车载导航时,这个项如果不补偿,几分钟就能偏出去几十米。
- ω_en^n × v:运输项。载体在地球表面移动时,导航系相对地球在转。
- g^n:重力加速度。注意,不是9.8那么简单,它随纬度和高度变化。
我曾经踩过的坑:做第一次捷联惯导解算时,忘了加科里奥利项。结果跑仿真数据,位置误差像脱缰的野马一样发散。查了三天,才发现是这个小东西没加。嗯,从此以后我写导航方程都会逐项核对。
2.3 IMU测量模型与误差源
IMU不是完美的。它测出来的数据,永远带着误差。你要是不管这些误差,积分出来的轨迹能飞到天上去。
先看测量模型:
加速度计: f̃^b = f^b + b_a + s_a * f^b + n_a
陀螺仪: ω̃^b = ω^b + b_g + s_g * ω^b + n_g
其中:
- b_a, b_g:零偏(bias)。这是最头疼的误差。它是个缓慢变化的量,每次开机都不一样。我习惯叫它“漂移元凶”。
- s_a, s_g:尺度因子(scale factor)。输入和输出不成比例。比如你转10度,它告诉你转了10.1度。
- n_a, n_g:白噪声。高频随机抖动,没法消除,只能靠滤波压制。
误差源我按“杀伤力”排个序:
| 误差类型 | 对位置的影响 | 我的处理建议 |
|---|---|---|
| 零偏(bias) | 随时间平方增长,最致命 | 必须在线估计,用视觉或GPS辅助 |
| 尺度因子 | 随运动幅度线性增长 | 出厂标定,或在线估计 |
| 白噪声 | 随机游走,缓慢发散 | 滤波平滑,选高精度IMU |
| 交轴耦合 | 各轴互相串扰 | 出厂标定矩阵补偿 |
避坑指南:我曾经用过一个消费级IMU,零偏稳定性标称0.1°/s。结果实际跑起来,开机前10分钟零偏就漂了0.3°/s。所以,永远不要相信标称值。拿到IMU第一件事,自己测零偏。
2.4 坐标系定义
做导航,坐标系搞不清楚,后面全白搭。我见过太多人把坐标系搞混,结果融合滤波直接炸了。
三个核心坐标系:
- 导航系(n系):通常用NED(北-东-地)。原点在载体当前位置,x轴指北,y轴指东,z轴指向地心。做地面导航,这个最常用。
- 载体系(b系):原点在IMU中心,x轴指前,y轴指右,z轴指下(右前下)。注意,不同IMU定义可能不同,一定要看手册。
- 地心地固系(e系):原点在地心,x轴指向本初子午线与赤道交点,z轴指向北极。做全球导航、卫星定位时用。
坐标系之间的转换,核心就是旋转矩阵。从b系到n系,我习惯用欧拉角(横滚、俯仰、航向)表示:
C_b^n = R_z(ψ) * R_y(θ) * R_x(φ)
其中:
φ = 横滚角(roll)
θ = 俯仰角(pitch)
ψ = 航向角(yaw)
重要提醒:欧拉角有万向锁问题。当俯仰角接近±90°时,横滚和航向会耦合,没法区分。所以做姿态解算时,我建议用四元数或旋转矩阵,别用欧拉角做内部计算。
嗯,这一章的内容就到这里。说白了,惯性导航就是“积分+补偿”。积分是数学,补偿是工程。把误差模型搞明白,坐标系理清楚,后面做视觉融合才能游刃有余。下一章我们讲IMU的标定与预处理,到时候我会分享一些实测数据的处理经验。