GNSS/INS组合导航系统设计与实现:从松耦合到深耦合的工程实践

GNSS/INS组合导航

引言:当卫星信号消失时

自动驾驶汽车驶入隧道、无人机飞进城市峡谷、智能手机进入地下车库——这些场景中GNSS信号都会中断或严重降级。而惯性导航系统(INS)完全不依赖外部信号,可以在GNSS失效期间独立维持定位,尽管误差随时间累积。

GNSS和INS是天作之合:GNSS提供长期绝对精度但不连续,INS提供短期高精度但会漂移。组合导航系统融合二者优势,形成连续、精确、鲁棒的定位方案。本文将全面解析组合导航的工程实践。

一、惯性导航基础

1.1 IMU的工作原理

惯性测量单元(IMU)包含三个正交的加速度计和三个正交的陀螺仪:

加速度计:测量比力(specific force),即物体实际加速度与重力加速度之差。在静止水平面上,加速度计测量到的不是0而是向上的g(约9.8m/s²)。

陀螺仪:测量角速度(°/s或rad/s)。三个轴上的陀螺仪给出载体在三维空间中的旋转速率。

1.2 IMU误差模型

IMU的误差特性直接决定组合导航的定位精度保持时间。完整的IMU误差模型包括:

确定性误差(可通过标定补偿):

  • **零偏(Bias)**:静止状态下传感器的非零输出
  • **比例因子误差(Scale Factor Error)**:输出值与真实值的比例偏差
  • **非正交误差(Misalignment)**:传感器三轴不完全正交

随机误差(需在线估计):

  • **角度随机游走(ARW)**:陀螺仪的高频白噪声积分,导致角度误差按√t增长
  • **速度随机游走(VRW)**:加速度计的高频白噪声积分,导致速度误差按√t增长
  • **零偏不稳定性(Bias Instability)**:零偏的缓慢漂移,也称1/f噪声或闪烁噪声
  • **速率随机游走(Rate Random Walk)**:零偏的变化随时间随机游走

1.3 IMU性能等级

| 等级 | 陀螺零偏 (°/h) | ARW (°/√h) | 加速度计零偏 (mg) | 纯惯导保持 (10m误差) | 典型价格 | |------|----------------|-------------|-------------------|----------------------|----------| | 航海级 | <0.0001 | <0.001 | <0.01 | 数天 | >$100,000 | | 战略级 | 0.001-0.01 | 0.001-0.005 | 0.01-0.1 | 数小时 | $10,000-$100,000 | | 导航级 | 0.01-0.1 | 0.005-0.01 | 0.1-1 | ~1小时 | $1,000-$10,000 | | 战术级 | 1-10 | 0.05-0.1 | 1-10 | 1-5分钟 | $100-$1,000 | | 工业级 | 10-100 | 0.1-0.5 | 10-100 | <30秒 | $10-$100 | | 消费级 | >100 | >0.5 | >100 | <10秒 | <$10 |

消费级MEMS IMU(如手机中的ICM-20948)在GNSS失锁后不到10秒误差就会超过10米。而战术级IMU可以独立保持分钟级别的可用精度。

二、惯导解算力学编排

2.1 姿态更新

姿态表示载体坐标系(b-frame)相对于导航坐标系(通常为当地水平坐标系,n-frame)的旋转关系。常用的姿态表示方法有方向余弦矩阵(DCM)、欧拉角和四元数。

四元数姿态更新是最常用的方法,旋转矢量的四元数更新方程为:

> q_{k+1} = q_k ⊗ [cos(|Δθ|/2), (Δθ/|Δθ|)·sin(|Δθ|/2)]

其中 Δθ 是陀螺仪测量的角度增量矢量,⊗ 表示四元数乘法。

2.2 速度更新

速度更新将比力转换到导航坐标系,并补偿重力、哥里奥利力和向心力:

> vⁿ_{k+1} = vⁿ_k + Δvⁿ_f + gⁿ·Δt

其中 Δvⁿ_f 是导航坐标系下的速度增量,gⁿ 是当地重力矢量。

2.3 位置更新

位置更新相对简单,对速度进行积分即可:

> rⁿ_{k+1} = rⁿ_k + (vⁿ_k + vⁿ_{k+1})/2 · Δt

三、三种耦合架构

3.1 松耦合(Loosely Coupled)

