【MATLAB例程】UKF(无迹卡尔曼滤波)的组合导航,状态量为平面8维,观测量为XY坐标。附中文注释

【MATLAB代码】UKF(无迹卡尔曼滤波)的组合导航,状态量为平面8维,观测量为XY坐标。附完整代码,有中文注释 本文介绍了一个基于无迹卡尔曼滤波器(UKF)的二维组合导航系统,该系统融合IMU和GNSS数据进行导航定位。主要内容包括:1) 系统采用8维误差状态模型,包含位置、速度、姿态及传感器偏差;2) 详细推导了噪声参数设置和协方差矩阵初始化;3) 通过圆形轨迹仿真验证算法性能,对比了纯IMU积分和UKF融合结果;4) 提供了完整的MATLAB实现代码,包含UKF预测和更新步骤。仿真结果表明,UKF能有效融合多源传感器数据,显著提高导航精度。 阅读详情

在这里插入图片描述

代码实现了一个基于无迹卡尔曼滤波器(Unscented Kalman Filter, UKF)的二维组合导航系统,融合了惯性测量单元(IMU)和全球导航卫星系统(GNSS)的数据。该系统采用8维误差状态模型,能够实时估计载体的位置、速度、姿态以及传感器偏差。

程序简介

系统概述

  • IMU(惯性测量单元):就像人的内耳平衡器官,能感知加速度和旋转
  • GNSS(全球导航卫星系统):就像GPS,能提供精确的位置信息

核心技术:无迹卡尔曼滤波:UKF

传统的扩展卡尔曼滤波器需要对复杂的非线性方程进行线性化近似,就像用直线段拼接曲线一样,会产生误差。而UKF采用了一种更聪明的方法:

  • 精确采样:选择一些关键的"采样点"来代表整个系统状态的分布
  • 直接传播:让这些采样点直接通过真实的非线性方程
  • 统计重构:从传播后的采样点重新构造出系统状态的统计特性

这就像用多个探路者走不同路线,然后汇总信息得出最佳路径,比简单的线性近似更准确。

系统状态设计

8维状态向量

系统跟踪8个关键状态量:

位置信息(2维)

  • X方向位置:载体在东西方向的坐标
  • Y方向位置:载体在南北方向的坐标

速度信息(2维)

  • X方向速度:载体在东西方向的运动速度
  • Y方向速度:载体在南北方向的运动速度

姿态信息(1维)

  • 航向角:载体的朝向,相当于指南针读数

传感器偏差(3维)

  • 陀螺仪偏差:陀螺仪的系统性误差
  • X方向加速度计偏差:X轴加速度计的系统性误差
  • Y方向加速度计偏差:Y轴加速度计的系统性误差

低频GNSS数据融合

GNSS以较低的频率(1Hz,每秒一次)提供精确的位置信息:

GNSS数据特点:

  • 精度高:通常能达到米级精度
  • 频率低:更新较慢,不能捕捉快速运动
  • 受环境影响:在隧道、高楼间可能失效

融合策略:
当有GNSS数据时,系统会:

  1. 比较GNSS观测位置与IMU推算位置
  2. 计算两者差异(新息)
  3. 根据各传感器的可信度分配权重
  4. 智能地修正整个状态估计

算法工作流程

预测阶段

每个时间步,系统都会基于当前状态和IMU数据进行预测:

  1. 生成采样点:围绕当前状态生成多个代表性采样点
  2. 状态传播:让每个采样点通过运动模型传播到下一时刻
  3. 统计汇总:从传播后的采样点计算预测状态和不确定度

更新阶段

当收到GNSS观测数据时:

  1. 观测预测:预测每个采样点对应的观测值
  2. 计算增益:根据预测不确定度和观测噪声计算卡尔曼增益
  3. 状态修正:使用增益矩阵融合观测信息,修正状态估计
  4. 协方差更新:更新状态估计的不确定度

仿真验证场景

运动模型

代码模拟了一个典型的测试场景:载体沿半径50米的圆形轨迹匀速运动。这种轨迹具有:

  • 连续的加速度变化(向心加速度)
  • 恒定的角速度
  • 可预测的真实轨迹用于性能评估

传感器模拟

IMU传感器模拟:

  • 在真实的加速度和角速度基础上添加随机噪声
  • 模拟传感器偏差的随机游走特性
  • 考虑实际传感器的噪声水平

GNSS传感器模拟:

  • 在真实位置基础上添加高斯白噪声
  • 模拟较低的更新频率
  • 间歇性提供观测数据

性能评估与对比

对比基准

代码提供了三种导航方案的对比:

纯IMU积分:

  • 优点:高频率,短期精度高,不依赖外部信号
  • 缺点:误差累积严重,长期漂移明显

纯GNSS定位:

  • 优点:无累积误差,长期稳定
  • 缺点:更新频率低,动态响应差,信号容易中断

