【MATLAB例程】平面上的组合导航例程,使用EKF融合IMU和GNSS数据,8维状态量和2维观测量,附代码下载链接

在这里插入图片描述

文章目录

  • 程序详解
    • 概述
    • 系统架构
    • 核心数学模型
    • 性能评估
    • 算法特点
  • 运行结果
  • MATLAB源代码

程序详解

概述

本代码实现基于扩展卡尔曼滤波器(EKF)的二维组合导航系统,融合IMU(惯性测量单元)和GNSS(全球导航卫星系统)数据,实现精确的位置和速度估计。该系统采用8维误差状态模型,在圆形轨迹上进行仿真验证。

系统架构

状态向量定义

系统采用8维状态向量:

x=[pxpyvxvyψbgbaxbay]\mathbf{x} = \begin{bmatrix} p_x \\ p_y \\ v_x \\ v_y \\ \psi \\ b_g \\ b_{ax} \\ b_{ay} \end{bmatrix}x=pxpyvxvyψbgbaxbay

其中:

  • px,pyp_x, p_ypx,py:X、Y方向位置 (m)
  • vx,vyv_x, v_yvx,vy:X、Y方向速度 (m/s)
  • ψ\psiψ:航向角 (rad)
  • bgb_gbg:陀螺仪偏差 (rad/s)
  • bax,bayb_{ax}, b_{ay}bax,bay:X、Y方向加速度计偏差 (m/s²)

观测向量定义

观测向量为2维GNSS位置观测:

z=[pxpy]\mathbf{z} = \begin{bmatrix} p_x \\ p_y \end{bmatrix}z=[pxpy]

核心数学模型

状态转移方程

系统的非线性状态转移方程为:

xk+1=f(xk,uk,wk)\mathbf{x}_{k+1} = f(\mathbf{x}_k, \mathbf{u}_k, \mathbf{w}_k)xk+1=f(xk,uk,wk)

具体形式:

px,k+1=px,k+vx,k⋅Δtpy,k+1=py,k+vy,k⋅Δtvx,k+1=vx,k+(fx,k−bax,k)cos⁡ψk−(fy,k−bay,k)sin⁡ψk⋅Δtvy,k+1=vy,k+(fx,k−bax,k)sin⁡ψk+(fy,k−bay,k)cos⁡ψk⋅Δtψk+1=ψk+(ωk−bg,k)⋅Δtbg,k+1=bg,kbax,k+1=bax,kbay,k+1=bay,k\begin{aligned} p_{x,k+1} &= p_{x,k} + v_{x,k} \cdot \Delta t \\ p_{y,k+1} &= p_{y,k} + v_{y,k} \cdot \Delta t \\ v_{x,k+1} &= v_{x,k} + (f_{x,k} - b_{ax,k}) \cos\psi_k - (f_{y,k} - b_{ay,k}) \sin\psi_k \cdot \Delta t \\ v_{y,k+1} &= v_{y,k} + (f_{x,k} - b_{ax,k}) \sin\psi_k + (f_{y,k} - b_{ay,k}) \cos\psi_k \cdot \Delta t \\ \psi_{k+1} &= \psi_k + (\omega_k - b_{g,k}) \cdot \Delta t \\ b_{g,k+1} &= b_{g,k} \\ b_{ax,k+1} &= b_{ax,k} \\ b_{ay,k+1} &= b_{ay,k} \end{aligned}px,k+1py,k+1vx,k+1vy,k+1ψk+1bg,k+1bax,k+1bay,k+1=px,k+vx,kΔt=py,k+vy,kΔt=vx,k+(fx,kbax,k)cosψk(fy,kbay,k)sinψkΔt=vy,k+(fx,kbax,k)sinψk+(fy,kbay,k)cosψkΔt=ψk+(ωkbg,k)Δt=bg,k=bax,k=bay,k

其中:

  • fx,k,fy,kf_{x,k}, f_{y,k}fx,k,fy,k:IMU测量的比力 (m/s²)
  • ωk\omega_kωk:IMU测量的角速度 (rad/s)
  • Δt\Delta tΔt:采样时间间隔

状态转移雅可比矩阵

EKF需要计算状态转移函数的雅可比矩阵 F\mathbf{F}F

F=∂f∂x∣xk∣k−1\mathbf{F} = \frac{\partial f}{\partial \mathbf{x}} \bigg|_{\mathbf{x}_{k|k-1}}F=xfxkk1

主要的非零元素包括:

