4. INS误差模型:位置误差、速度误差、姿态误差、惯性器件误差

做组合导航这些年,我最大的体会就是:不懂误差模型,就别谈卡尔曼滤波。你想想看,卡尔曼滤波的核心就是“预测+修正”,而预测靠的就是INS的力学编排。但INS本身有误差,你得先知道这些误差怎么传播,才能设计出靠谱的滤波器。

说白了,误差模型就是INS的“病历本”。你得知道它哪里会疼,疼起来是什么规律,才能对症下药。这一章,我就带你把这本“病历本”翻个底朝天。

核心观点:INS误差模型是卡尔曼滤波状态方程的基础。位置误差、速度误差、姿态误差、惯性器件误差,这四大类构成了我们滤波器的状态向量。

4.1 为什么需要误差模型?

我刚开始做INS的时候,有个误区:觉得INS解算出来的位置、速度、姿态就是真值。后来有一次做车载实验,跑了一个小时,位置漂了快两公里。嗯,从那以后我就明白了——INS的误差是随时间累积的

卡尔曼滤波要做的,就是利用GPS等外部信息,去估计并修正INS的误差。但前提是,你得有一个数学模型来描述这些误差是怎么变化的。这个模型,就是INS误差模型。

它主要解决三个问题:

  • 误差怎么来的?——惯性器件有偏置、噪声
  • 误差怎么传?——位置误差影响速度误差,速度误差影响姿态误差,环环相扣
  • 误差怎么修?——知道了误差的传播规律,才能设计反馈校正

4.2 位置误差

位置误差,说白了就是INS算出来的位置和真实位置之间的差。在导航坐标系(通常是n系,即东北天坐标系)下,位置误差通常用纬度误差δφ、经度误差δλ、高度误差δh来表示。

它的微分方程长这样:

δφ_dot = δV_N / (R_M + h) - V_N * δh / (R_M + h)²
δλ_dot = δV_E * sec(φ) / (R_N + h) + V_E * sec(φ) * tan(φ) * δφ / (R_N + h) - V_E * sec(φ) * δh / (R_N + h)²
δh_dot = δV_U

看着有点复杂是吧?其实核心就一句话:位置误差的变化率,主要由速度误差决定。你速度算错了,位置就会越偏越远。

我的经验:在实际项目中,高度通道的误差是最头疼的。因为重力加速度的补偿不准,高度误差会指数发散。所以大多数组合导航系统,都会用气压计或GPS高度来约束高度通道。我曾经在一个无人机项目里忘了加高度约束,结果飞了10分钟,高度误差就超过了100米……

4.3 速度误差

速度误差δV,是INS解算的速度与真实速度的偏差。它的微分方程是INS误差模型里最核心的部分:

δV_dot = f^n × φ - (2ω_ie^n + ω_en^n) × δV + δg^n + C_b^n * δf^b

我来拆解一下这个公式:

  • f^n × φ:这是姿态误差引起的比力投影误差。你姿态偏了1度,比力投影就偏了,速度自然就偏了。
  • (2ω_ie^n + ω_en^n) × δV:这是哥里奥利力和向心力的误差项。说白了就是地球自转和载体运动引起的耦合误差。
  • δg^n:重力异常误差。地球重力场不是完美的椭球,这个误差虽然小,但长时间累积也不可忽视。
  • C_b^n * δf^b:加速度计误差投影到导航系。这是惯性器件误差的直接体现。

你看,速度误差的传播,和姿态误差、加速度计误差都有关。这就是为什么INS误差模型是个耦合系统。

4.4 姿态误差

姿态误差φ(也叫失准角),是INS解算的姿态与真实姿态之间的偏差。它的微分方程是:

φ_dot = -ω_in^n × φ + δω_in^n - C_b^n * δω_ib^b

这里有个关键点:姿态误差的传播,主要受陀螺仪误差δω_ib^b的影响。陀螺漂移是姿态误差的主要来源。

我记得有一次做船载实验,用的光纤陀螺,零偏稳定性标称0.01°/h。结果跑了一天,姿态误差才0.5度,效果很好。但后来换了一款MEMS陀螺,零偏稳定性0.1°/h,同样的实验,姿态误差直接飙到了5度。所以啊,陀螺仪精度直接决定了姿态误差的发散速度

