项目说明文档:基于伪距和伪距率的GPS/INS紧组合导航系统仿真
项目简介
本项目旨在提供一个用于航空航天类本科教学与研究的仿真平台,通过模拟飞行器在实时的三维动态过程,展示全球定位系统(GPS)与惯性导航系统(INS)紧组合算法的实现过程。系统直接利用原始的 GPS 伪距和伪距率观测数据,而非位置和速度结果,通过扩展卡尔曼滤波(EKF)实现两种导航系统的深度融合。该仿真能够有效反映惯性传感器的性能演变、时钟误差的影响以及组合导航在复杂动态环境下的高精度定位能力。
功能特性
- 全维度轨迹仿真:程序内置轨迹发生器,能够模拟飞行器经历直线加速、水平匀速转弯以及减速降高三个阶段的典型运动过程。
- 高精度惯导建模:实现捷联惯导(SINS)机械编排,包含四元数姿态更新、速度积分和经纬度位置更新,同时模拟了陀螺仪和加速度计的零偏误差、随机游走噪声及其动态补偿。
- 原始 GPS 观测量仿真:不仅计算理论几何距离,还建立了时钟模型,包含接收机钟差、钟漂的随机过程模拟,生成贴近真实的伪距和伪距率数据。
- 17维紧组合滤波:利用 EKF 估计包含位置误差、速度误差、姿态角误差、惯感器零偏以及时钟状态的 17 维系统状态向量。
- 误差闭环反馈:在滤波器更新后,程序自动将估计的误差反馈至惯导系统及传感器补偿量中,实现误差的实时修正。
- 可视化分析:生成三维轨迹图、各分量误差曲线、传感器零偏收敛曲线及协方差收敛情况,便于评估系统稳定性与精度。
系统要求
- MATLAB R2016b 或更高版本。
- 环境需支持基本的矩阵运算,无需特定的工具箱支持。
main.m 实现逻辑
程序遵循标准的导航仿真流程,通过主循环驱动:
- 参数初始化:定义 IMU 和 GPS 的采样频率(100Hz/1Hz),设定地球椭球参数(WGS-84 模型常量),并初始化接收机与传感器的各类误差系数。
- 轨迹真值生成:
* 通过对加速度和角速度的离散积分,生成理想的经纬高坐标、速度及姿态序列。
* 计算出满足该轨迹的理想比力(Specific Force)和理想角速度数据。
- 传感器数据仿真:在理想 IMU 输出基础上叠加设定好的静态零偏和高斯白噪声。同时构建 8 颗虚拟卫星星座,计算接收机与卫星间的几何动态关系。
- 核心仿真循环(时间步进 0.01s):
*
惯导机械编排:利用补偿过后的传感器数据,采用四元数法更新姿态,在地理坐标系(NED)下完成速度和位置的迭代积分。
*
EKF 预测更新:每个 IMU 采样周期更新状态转移矩阵 F,并对状态误差协方差 P 进行预测。
*
GPS 量测更新(每 1s 触发一次):
* 计算当前时刻 SINS 预测位置在 ECEF 坐标系下的位置。
* 计算各卫星相对于载体的视线向量。
* 构造以伪距残差和伪距率残差为输入的 Z 阵。
* 计算卡尔曼增益 K,更新 17 维误差状态 X 和协方差 P。
*
反馈修正:将 X 中的误差值立即补偿给位置、速度、姿态四元数以及内部维护的 IMU 零偏估值。
- 结果存储与计算:将每一步的滤波结果及计算出的 NED 系位置误差、速度误差存入结果数组。
- 绘图展示:仿真结束后,自动绘制三维航迹图、位置/速度/姿态误差随时间的变化曲线,以及陀螺仪和加速度计零偏的估计轨迹。
算法实现细节
- 状态向量设计:系统的 17 维状态包括:3维位置误差(单位:米)、3维速度误差、3维姿态误差(单位:弧度)、3维陀螺仪零偏(单位:rad/s)、3维加速度计零偏(单位:m/s²)、1维接收机钟差(单位:米)以及 1维接收机钟漂(单位:m/s)。
- 坐标转换函数:
*
blh2ecef:将大地坐标(纬度、经度、高度)转换为地心地固坐标系(ECEF)下的三维坐标。
*
latlon2cen:根据当前经纬度计算从 ECEF 转换到 NED 坐标系的方向余弦矩阵。
*
att2mat / mat2att:实现欧拉角与旋转矩阵之间的互相转换。
*
mat2quat / quat2mat:实现旋转矩阵与四元数之间的互相转换,用于姿态更新。
- 观测矩阵 H:其核心由视线向量的方向余弦组成,建立了 ECEF 系下卫星-载体相对几何关系与 NED 系下位置误差状态的数学映射。
- IMU 噪声处理:建模时通过对连续噪声进行离散化处理(乘以 1/sqrt(dt)),确保仿真中噪声方差不随采样频率变化而产生偏差。
- 时钟误差模型:钟差通过钟漂的积分生成,而钟漂自身被建模为一个一阶随机游走过程。
使用方法
- 确保上述算法逻辑中的相关辅助函数(如坐标转换、矩阵运算等)已作为内部函数或在同一目录下。
- 在 MATLAB 中直接运行主程序脚本。
- 程序将执行约 300 秒的仿真过程(视计算机性能,仿真运行通常在数秒内完成)。
- 运行结束后,屏幕将弹出多张图表,分别显示三维航迹效果及各项状态的收敛情况。
- 可通过修改参数设置部分的初始偏差或噪声强度,观察并对比滤波器在不同工况下的鲁棒性。