F1,3=F2,4=ΔtF3,5=−(fx−bax)sin⁡ψ−(fy−bay)cos⁡ψ⋅ΔtF4,5=(fx−bax)cos⁡ψ−(fy−bay)sin⁡ψ⋅ΔtF3,7=F4,8=−cos⁡ψ⋅ΔtF3,8=F4,7=sin⁡ψ⋅ΔtF5,6=−Δt\begin{aligned} F_{1,3} &= F_{2,4} = \Delta t \\ F_{3,5} &= -(f_x - b_{ax})\sin\psi - (f_y - b_{ay})\cos\psi \cdot \Delta t \\ F_{4,5} &= (f_x - b_{ax})\cos\psi - (f_y - b_{ay})\sin\psi \cdot \Delta t \\ F_{3,7} &= F_{4,8} = -\cos\psi \cdot \Delta t \\ F_{3,8} &= F_{4,7} = \sin\psi \cdot \Delta t \\ F_{5,6} &= -\Delta t \end{aligned}F1,3F3,5F4,5F3,7F3,8F5,6=F2,4=Δt=(fxbax)sinψ(fybay)cosψΔt=(fxbax)cosψ(fybay)sinψΔt=F4,8=cosψΔt=F4,7=sinψΔt=Δt

观测方程

观测方程为线性的:

zk=Hxk+vk\mathbf{z}_k = \mathbf{H}\mathbf{x}_k + \mathbf{v}_kzk=Hxk+vk

观测雅可比矩阵 H\mathbf{H}H 为:

H=[1000000001000000]\mathbf{H} = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \end{bmatrix}H=[1001000000000000]

噪声模型

过程噪声协方差矩阵Q:

Q=diag[(σaΔt2)2I2×2(σaΔt)2I2×2(σωΔt)2(σbgΔt)2(σbaΔt)2I2×2]\mathbf{Q} = \text{diag}\begin{bmatrix} (\sigma_{a} \Delta t^2)^2 \mathbf{I}_{2×2} \\ (\sigma_{a} \Delta t)^2 \mathbf{I}_{2×2} \\ (\sigma_{\omega} \Delta t)^2 \\ (\sigma_{bg} \Delta t)^2 \\ (\sigma_{ba} \Delta t)^2 \mathbf{I}_{2×2} \end{bmatrix}Q=diag(σaΔt2)2I2×2(σaΔt)2I2×2(σωΔt)2(σbgΔt)2(σbaΔt)2I2×2

其中:

  • σa=0.01\sigma_a = 0.01σa=0.01 m/s²:加速度计噪声标准差
  • σω=0.1°\sigma_{\omega} = 0.1°σω=0.1° = 0.0017 rad/s:陀螺仪噪声标准差
  • σbg=0.01°\sigma_{bg} = 0.01°σbg=0.01° = 0.00017 rad/s:陀螺仪偏差噪声标准差
  • σba=0.001\sigma_{ba} = 0.001σba=0.001 m/s²:加速度计偏差噪声标准差

观测噪声协方差矩阵R:

R=σgnss2I2×2\mathbf{R} = \sigma_{gnss}^2 \mathbf{I}_{2×2}R=σgnss2I2×2

其中 σgnss=3\sigma_{gnss} = 3σgnss=3 m:GNSS位置观测噪声标准差

性能评估

系统通过以下指标评估滤波性能:

  1. 位置均方根误差(RMSE)
    RMSEpos=1N∑k=1N[(px,kest−px,ktrue)2+(py,kest−py,ktrue)2]\text{RMSE}_{pos} = \sqrt{\frac{1}{N}\sum_{k=1}^{N}[(p_{x,k}^{est} - p_{x,k}^{true})^2 + (p_{y,k}^{est} - p_{y,k}^{true})^2]}RMSEpos=N1k=1N[(px,kestpx,ktrue)2+(py,kestpy,ktrue)2]

  2. 速度均方根误差(RMSE)
    RMSEvel=1N∑k=1N[(vx,kest−vx,ktrue)2+(vy,kest−vy,ktrue)2]\text{RMSE}_{vel} = \sqrt{\frac{1}{N}\sum_{k=1}^{N}[(v_{x,k}^{est} - v_{x,k}^{true})^2 + (v_{y,k}^{est} - v_{y,k}^{true})^2]}RMSEvel=N1k=1N[(vx,kestvx,ktrue)2+(vy,kestvy,ktrue)2]

算法特点

  1. 多传感器融合:有效融合高频IMU数据和低频GNSS观测
  2. 偏差估计:实时估计并补偿陀螺仪和加速度计偏差
  3. 误差状态建模:采用误差状态方法提高线性化精度
  4. 实时性能:适合在线实时导航应用

该EKF组合导航算法在保持计算效率的同时,显著提高了导航精度,特别是在GNSS信号中断期间仍能保持较好的位置估计性能。

运行结果

轨迹对比:
8维状态量和2维观测量
各轴位移与速度曲线对比:
在这里插入图片描述
在这里插入图片描述

