Kalman滤波在惯性导航及组合导航系统中的应用研究与MATLAB仿真
项目介绍
本项目专门用于研究和验证Kalman滤波算法在捷联惯性导航系统(SINS)以及GPS/SINS组合导航系统中的应用。在单惯导导航过程中,加速度计和陀螺仪的随机噪声与常值零偏会导致导航误差随时间不断发散。本项目通过引入外接GPS观测信息,利用误差状态卡尔曼滤波(ESKF)技术对系统误差进行实时估计与抑制。实验演示了在动态运动场景下,系统如何通过多源信息融合显著提升位置、速度及姿态的感知精度,并提供了完整的误差定量分析报告。
功能特性
- 动力学轨迹模拟:能够模拟物体进行三维螺旋上升运动,生成理想的参考轨迹和传感器输入数据。
- 传感器建模:实现了包含高斯白噪声和常值零偏(Bias)的加速度计与陀螺仪模型,并模拟了1Hz低频GPS定位数据。
- 捷联惯导解算:内置纯惯性处理单元,通过状态方程对比力积分获取速度与位置。
- 误差状态卡尔曼滤波:基于9维状态向量,对位置误差、速度误差和姿态误差进行实时递归估计。
- 闭环误差修正:算法能够在检测到GPS信号时,自动校正惯导系统的累积偏移。
- 可视化分析:自动生成三维路径对比图、误差时历曲线、速度分量对比图以及RMS误差统计图。
实现逻辑与算法细节
项目核心流程严格按照以下逻辑执行:
- 参数初始化与轨迹生成
系统设定采样频率为100Hz,仿真时间为60秒。程序通过余弦与正弦函数构造三维螺旋运动模型,由此推导出理想的速度与加速度。传感器数据则在理想值基础上叠加了预设的零偏(如陀螺仪0.01 rad/s)和标准差随机噪声。
- 捷联惯性导航(SINS)算法
在每个采样周期内,程序直接对加速度计输出(减去重力补偿)进行一阶数值积分得到速度,再对速度积分得出位置。此过程不引入任何外部纠偏,用于展示误差随时间线性或非线性发散的特性。
- Kalman滤波算法实现
系统采用了9维状态向量 X = [dPos(3), dVel(3), dPhi(3)]。
- 预测阶段:构建离散化状态转移矩阵 F。其中考虑了位置误差受速度误差影响,以及速度误差受加速度计输出与姿态误差(利用反对称阵简化表示)的影响。
- 协方差更新:利用 Q 阵描述传感器的建模不确定性,更新预测误差协方差 P。
- 量测更新:系统每隔1秒(100个采样周期)检测到一次GPS信号。此时构建 6x9 的观测矩阵 H,以提取位置和速度误差。计算增益 K 后,将观测残差(GPS观测值与KF预测值之差)映射到状态误差空间。
- 闭环反馈:将滤波得到的误差状态 dX 实时补偿到当前的惯导位置、速度和姿态参数中。
- 性能评价机制
算法通过计算每一时刻导航结果与真实轨迹之间的欧氏距离,得出位置误差曲线。最终利用均方根(RMS)数学方法对纯惯导和组合导航的精度进行定量分析。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:通用办公电脑即可,仿真涉及的矩阵运算对计算资源消耗较低。
- 基础知识:运行者需具备矩阵分析、自动控制理论及信号处理的基本概念。
使用方法
- 在MATLAB中打开项目文件夹。
- 直接运行仿真主函数,程序将自动开始模拟数据采集与滤波处理过程。
- 运行结束后,MATLAB将自动弹出绘图窗口,显示四组关键性能对比图。
- 观察命令行输出窗口,获取关于仿真时长、最终位置误差以及精度提升比例的详细评估报告。