UKF组合导航:

  • 综合两者优势:高频率 + 长期稳定
  • 智能误差修正:自动校准传感器偏差
  • 鲁棒性强:单一传感器失效时仍能工作

性能指标

系统使用均方根误差(RMSE)评估性能:

  • 位置RMSE:反映定位精度
  • 速度RMSE:反映速度估计精度

典型结果显示,UKF组合导航的精度显著优于单一传感器方案。

运行结果

二维轨迹图像对比:
在这里插入图片描述
两个维度的位置曲线对比:
在这里插入图片描述
两个维度的速度曲线对比:
在这里插入图片描述
误差曲线:
在这里插入图片描述

MATLAB源代码

部分代码如下:

% 二维状态量的UKF例程(有严格的组合导航推导)
% 基于8维误差状态模型:位置、速度、航向、陀螺偏差、加速度计偏差
% 4维观测量:XY位置(2)
% 作者:matlabfilter(原创程序,请勿翻卖)
% 2025-08-28/Ver1

clear; 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;

%% 观测噪声协方差矩阵R (2×2)
% 观测量:GNSS位置(2) 
R = eye(2) * gnss_pos_noise_std^2;

%% 初始化
% 真实轨迹参数(圆形运动)
radius = 50;        % 圆形轨迹半径 (m)

完整代码下载链接:
https://download.youkuaiyun.com/download/callmeup/91802206

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

【MATLAB代码,多无人机路径规划6】基于RRT与动态窗口法(RRT+DWA)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码 本文基于MATLAB实现四架无人机在二维动态障碍环境中的协同路径规划,采用RRT+DWA算法,支持参数自定义。通过对比RRT+APF与RRT+DWA的避障效果,可视化轨迹、净间隙、速度加速度及航程等,输出任务完成率与碰撞统计。代码可直接运行,订阅专栏后获取完整源码,支持定制与讲解。 阅读详情

相关推荐