误差对比:
在这里插入图片描述

命令行截图:
在这里插入图片描述

MATLAB源代码

部分代码如下:

% 二维状态量的EKF例程(有严格的组合导航推导)
% 基于8维误差状态模型:位置、速度、航向、航向角角速度偏差、加速度计偏差
% 基于2维的观测模型:XY两个轴的位置
% 作者:matlabfilter
% 2025-08-27/Ver1clear; clc; close all;
rng(0); % 固定随机种子%% 系统参数设置
dt = 0.1;           % 采样时间间隔 (s)
total_time = 100;   % 总仿真时间 (s)
N = total_time / dt; % 采样点数%% 噪声参数设置
% IMU噪声参数
gyro_noise_std = 0.1 * pi/180;      % 陀螺噪声标准差 (rad/s)
accel_noise_std = 0.01;             % 加速度计噪声标准差 (m/s^2)
gyro_bias_std = 0.01 * pi/180;      % 陀螺偏差标准差 (rad/s)
accel_bias_std = 0.001;             % 加速度计偏差标准差 (m/s^2)% GNSS观测噪声
gnss_pos_noise_std = 3;             % GNSS位置噪声标准差 (m)%% 过程噪声协方差矩阵Q (8×8)
% 状态顺序:[位置(2), 速度(2), 航向角(1), 航向角角速度偏差(1), 加速度计偏差(2)]
Q = zeros(8, 8);
% 位置噪声(通过速度积分产生)
Q(1:2, 1:2) = eye(2) * (accel_noise_std * dt^2)^2;
% 速度噪声
Q(3:4, 3:4) = eye(2) * (accel_noise_std * dt)^2;
% 姿态噪声
Q(5, 5) = eye(1) * (gyro_noise_std * dt)^2;
% 陀螺偏差噪声
Q(6, 6) = eye(1) * (gyro_bias_std * dt)^2;
% 加速度计偏差噪声
Q(7:8, 7:8) = eye(2) * (accel_bias_std * dt)^2;

代码下载链接:
https://download.csdn.net/download/callmeup/91800451

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921447.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react生命周期,详细版本

