基于卡尔曼滤波与扩展卡尔曼滤波的高速车辆组合导航系统研究
项目介绍
本项目针对高速行驶车辆在复杂环境下的高精度定位需求,通过融合惯性导航系统(INS)与全球定位系统(GNSS)的各自优势,构建了一套完整的组合导航算法仿真平台。项目重点解决由于高速运动产生的非线性动态响应问题,对比了标准线性化误差状态卡尔曼滤波(ESKF)与扩展卡尔曼滤波(EKF)在姿态变化剧烈时的表现。系统通过 15 维状态向量建模,实现了三维空间内的位置、速度、姿态估计,并实时对惯性传感器的零漂误差进行在线补偿,从而有效抑制捷联惯导的漂移发散。
功能特性
- 高精运动学模型重建:能够模拟车辆以 108km/h(30m/s)高速行驶时的 S 型弯道运动轨迹。
- 多频率传感器模拟:支持 100Hz 的高频 IMU 数据生成与 1Hz 的低频 GNSS 观测模拟。
- 15 维状态滤波:涵盖位置 (X, Y, Z)、速度 (Vx, Vy, Vz)、姿态 (Roll, Pitch, Yaw) 及传感器零偏。
- 传感器误差在线估计:实时估算加速度计零偏与陀螺仪零漂,并将其纳入滤波器状态进行反馈。
- 双滤波算法对比:同步运行 EKF 与基于误差状态的 KF 算法,直观对比非线性处理能力。
- 完备的可视化分析:提供三维轨迹图、实时误差趋势、传感器补偿演变及滤波器残差分析。
实现逻辑
系统按照以下流程进行闭环仿真:
- 参数配置阶段:设定仿真时长为 60 秒,配置 IMU 与 GNSS 的采样率。引入预设的加速度计与陀螺仪规律漂移及白噪声。
- 轨迹产生模块:基于车辆运动学方程,在机体系下设定速度,经坐标变换在导航系(NED 坐标系简化版)中生成位置与航向角真值。
- 传感器前端模拟:
- 将车辆运动增量转化为 IMU 原始输出,并在此基础上叠加人为定义的零偏(Bias)和随机游走噪声。
- 提取特定时刻的 GNSS 位置与速度作为离散观测值。
- 惯性导航解算(Prediction):
- 利用捷联惯导(SINS)算法进行姿态、速度、位置的积分推算。
- 构建状态转移矩阵 F,其中重点通过雅可比矩阵对非线性旋转变换进行一阶泰勒展开线性化,处理姿态角与重力向量的关系。
- 观测更新(Correction):
- 当 GNSS 数据到来时(1Hz),计算观测残差(Innovation)。
- 执行卡尔曼更新方程,修正系统状态向量。
- 对于 ESKF 逻辑,将预测的误差状态合并回主导航状态。
- 后处理考核:通过计算均方根误差与残差序列,评估滤波器在动态环境下的收敛速度与稳态精度。
关键算法与技术细节
- 捷联惯导机械编排:算法内部实现了从机体系到导航系的坐标变换矩阵实时更新,基于当前姿态角计算旋转矩阵 C_b_n,并对重力加速度进行抵消处理以获得真实运动加速度。
- 十五维状态空间建模:系统状态向量定义为 Px, Py, Pz, Vx, Vy, Vz, Roll, Pitch, Yaw, Acc_bias_x/y/z, Gyro_bias_x/y/z,确保了对系统全部运动属性及传感器不稳定性的全覆盖。
- 扩展卡尔曼滤波(EKF):针对姿态变换引起的非线性几何关系,在每一步循环中动态更新系统雅可比矩阵。代码逻辑中包含了对姿态角变化驱动速度变化的导数映射处理。
- 误差状态卡尔曼滤波(ESKF):通过一个辅助的线性滤波器处理导航系统的误差量,随后定期将误差补偿回名义状态,这种做法在高速、高采样率环境下更具数值稳定性。
- 传感器自校正技术:算法通过观测数据与预测数据的残差,不断更新状态向量末尾的 6 个零偏参数。仿真结果显示,陀螺仪漂移估计能逐渐逼近预设的真实漂移值,大幅降低了姿态发散速率。
系统要求
- 软件环境:MATLAB R2018b 及以上版本(需支持基本的矩阵运算与绘图功能)。
- 工具箱需求:MATLAB 标准库(无需额外的高级传感器融合工具箱,算法逻辑均为底层原生代码实现)。
- 硬件建议:为了流畅显示三维轨迹图示,建议配备基础图形显示硬件。
使用方法
- 配置环境:将相关脚本文件放置于同一 MATLAB 工作目录下。
- 运行仿真:执行主程序逻辑,系统将自动开始 60 秒的高速车辆行驶过程模拟。
- 查看输出:
- 第一张图表将显示三维轨迹,可对照观察 GNSS 离散点与融合后的平滑轨迹。
- 命令行窗口将实时输出 EKF 和 KF 的平均位置误差指标。
- 误差分析图表可用于观察车辆在转弯(20s-40s 期间)时的精度波动。
- 调优实验:用户可自行修改传感器噪声参数(如 accel_noise 或 gyro_bias),观测滤波器在不同性能传感器下的鲁棒性。