注意:姿态误差和速度误差是强耦合的。姿态误差会导致比力投影错误,从而产生速度误差;而速度误差又会影响姿态更新中的地球自转项。这个耦合关系,在卡尔曼滤波中必须正确处理。

4.5 惯性器件误差

惯性器件误差,包括陀螺仪误差和加速度计误差。它们通常被建模为:

误差类型 陀螺仪 加速度计
常值偏置 ε_b (°/h) ∇_b (m/s²)
随机游走 随机游走噪声 随机游走噪声
刻度因子误差 δK_g δK_a
安装误差 δM_g δM_a

在卡尔曼滤波中,我们通常只把常值偏置作为状态量来估计。为什么呢?因为随机游走是白噪声驱动的,没法直接估计;刻度因子和安装误差,一般通过标定来补偿,不在线估计。

陀螺仪常值偏置的模型很简单:

ε_dot = 0 + 白噪声

加速度计常值偏置也一样:

∇_dot = 0 + 白噪声

说白了,就是认为偏置是缓慢变化的,用随机游走模型来描述。

4.6 完整的误差状态向量

把上面这些误差综合起来,就得到了卡尔曼滤波的状态向量。我常用的15维状态向量是这样的:

X = [δφ, δλ, δh, δV_N, δV_E, δV_U, φ_N, φ_E, φ_D, ε_x, ε_y, ε_z, ∇_x, ∇_y, ∇_z]^T

其中:

  • 前3个:位置误差
  • 中间3个:速度误差
  • 再3个:姿态误差
  • 再3个:陀螺仪常值偏置
  • 最后3个:加速度计常值偏置

这个15维状态向量,是组合导航中最经典、最常用的配置。当然,如果你用的IMU精度很高,或者应用场景特殊,也可以减少或增加状态量。比如有些系统会把刻度因子也加进去,变成21维甚至更高。

我的建议:刚开始做组合导航,先用15维状态向量。它足够覆盖主要的误差源,而且计算量适中。等把基础搞扎实了,再根据实际需求去扩展。

4.7 误差模型的物理意义

说了这么多公式,你可能有点晕。我换个角度,用物理意义来总结一下:

  • 位置误差:是速度误差的积分。速度偏了,位置就跟着偏。
  • 速度误差:是姿态误差和加速度计误差的积分。姿态偏了,或者加速度计有偏置,速度就会偏。
  • 姿态误差:是陀螺仪误差的积分。陀螺漂移是姿态误差的根源。
  • 惯性器件误差:是源头。陀螺和加速度计的误差,通过积分,一步步传递到姿态、速度、位置。

你想想看,这个链条是不是很清晰?陀螺漂移→姿态误差→速度误差→位置误差。这就是INS误差传播的主路径。

当然,实际中还有交叉耦合,比如速度误差也会反过来影响姿态误差(通过地球自转项),但主路径就是上面这个。

4.8 误差模型在卡尔曼滤波中的角色

在卡尔曼滤波中,误差模型用来构建状态转移矩阵F。F矩阵描述了状态量随时间的变化关系,也就是我们上面那些微分方程的矩阵形式。

有了F矩阵,卡尔曼滤波才能做“预测”这一步:

X_k|k-1 = F * X_k-1|k-1

同时,F矩阵也用于计算状态协方差矩阵的预测:

P_k|k-1 = F * P_k-1|k-1 * F^T + Q

所以,误差模型的准确性,直接决定了卡尔曼滤波的预测精度。模型建得准,滤波器收敛快、估计准;模型建得糙,滤波器可能发散。

一个小技巧:在实际工程中,我通常会在F矩阵里加一个“调谐因子”。因为理论模型和实际系统总有偏差,适当调整F矩阵中的某些参数(比如陀螺噪声的方差),能让滤波器更鲁棒。这个调谐过程,说白了就是“让模型更贴近现实”。

4.9 本章小结

这一章我们聊了INS误差模型的四大块:位置误差、速度误差、姿态误差、惯性器件误差。核心就三点:

  1. 误差传播是有规律的——从陀螺漂移到姿态误差,再到速度误差,最后到位置误差,环环相扣。
  2. 15维状态向量是标配——位置3+速度3+姿态3+陀螺偏置3+加速度计偏置3,够用且高效。
  3. 误差模型是卡尔曼滤波的基石——没有准确的误差模型,滤波器的预测就是瞎猜。

嗯,这一章的内容就到这里。下一章我们会把这些误差模型写成代码,看看实际中怎么用。


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