React 组件的生命周期分为三个阶段:挂载(Mounting)、更新(Updating) 和 卸载(Unmounting)。以下是类组件生命周期的详细说明(基于 React 16.3+ 版本): 一、挂载阶段(Mounting) 组件实例被创建并插入 DOM 时的流程: constructor(props) ○ 用途:初始化状态(this…

腾讯最新开源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架构,重新定义视频音效新SOTA!

一、模型介绍HunyuanVideo-Foley 是腾讯混元团队在2025年8月底开源的一款端到端视频音效生成模型。它旨在解决AI生成视频“有画无声”的痛点,通过输入视频和文本描述,就能自动生成电影级别的同步音效,显著提升视频的沉浸感。它是专为视频内容…

计算机原理(二)

计算机原理系列 欢迎大家关注「海拉鲁知识大陆」 多交流不迷路 计算机原理(一) 继续上一篇计算机原理(一)深入了解程序执行部分,进一步说说程序在冯诺依曼模型上如何执行。如果没有了解的童鞋可以查看我上一篇文章。…

【设计模式】 工厂方法模式

系列文章目录 文章目录系列文章目录需要了解工厂制造细节吗?简单工厂模式实现工厂方法模式的实现简单方法? 工厂方法?总结需要了解工厂制造细节吗? 我们在前面的文章中为大家介绍了简单工厂模式,我们知道 简单工厂模式…

详解 Java 中的 CopyOnWriteArrayList

目录 【1】CopyOnWriteArrayList 简介 【2】核心原理 1.底层数据结构 2.写时复制机制 【3】CopyOnWriteArrayList常用方法及实例 1.添加元素方法 add () 2.获取元素方法 get () 3.删除元素方法remove() 【4】优缺点分析 【5】适用场景 【6】总结 【1】CopyOnWriteAr…

新手SEO优化快速起步教程

本教程专为SEO新手设计,帮助您快速上手优化工作。我们将一步步带您了解基础概念,包括高效挖掘关键词的方法、内容优化的核心技巧,以及网站基础设置的关键步骤。后续还会讲解提升排名的实用策略、如何监控效果并进行调整,确保您能系…

Minecraft图片搜索技巧

以下是更多专注 Minecraft 内容的高质量社区平台,涵盖建筑展示、模组/材质分享、实机截图、艺术创作等方向,按类型分类整理:---一、国际知名综合社区平台 特点 链接 CurseForge 模组/材质/数据包第一仓库,作者更新快,支…

数学建模-非线性规划(NLP)

1-理论知识介绍应用2-基于matlab实现非线性规划1)例1% 清除工作台和命令行 clear;clc; x0[0 0 0]; A [-1 1 -1]; b 0; [x,value] fmincon(f1,x0,A,b,[],[],[],[],nonlfun1) function f f1(x)f x(1)^2x(2)^2x(3)^28; end function [c,ceq] nonlfun1(x)c [x(1)…

人工智能学习:什么是seq2seq模型

一、seq2seq模型 Seq2Seq(Sequence-to-Sequence)模型是一种用于处理序列转换问题的深度学习模型,广泛应用于机器翻译、文本摘要、对话系统、语音识别等领域。Seq2Seq模型的核心思想是通过一个编码器(Encoder)将输入序列编码为一个固定长度的上下文向量(Context Vector),…

生态 | 华院计算与深至科技达成战略合作,携手推动AI+医学影像算法升级迭代

8月25日,华院计算技术(上海)股份有限公司(以下简称“华院计算”)与上海深至信息科技有限公司(以下简称“深至科技”)正式签署战略合作协议。双方将秉持“优势互补、资源共享、战略协同、共同发展…

详解MySQL环境变量配置及其在备份中的应用

正确配置MySQL环境变量是保障数据库稳定运行和高效管理的基础。这些变量涵盖了从内存分配、连接设置到日志行为等方方面面,直接决定了数据库的性能表现和功能特性。对于数据库管理员而言,熟练掌握环境变量的配置,是进行性能调优和故障排查的必…

scikit-learn零基础配置(含python、anaconda)

一、Anaconda环境搭建 1、关于Anaconda Anaconda 是一个非常 popular 的 Python 发行版,它不仅包含了 Python 语言本身,还预装了众多常用的科学计算库,如 NumPy、Pandas、Matplotlib 等,能够极大地方便用户的开发和数据分析工作。…

RAG提示词(日本語版)

RAG提示词(日本語版) System Message # 知能型質問応答アシスタント(RAGシステムプロンプト)## 役割定義 あなたは「知能型質問応答アシスタント」として、提供されたコンテキスト情報に基づいてユーザーの質問に回答する専門的な…

qData 数据中台【开源版】发布 1.0.5 版本,全面提升规则治理、非结构化数据处理与部署体验

2025年9月3日 —— 企业级开源数据中台 qData 开源版 正式发布 1.0.5 版本。本次更新聚焦 规则治理一体化、非结构化数据支持、以及开源版的体验与部署优化,进一步提升规则复用能力、数据接入广度与运维效率,帮助企业和开发者更轻松地构建高质量数据治理…

RecSys:用户行为序列建模以及DIN、SIM模型

引言 在推荐系统中,用户历史行为序列是极其重要的信息源。用户最近的点击、点赞、收藏、转发等行为能够有效反映其即时兴趣,无论是在召回、粗排还是精排阶段,合理利用这些行为序列都能显著提升推荐效果。本文将系统介绍用户行为序列建模的几…

QGIS二次开发01:环境配置-OSGeo4W镜像

写在前面: 本笔记根据多方资料整理而成,旨在为QGIS二次开发提供学习参考。内容仅供交流学习,欢迎共同探讨。 一、关于QGIS QGIS 是一个功能强大的桌面GIS软件本身,为用户提供了图形化界面(GUI)来进行地图制…

对接旅游行业安全需求:旅游安全急救实训室的功能构建与育人目标

随着我国旅游行业的快速发展,游客安全需求日益凸显,安全应急处置能力已成为旅游服务人才的核心竞争力。旅游安全急救实训室作为旅游服务与管理专业中的重要教学场所,其功能构建与育人目标影响人才培养质量与行业安全水平。点击获取方案 一、行…

Typora处理markdown文件【给.md文档加水印】

①文件→偏好设置→外观→打开主题文件夹②在打开的文件夹中放入水印图像③右键点击github.css文件后,点击编辑,进入编辑页面④将代码块中内容粘贴到文件最后 更多效果请自行探索 #write::before {content: "CSDN果子当夜宵:bigxie.blog…

基于单片机的六足机器人控制系统设计

基于单片机的六足机器人控制系统设计摘 要本设计主要是基于单片机的六足机器人控制系统设计,综合分析六足机器人的结构、步态和控制算法,结合云端服务器、WIFI 技术、蓝牙技术、语音识别技术和手势识别技术进行多种控制模式的设计,并提出不同…

RK3568 Trust

文章目录1、环境介绍2、前言3、ARM TrustZone3.1、什么是ARM TrustZone3.2、cpu特权等级3.3、ARM Trusted Firmware4、Rockchip 平台的 Trust4.1、实现机制4.2、启动流程4.3、生命周期4.4、Trust 编译打包流程分析5、总结1、环境介绍 硬件:飞凌ok3568-c开发板 软件…