第4章 组合导航系统:INS/GPS松耦合与紧耦合架构

各位同学,今天我们来聊聊组合导航系统里最经典的话题——INS和GPS怎么搭配干活。说实话,我在这个领域摸爬滚打十几年,见过太多因为耦合方式选错导致任务失败的案例。嗯,咱们今天就把它彻底讲透。

4.1 为什么非要组合?

先问个问题:惯性导航(INS)和卫星导航(GPS)单独用,各自有什么毛病?

INS吧,短时间精度高,但时间一长就飘。我见过一个项目,纯惯导飞了20分钟,位置误差直接干到几百米。GPS呢,长期稳定,但容易被干扰、遮挡,更新频率还低(一般10Hz)。

说白了,一个怕长跑,一个怕短跑。组合起来,就是让它们互相补台。

核心思想:用GPS的长期稳定性修正INS的漂移,用INS的高频输出填补GPS的更新间隙。

4.2 松耦合架构

松耦合,英文叫Loosely Coupled。这是最直观、最容易实现的方式。

怎么工作的?

简单说,就是INS和GPS各自独立解算位置、速度,然后拿GPS的结果去修正INS。修正通常用卡尔曼滤波器完成。

// 松耦合的简化流程
INS解算 → 位置P_ins, 速度V_ins
GPS解算 → 位置P_gps, 速度V_gps
差值 = [P_ins - P_gps, V_ins - V_gps]  // 作为观测量
卡尔曼滤波 → 估计INS误差 → 反馈修正

我在项目中遇到过一件事:某次无人机试飞,松耦合模式下GPS突然丢星5秒钟。结果呢?INS直接开环跑,位置误差瞬间炸裂。为什么?因为松耦合的观测量是位置和速度,一旦GPS没了,滤波器就失去修正源。

避坑指南:我曾经因为GPS天线安装位置不当,导致松耦合系统在转弯时出现1秒左右的延迟。后来发现是GPS和INS的杆臂效应没补偿。记住,杆臂补偿不是可选项,是必选项。

松耦合的优点:

  • 实现简单,计算量小
  • INS和GPS可以独立工作
  • 故障隔离容易

松耦合的缺点:

  • GPS需要至少4颗星才能解算
  • GPS信号短暂中断时,INS误差会快速积累
  • 无法利用GPS的原始观测量(伪距、载波相位)

4.3 紧耦合架构

紧耦合,Tightly Coupled。这才是真正的高手玩法。

区别在哪?

松耦合用的是GPS解算后的位置速度,紧耦合直接拿GPS的原始观测量——伪距和伪距率。你想想看,这样信息量大了多少?

// 紧耦合的简化流程
INS解算 → 预测伪距 ρ_pred, 预测伪距率 ρ_dot_pred
GPS接收机 → 测量伪距 ρ_meas, 测量伪距率 ρ_dot_meas
差值 = [ρ_pred - ρ_meas, ρ_dot_pred - ρ_dot_meas]  // 每颗星独立计算
卡尔曼滤波 → 估计INS误差 + GPS接收机时钟误差

紧耦合最牛的地方在于:即使GPS只有1颗星可用,系统依然能工作。为什么?因为紧耦合的观测量是每颗星独立的伪距残差,不是位置解算结果。

实战经验:我在某次高动态飞行试验中,GPS信号被遮挡到只剩2颗星。松耦合系统直接罢工,紧耦合系统靠着这2颗星和INS的预测,硬是撑了30秒,误差控制在10米以内。这就是差距。

紧耦合的优点:

  • 抗干扰能力强,可用星数少时仍能工作
  • 精度更高,尤其是动态环境下
  • 可以估计GPS接收机时钟误差

紧耦合的缺点:

  • 实现复杂,计算量大
  • 需要访问GPS接收机的原始数据(很多商用接收机不开放)
  • 故障诊断更困难

4.4 两种架构的对比

对比项 松耦合 紧耦合
观测量 位置、速度 伪距、伪距率
最小可用星数 4颗 1颗
计算复杂度
精度(静态) 中等
精度(动态) 较低
抗干扰能力
实现难度

4.5 故障对组合导航的影响

这部分我得多说几句。故障诊断是我的老本行,组合导航系统一旦出故障,后果可能很严重。

GPS故障类型:

  • 信号丢失:松耦合直接失去观测量,INS开环发散。紧耦合还能撑一阵子。
  • 多径效应:伪距测量出现偏差。我见过一个案例,城市峡谷中多径误差达到50米,松耦合完全没察觉。
  • 星历错误:卫星广播的轨道参数出错。这种故障最隐蔽,因为GPS接收机自己都检测不出来。

INS故障类型:

  • 加速度计零偏突变:通常由温度变化或冲击引起。紧耦合能通过伪距残差快速检测到。
  • 陀螺漂移增大:姿态误差会慢慢累积。我建议在卡尔曼滤波里加一个残差卡方检验,专门抓这种渐变故障。
  • 杆臂效应异常:如果INS和GPS的安装位置发生相对位移(比如结构变形),两种耦合方式都会受影响。

我的建议:对于高可靠性应用,别只用一种耦合方式。我习惯的做法是:主通道用紧耦合,同时保留一个松耦合作为备份。两个通道互相校验,一旦残差超限,立即切换。

4.6 故障检测的实用方法

这里分享一个我常用的方法——残差χ²检验。说白了,就是看卡尔曼滤波的新息(innovation)是否服从零均值高斯分布。

// 残差χ²检验伪代码
for each epoch:
    计算新息向量: ν = z - H·x_pred
    计算新息协方差: S = H·P_pred·H^T + R
    计算检验统计量: T = ν^T · S^(-1) · ν
    if T > 阈值:
        报警:可能发生故障
    else:
        正常更新

阈值怎么选?我一般取χ²分布的0.99分位数。自由度等于观测量维度。比如紧耦合有8颗星,自由度就是8。

注意:我曾经踩过一个坑——阈值设得太严,导致频繁虚警。后来发现是过程噪声Q矩阵调得太小,滤波器过于自信。记住,故障检测的阈值要和滤波器调参一起考虑。

4.7 选型建议

最后,给各位一个实用的选型建议:

  • 消费级无人机:松耦合就够了。成本低,实现快。
  • 工业级巡检:建议紧耦合。城市环境、信号遮挡多,紧耦合更可靠。
  • 导弹/高动态飞行器:必须紧耦合,而且要做冗余设计。我见过用三余度INS+双GPS的配置,紧耦合+故障检测+重构,一套下来可靠性提升两个数量级。

嗯,今天就讲到这里。下一章咱们聊聊组合导航系统的容错设计,包括故障隔离和系统重构。到时候我会分享一个我亲手调过的实际案例,保证干货满满。