4. 捷联惯导系统(SINS)基本原理与误差方程

捷联惯导,说白了就是把惯性测量单元(IMU)直接“绑”在飞行器上。跟平台式惯导不一样,它没有物理的稳定平台。我刚开始接触这个的时候,总觉得少了那个平台,精度肯定不行。后来才发现,这恰恰是它的精髓——用数学算法代替了机械结构。

4.1 捷联惯导的核心思想

你想想看,传统的平台惯导,陀螺和加速度计是装在一个物理平台上的。这个平台通过伺服电机,始终跟踪着导航坐标系。捷联惯导呢?它把IMU直接固定在机体上。陀螺测的是机体的角速度,加速度计测的是机体的比力。

那怎么得到导航信息?全靠计算机算。用陀螺测的角速度去更新姿态矩阵,再用这个矩阵把加速度计的比力投影到导航坐标系,最后积分得到速度和位置。

核心公式(姿态更新):

C_b^n(t + Δt) = C_b^n(t) · exp(∫ ω_nb^b dt)

其中 C_b^n 是姿态矩阵,ω_nb^b 是机体相对导航系的角速度在机体系下的投影。

嗯,这里要注意。实际工程中,我们不会直接算矩阵指数。我习惯用四元数来更新姿态,计算量小,还避免了万向节锁死的问题。

4.2 姿态更新算法

姿态更新是捷联惯导最核心的一步。陀螺输出的是角增量,我们需要把它转换成姿态变化。

常用的方法有:

  • 欧拉角法:直观,但有奇点。俯仰角±90°时,航向角就解不出来了。我做过一个高机动飞行器的项目,用欧拉角直接炸了。
  • 方向余弦矩阵法:无奇点,但9个参数,计算量大。早期计算机性能不够时,这是个硬伤。
  • 四元数法:4个参数,无奇点,计算量适中。我个人强烈推荐这个。

我的经验:四元数更新时,一定要做归一化。我曾经因为忘了归一化,导致姿态漂移越来越严重。查了三天才找到问题。归一化公式很简单:

q = q / ||q||

每次更新后都做一次,养成习惯。

4.3 速度与位置更新

速度更新,说白了就是对比力积分。但这里有个坑——你得先把加速度计测的比力从机体系转换到导航系。

f^n = C_b^n · f^b

然后减去哥氏加速度和重力加速度,才是真正的运动加速度。

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

位置更新就更直接了,对速度积分就行。但要注意,纬度、经度、高度是三个不同的量,更新公式略有差异。

避坑指南:我曾经在高度通道上吃过亏。纯惯导的高度通道是不稳定的,误差会随时间发散。如果你只靠惯导算高度,几分钟后误差就能到几百米。必须用气压高度计或GPS来修正。

4.4 捷联惯导的误差方程

为什么要研究误差方程?说白了,就是为了做组合导航。卡尔曼滤波需要知道系统的误差传播规律。

误差方程包括三个部分:

  • 姿态误差方程:描述平台失准角的传播
  • 速度误差方程:描述速度误差的传播
  • 位置误差方程:描述位置误差的传播

我直接给出一组常用的线性化误差方程(在导航坐标系下):

姿态误差:
φ̇ = -ω_in^n × φ + δω_in^n - C_b^n · ε^b

速度误差:
δv̇ = f^n × φ + C_b^n · ∇^b - (2ω_ie^n + ω_en^n) × δv + δg^n

位置误差:
δL̇ = δv_N / (R_M + h)
δλ̇ = δv_E / ((R_N + h) · cosL)
δḣ = -δv_D

其中 ε^b 是陀螺漂移,∇^b 是加速度计零偏。这两个是惯导最主要的误差源。

4.5 误差方程的物理意义

你仔细看姿态误差方程。第一项 -ω_in^n × φ 说明什么?它表示平台失准角会随着地球自转和载体运动而旋转。第二项 δω_in^n 是导航系计算误差引起的。第三项 -C_b^n · ε^b 就是陀螺漂移直接导致的姿态误差。

我举个例子。假设你的陀螺有0.01°/h的常值漂移。在纯惯导模式下,一小时后的姿态误差大约是0.01°。听起来不大?但速度误差会随着时间累积,位置误差更是随时间平方增长。

关键结论:

  • 陀螺漂移 → 姿态误差 → 速度误差 → 位置误差(误差传播链)
  • 加速度计零偏 → 速度误差 → 位置误差
  • 位置误差会反馈到姿态误差(通过 δω_in^n)

4.6 知识体系结构图

下面这张图,是我梳理的捷联惯导核心逻辑。你看一眼就能明白整个系统的数据流和误差传播路径。

捷联惯导系统核心逻辑与误差传播 陀螺仪 角速度 ω_ib^b 加速度计 比力 f^b 姿态更新 四元数/方向余弦矩阵 坐标转换 f^n = C_b^n · f^b 导航计算 速度/位置积分 误差方程 姿态/速度/位置误差传播 组合导航 卡尔曼滤波修正 误差反馈修正 图例: 传感器 核心算法 导航解算 误差分析 组合导航 数据流 反馈修正

4.7 工程中的几个关键点

做捷联惯导,有几个地方特别容易出问题:

  1. 圆锥误差补偿:高动态环境下,角速度积分会有不可交换性误差。我建议用多子样算法来补偿。
  2. 划船误差补偿:线振动和角振动耦合产生的速度误差。跟圆锥误差类似,也需要特殊处理。
  3. 初始对准:捷联惯导启动时,需要知道初始姿态。粗对准用重力矢量和地球自转角速度矢量,精对准用卡尔曼滤波。
  4. 传感器标定:陀螺和加速度计的零偏、标度因数、安装误差,都得标定。我见过一个项目,因为安装误差没标定,导航精度直接降了一个数量级。

我的建议:如果你刚开始做捷联惯导,先从低动态场景入手。把姿态更新、速度更新、位置更新这三个模块调通,再考虑误差补偿和组合导航。一步一步来,别想一口吃成胖子。

捷联惯导的误差方程,说白了就是告诉我们:误差从哪里来,怎么传播,怎么抑制。搞懂了这些,组合导航的卡尔曼滤波器设计就水到渠成了。

专注资料整理