【MATLAB代码】基于RRT与人工势场法(RRT+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT+APF算法实现多无人机动态路径规划与避障仿真,通过MATLAB完整代码可直接运行。对比传统APF方法,该方案在轨迹平滑性、安全净间隙及到达效率上表现更优。支持参数自定义,订阅专栏后可获取源码与定制服务,适用于科研与工程实践。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 189

MATLAB 不等间隔一阶低通:按真实时间更新,并把长缺口重置说清楚

不等间隔数据若直接套固定平滑系数,会改变实际时间常数。本文从左端零阶保持模型推导一阶低通更新,分别计算衰减与输入系数,显式标记长缺口重置,并给出解析解对照、时序负例、边界测试和完整 MATLAB 代码。

hxy_programmer的博客 330

【MATLAB代码,无人机避障7】基于RRT*与人工势场法(RRT*+APF)的多无人机二维动态路径规划与避障。订阅专栏后可查看完整代码

本文基于RRT与人工势场法(APF)实现四架无人机在二维动态障碍环境中的协同路径规划与避障。通过RRT优化全局路径,结合APF进行局部避碰,支持参数自定义,提供完整MATLAB代码,可直接运行并生成轨迹、安全净间隙、速度加速度及航程等可视化结果,对比RRT+APF与RRT*+APF性能,适用于科研与教学。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 230

MATLAB 与 Python 在科学计算中的实际差异

本文围绕 MATLAB 与 Python 在科学计算中的实际应用展开比较,分析两者在软件生态、矩阵运算、数值计算性能、开发环境及工程部署方面的差异。结合代码示例,介绍两种语言在矩阵运算和数组处理中的不同实现方式,并讨论影响程序运行效率的主要因素。在此基础上,结合控制工程、数值分析、数据科学和机器学习等研究方向,分析两种语言各自的适用场景,并介绍跨语言协同开发的基本思路。希望通过本文的讨论,帮助读者更深入地理解两种工具的特点,为科研工作中的技术选型提供参考。

weixin_47502228的博客 621

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

HC32F460 FPU实战:从零开启硬件浮点加速

本文详细介绍了如何在HC32F460开发板上启用和优化FPU(浮点运算单元),以显著提升硬件浮点运算性能。从工程配置、关键代码修改到实战优化技巧,全面解析FPU加速的实现方法,并分享常见问题的解决方案,帮助开发者避免常见陷阱,充分发挥HC32F460的硬件潜力。

weixin_42620340的博客 348

MATLAB 优秀开源项目与工具箱推荐:涵盖通信、图像处理、脑机接口等九大领域

本文梳理了无线通信、图像处理、脑机接口等九个领域的代表性MATLAB开源项目,涵盖信道建模(QuaDRiGa)、智能表面仿真(SimRIS)、视觉特征提取(VLFeat)、三维网格生成(Iso2Mesh)及脑电信号分析(EEGLAB、BCILAB)等关键技术。通过解析其数学模型与源码实现,揭示科研工具如何将理论算法转化为可复现的工程计算流程,为科研人员提供高效、可扩展的开发参考。

weixin_47502228的博客 418

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2176

【MATLAB源码】基于颜色加权与连通域分析的高抬腿频率测量系统

本文提出一种基于图像处理的高抬腿动作频率自动化测量系统,通过高清摄像机采集视频,结合颜色加权、形态学操作与连通域分析,精准提取反光标志区域并统计动作次数。实验表明,该方法相比人工计数更高效、准确,误差小,可为运动训练提供量化数据支持。

2302_78339041的博客 235

金蝶K3系统物料主数据后台表对应字段一览

我们说到物料表,一般是指t_icitem,但正确的说t_icitem并不是一张有,而是一张视图,不过我们对于数据库物料表中的大部分操作,都是通过此视图来完成。比如经常通过此视图,来成批修改数量,单价精度,是否启用批次等一些字段,有的时候,对于账套已经启用,并且已经有业务发生的物料,有一些关键属性也需要通过修改物料表t_icitem来进行。 当然修改的时候,需要考虑一些前提条件的。 比如说我有一个客户新建的账套,在月底结账时发现,要改一种成本核算方法,启用时用的是加权平法,现在想改成移动平均法,这样的情况,

hzfw2008的博客 1万+

Ollama + OpenCLAW 在 Windows 系统的完整部署指南

Windows 部署优先选 WSL2,避免原生环境的权限/兼容性问题;网络问题通过“离线包+国内镜像”解决,版本问题通过升级 Node.js 解决;内存不足可切换轻量模型或增大 WSL2 内存分配;核心链路:Ollama(模型管理)→ Gateway(网关)→ OpenCLAW TUI(交互),各组件启动正常即可稳定使用。

lpfasd123的博客 2824

【MATLAB例程介绍】(17)永磁同步电机(PMSM)基于自适应无迹卡尔曼滤波(AUKF)的电流噪声在线估计。测量噪声协方差自适应与转速估计对比仿真

本文基于MATLAB构建永磁同步电机(PMSM)仿真模型,提出一种自适应无迹卡尔曼滤波(AUKF)算法,实现电流测量噪声协方差的在线估计,并联合观测机械转速、转子电角度及电流状态。针对传统UKF因固定噪声参数在噪声变化时性能下降的问题,引入新息协方差匹配机制,通过指数加权统计更新噪声协方差,有效提升状态估计鲁棒性。仿真结果表明,在分阶段变化的测量噪声条件下,AUKF能准确跟踪噪声水平,显著降低转速与角度估计误差,优于标准UKF。程序结构清晰,含完整注释与可视化输出,适用于电机控制与状态估计研究。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 336

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

zheaa的博客 4828

第【135】期--基于 M-ASK 调制的数字通信系统设计与仿真--matlab完整代码

本文设计并仿真了一个完整的 M 进制幅移键控(M-ASK)数字通信系统。系统由发射机、加性高斯白噪声(AWGN)信道和接收机三部分构成。发射机完成符号映射、上采样、根升余弦(RRC)脉冲成形、数模转换与射频调制;接收机通过相干解调、低通滤波、降采样、匹配滤波和幅度判决恢复原始符号。为了解决帧同步问题,系统在数据帧头部插入了由巴克码构造的前导序列,接收端利用相关检测完成定时对齐,并通过蒙特卡洛仿真验证了系统在不同信噪比条件下的误码性能,仿真结果与理论曲线吻合较好。关键词:M-ASK;脉冲成形;匹配滤波;

qq_35027690的博客 312

QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建

一、安装MDE 1.解压qualcomm_mde.win.2.4_installer_2.4.1.4压缩包,安装MDE_WIN_2.4.1.4_x64.exe,路径自定义 点击NEXT, 安装完成后,点击Finish. 完成安装后,桌面生成快捷方式

心跳包的博客 6079

Newton & Nvidia 开源 GPU 加速机器人仿真器入门教程(一)

Newton 是一个 GPU 加速、可扩展和可微分的物理仿真引擎,专为机器人、研究和高级仿真工作流而设计。Newton 基于 NVIDIA Warp 并集成了 MuJoCo Warp,为用户和开发人员提供了高性能仿真、现代 Python API 和灵活的架构。

机器人控制与仿真应用 1482

MATLAB优化算法实战:从无约束到约束优化

优化问题在工程中无处不在:参数调优、路径规划、资源分配、控制器设计都需要优化算法。MATLAB的Optimization Toolbox提供了从简单到复杂的完整优化工具链。

2501_93482674的博客 177

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均

明确半开区间、最右端点、越界及空箱规则,用 histcounts 与 accumarray 同时得到计数、贡献和、样本平均贡献及箱号。附 MATLAB R2025b 原生边界、非法输入、1000×105 独立参考测试和错误实现负例。

hxy_programmer的博客 313

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性

MATLAB数值计算中的精度问题源于浮点数的有限表示。双精度浮点数(64位)虽具约16位十进制有效数字,但无法精确表示如0.1等十进制小数,导致0.1+0.2≠0.3。浮点运算存在舍入误差,其大小受机器精度(eps(1)≈2.22e-16)和数的量级影响,大数掩盖小数现象常见。误差包括舍入误差、截断误差及输入误差,且在复杂算法中可能累积放大。数值稳定性取决于算法对扰动的敏感性,同一数学问题不同算法可能表现迥异。因此,理解浮点机制、误差传播与算法稳定性,是确保计算结果可信的关键。

weixin_47502228的博客 393

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PINN-LSTM物理信息神经网络的CO2羽流分布预测方法,四模型对比MATLAB代码

PINN-LSTM物理信息神经网络的CO2羽流分布预测方法,四模型对比MATLAB代码

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 478

MATLAB 绘图与科研论文插图制作:图形设计、统计表达与矢量导出

本文以MATLAB为例,系统阐述科研论文插图的高效绘制与排版策略。强调从研究问题出发选择合适图形形式,合理使用曲线、散点、误差带及差值面板;基于论文版面预设图幅尺寸、字体与线宽,统一风格以提升可读性;通过tiledlayout与exportgraphics实现多子图布局与高质量矢量/位图导出。结合模拟数据示例,展示如何清晰呈现均值、标准差与差异趋势,并指出误差带、拟合线与统计标注的正确表达方式,确保图形忠实于数据且适应投稿要求。

weixin_47502228的博客 289

【MATLAB源码】基于机器视觉的羽毛球灵敏度步伐训练装置

随着机器视觉技术在体育训练领域的深入应用,羽毛球这类对技术要求高、动作结构复杂的项目迎来了新的训练手段。传统羽毛球步伐训练存在主观性强、反馈周期长、训练效果难以量化等问题,高水平运动员的步伐优化往往依赖经验性指导,缺乏科学化、系统化的训练方法。本文设计了一款基于机器视觉的羽毛球步伐灵敏度训练装置,通过集成可控射灯、二维云台与摄像头,自动调整射灯位置和光圈以精准标定训练区域;利用机器视觉识别原理实时监控球员步伐,并将采集图像在 MATLAB 平台进行帧差法处理,实现脚步动作的正确识别。实验表明,该装置可为初学

2302_78339041的博客 219

第【134】期--基于OFDMA资源块分配的多用户调度算法仿真--matlab完整代码

正交频分多址(OFDMA)是 4G/5G 移动通信系统下行链路的核心多址方式,其本质是将时频资源划分为若干资源块(RB),由基站调度器在每一个调度周期内决定每个资源块分配给哪个用户。调度策略直接决定了系统吞吐量与用户间公平性,二者往往相互制约。本文建立了一个调度器层面的 OFDMA 多用户仿真模型,在没有需求冲突限制的条件下,实现并对比了三种典型调度算法:轮询调度(Round Robin, RR)、最大载干比调度(Max-Rate)与比例公平调度(Proportional Fair, PF)。

qq_35027690的博客 205

MATLAB 稳健计算三维向量夹角:缩放、atan2 与零向量契约

通过最大绝对分量缩放与 atan2 稳健计算三维向量无符号夹角,明确零向量和输入类型契约。附 MATLAB R2025b 原生测试、2000 组解析几何随机用例、错误实现负例及数值精度边界。

hxy_programmer的博客 232

五模型航空发动机剩余寿命预测(CNN+LSTM+GRU+BiGRU+BiLSTM)C-MAPSS数据集+MATLAB代码

五模型航空发动机剩余寿命预测(CNN+LSTM+GRU+BiGRU+BiLSTM)C-MAPSS数据集+MATLAB代码

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 455

MATLAB 方向角平均:跨越 ±180° 时怎样计算,低合向量时为什么不应输出一个方向

用单位向量平均方向角,明确跨越±180°、低合向量保护与门限边界。附完整MATLAB实现、解析对照测试及错误算术平均负控,已完成R2025b原生运行和独立复核,说明R不等于统计置信度。

hxy_programmer的博客 322
上一篇: 【MATLAB代码】CKF(容积卡尔曼滤波)对二维非线性系统的滤波例程,非线性的状态与观测,订阅专栏后可查看完整代码
下一篇: 【MATLAB例程】CKF(容积卡尔曼滤波)对二维非线性系统的滤波例程,非线性的状态与观测,附代码下载链接
MATLAB卡尔曼
MATLAB卡尔曼 毕昇杯全国一等奖获得者 毕昇杯全国一等奖获得者 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄14年 7626粉丝 1420原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值