松耦合是最简单的组合方式。GNSS和INS各自独立解算,然后将位置和速度作为输入送入卡尔曼滤波器。

优点

  • 实现简单,两个系统独立工作
  • 可以即插即用不同品牌和型号的GNSS接收机和IMU
  • 故障隔离好——一个系统失效不影响另一个

缺点

  • GNSS需要至少4颗卫星才能输出解
  • GNSS解的内部滤波会引入时间相关噪声
  • 在城市峡谷等卫星数不足时完全无辅助

滤波器设计:松耦合的卡尔曼滤波器通常使用15状态模型——3个位置误差、3个速度误差、3个姿态误差、3个加速度计零偏、3个陀螺零偏。GNSS的位置和速度作为观测值更新滤波器。

3.2 紧耦合(Tightly Coupled)

紧耦合不依赖GNSS的独立解算,而是直接使用GNSS接收机的伪距和伪距率(多普勒)作为滤波器观测值。

优点

  • 即使只有1-2颗可见卫星也能提供有用辅助
  • 避免了GNSS独立解算引入的时间相关噪声
  • 对信号遮挡和干扰的鲁棒性显著增强

缺点

  • 需要获取GNSS接收机的原始观测值
  • 需要估计接收机钟差和钟漂
  • 实现复杂度显著增加

扩展状态向量:紧耦合滤波器在15状态基础上增加接收机钟差和钟漂2个状态,总共17状态。观测方程使用GNSS原始观测值而非解算结果。

3.3 深耦合(Deeply Coupled / Ultra-Tightly Coupled)

深耦合是最深层次的融合,将INS信息反馈到GNSS的基带跟踪环路中。

工作原理:INS提供的速度和加速度信息用于预测载体的动态变化,辅助GNSS接收机的码跟踪环和载波跟踪环。这使得跟踪环可以使用极窄的带宽(甚至1Hz以下),显著提高跟踪灵敏度和抗干扰能力。

优点

  • 跟踪灵敏度可提升10-15dB
  • 抗干扰和抗欺骗能力最强
  • 高动态下的跟踪稳定性最好

缺点

  • 需要修改GNSS基带硬件或固件
  • 设计和调试难度极高
  • 通常是厂商的专有技术

四、扩展卡尔曼滤波器实现

4.1 状态方程

组合导航EKF的标准状态向量为:

> x = [δr, δv, δψ, b_a, b_g, δtᵣ, δṫᵣ]ᵀ

其中 δr, δv, δψ 为位置误差、速度误差和姿态误差,b_a, b_g 为加速度计和陀螺零偏,δtᵣ, δṫᵣ 为接收机钟差和钟漂。

4.2 惯性递推(预测步骤)

每次收到IMU数据时进行预测:

# 惯性导航递推
for imu_sample in imu_buffer:
    # 姿态更新
    delta_angle = imu_sample.gyro * dt - bg_estimate * dt
    quat = quat_update(quat, delta_angle)

    # 速度更新
    accel_n = quat.rotate(imu_sample.accel) - ba_estimate
    vel += (accel_n - gravity - coriolis) * dt

    # 位置更新
    pos += vel * dt

    # 状态转移矩阵 F
    F = compute_transition_matrix(quat, vel, pos, dt)

    # 协方差预测
    P = F @ P @ F.T + Q

4.3 观测更新

收到GNSS观测值时进行更新:

松耦合更新:直接用位置和速度差值更新。

紧耦合更新:对每颗可见卫星,计算预测伪距和伪距率,与实测值求差作为新息,逐卫星更新。

# 紧耦合观测更新(逐卫星顺序处理)
for sat_obs in gnss_observations:
    # 预测伪距
    sat_pos, sat_clk = get_sat_position_time(sat_obs)
    pred_range = norm(sat_pos - ins_pos) - sat_clk

    # 计算观测矩阵 H
    H = compute_observation_matrix(sat_pos, ins_pos)

    # 卡尔曼增益
    K = P @ H.T / (H @ P @ H.T + R)

    # 状态更新
    innovation = sat_obs.pseudorange - pred_range
    x = x + K * innovation
    P = (I - K @ H) @ P

4.4 滤波器调优的关键参数

过程噪声Q:反映IMU的噪声特性。ARW和VRW参数应严格匹配IMU的datasheet。

观测噪声R:反映GNSS的观测质量。伪距噪声通常设为(0.5-3m)²,取决于信号强度和仰角。

初始协方差P0:反映初始状态的不确定性。初始对准的精度直接影响收敛速度。

五、初始对准

5.1 静止对准

组合导航系统开机后需要初始对准来确定初始姿态。静止对准是最基本的方法。

水平对准:利用加速度计测量重力矢量确定俯仰角和横滚角。在静止状态下,加速度计输出即为重力方向。

> θ = arctan(−aₓ / √(a_y² + a_z²)), φ = arctan(a_y / a_z)

航向对准:航向角不能仅靠重力确定(重力矢量不包含水平方向信息)。需要通过以下方法:

  • 陀螺罗经:检测地球自转角速度的水平分量
  • 磁力计辅助:使用地磁场信息
  • GNSS航向辅助:通过移动获取GNSS航向

5.2 动对准

如果载体无法静止(如飞行中的导弹),需要使用动对准技术。动对准利用GNSS速度信息进行在航对准,收敛到可用姿态通常需要几十秒到几分钟。

六、工程实践要点

6.1 时间同步

GNSS和IMU的时间基准必须精确对齐。1ms的时间同步误差在高速场景(100km/h)下可造成约2.8cm的位置误差。

常用同步方法:

  • **硬件同步**:GNSS的1PPS脉冲作为IMU采样的外部触发
  • **软件同步**:使用共同的时钟源为两个传感器的时间戳打标
  • **插值对齐**:在软件中对IMU数据进行插值以对齐GNSS历元

6.2 杆臂补偿

IMU和GNSS天线的安装位置不同,二者之间存在杆臂向量。在载体发生旋转时,杆臂会导致IMU和GNSS测量到不同的运动。

杆臂补偿公式(在导航坐标系中): > r_GNSS = r_IMU + R_bⁿ · lᵇ

其中 lᵇ 是载体坐标系中从IMU到天线的向量,R_bⁿ 是方向余弦矩阵。

6.3 非完整性约束

地面车辆可以利用运动约束(NHC,Non-Holonomic Constraints)来抑制纯惯导时的漂移。核心假设是:正常行驶的车辆不会侧滑或离地。

> vᵇ_y ≈ 0, vᵇ_z ≈ 0

这两个"虚拟观测量"可以作为零速更新(ZUPT)的补充,在GNSS中断时显著延长可用的惯导独立工作时间。

6.4 异常检测

组合导航系统必须包含鲁棒的异常检测机制:

  • **GNSS观测值的RAIM检测**:排除发生故障或受到欺骗的卫星
  • **IMU的创新序列监测**:检测IMU的突变或异常
  • **滤波器的卡方检验**:评估滤波器的整体健康状况

七、应用场景与方案选型

7.1 自动驾驶

自动驾驶对组合导航的要求最全面:

  • 定位精度:横向<20cm,纵向<30cm(车道级)
  • 可用性:城市峡谷、隧道、高架桥下连续定位
  • 完好性:危险误导信息概率<10⁻⁸/h
  • 更新率:>100Hz(用于车辆控制)

推荐方案:战术级IMU + 多系统多频GNSS + 紧耦合 + 轮速计辅助。

7.2 无人机

无人机的特殊需求:

  • 重量和功耗极敏感
  • 动态范围大(急转弯和快速升降)
  • 振动环境复杂

推荐方案:工业级MEMS IMU + 紧耦合 + 气压高度计辅助。

7.3 智能手机与可穿戴

消费电子的约束:

  • 成本和尺寸极端受限
  • 用户运动模式多样且不可预测
  • 需要步态检测和步长估计辅助

推荐方案:消费级6轴IMU + GNSS芯片内置松耦合。

结语

GNSS/INS组合导航是传感器融合的经典案例——两种传感器优势互补,创造出超越各自极限的定位系统。随着MEMS IMU性能的持续提升和组合算法的不断优化,曾经只能在数十万美元军用设备上实现的能力,正在进入价值数百美元的民用产品。

对于导航系统的开发者,深刻理解IMU误差特性、掌握不同耦合架构的工程权衡、积累滤波器调参的实践经验,是构建可靠组合导航系统的关键能力。

---

封面图来源:Unsplash 本文为Ai探索笔记原创