UKF 无迹卡尔曼滤波

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现 本文接着分享位姿跟踪和滤波算法中用到的一些常用程序,希望为后来者减少一些基础性内容的工作时间。位姿跟踪 | 相关内容目录和链接总结(不断更新中~~~)本文分享无迹卡尔曼滤波(UKF)算法的一些基本公式和MATLAB程序。 阅读详情

参考:

UKF数学原理:

UKF的基本非线性系统描述:

The UKF takes in a simple way the unscented transformation to obtain the covariance matrices used to compute the Kalman gains. Like the standard Kalman filter, UKF proceeds with a repeated two step algorithm. The details of the UKF algorithm are as follows. Given the (nonlinear) system:

在这里插入图片描述

Define a set of sigma points x(i) s according with the scaled unscented transform previously described. Now, repeat the following steps.

计算sigma point和权重参数

It has been noticed that the distance of the lateral sigma points to the central point increases as N increases. This is not convenient, and a scaling scheme has been devised to circumvent this problem:

在这里插入图片描述

where (matrix)i means the i-th column of the matrix, and λ is a scaling parameter, such that:

在这里插入图片描述

The parameter α determines the spread of the sigma points around the centre, and usually takes a small positive value equal or less than one. The parenthesis term (N + κ) is usually equal to 3. The weighting factors are chosen as follows:

在这里插入图片描述

The parameter β is an added degree of freedom to include a priori knowledge on the original PDF. In the case of a Gaussian PDF, β = 2 is optimal.

UKF的基本预测步和更新步:

(a) Prediction

• Use the transition equation to propagate the sigma points:

在这里插入图片描述

• Obtain the mean of the propagated sigma points:

在这里插入图片描述

• Compute the a priori covariance matrix:

在这里插入图片描述

(b) Update • Use the measurement equation to obtain measurements of the propagated sigma points:

在这里插入图片描述

• Obtain the mean of the measurements:

在这里插入图片描述

• Compute the measurement covariance matrix:

在这里插入图片描述

• Obtain the Kalman gain as follows

在这里插入图片描述

• And obtain the remaining terms:

在这里插入图片描述

UKF代码实现:

%Unscented Kalman filter example
%Radar monitoring of falling body
%------------------------------------------
%Prepare for the simulation of the falling body
T=0.4; %sampling period
g=-9.81;
rho0=1.225; %air density, sea level
k=6705.6; %density vs. altitude constant
L=100; %horizontal distance radar<->object
L2=L^2;
Nf=100; %maximum number of samples

rx=zeros(3,Nf); %space for state record
rd=zeros(1,Nf); %space for drag record
ry=zeros(1,Nf); %space for measurement record
tim=0:T:(Nf-1)*T; %time
%process noise
Sw=[10^5 0 0; 0 10^3 0; 0 0 10^2]; %cov
bn=randn(3,Nf); sn=zeros(3,Nf);
sn(1,:)=sqrt(Sw(1,1))*bn(1,:); %state noise along simulation
sn(2,:)=sqrt(Sw(2,2))*bn(2,:); %" " "
sn(3,:)=sqrt(Sw(3,3))*bn(3,:); %" " "
%observation noise
Sv=10^6; %cov.
on=sqrt(Sv)*randn(1,Nf); %observation noise along simulation
%------------------------------------------
%Prepare for filtering
%space for matrices
K=zeros(3,Nf); M=zeros(3,3,Nf); P=zeros(3,3,Nf);
%space for recording er(n), xe(n)
rer=zeros(3,Nf); rxe=zeros(3,Nf);
%UKF parameters (to be edited here)
N=3; %space dimension
alpha=0.7; kappa=0; beta=2;
%pre-computation of constants
lambda= ((alpha^2)*(N+kappa))-N;
aab=(1-(alpha^2)+beta);
lN=lambda+N; LaN=lambda/lN; aaN=aab+LaN;
%------------------------------------------
%Behaviour of the system and the filter after initial state
x=[10^5; -5000; 400]; %initial state
xe=x; % initial value of filter state
xa=xe; %initial intermediate state
xs=zeros(3,7); %space for sigma points
xas=zeros(3,7); %space for propagated sigma points
yas=zeros(1,7); %" " "
P(:,:,1)=0.001*eye(3,3); %cov. non-zero init.
nn=1;
while nn<Nf+1
    %estimation recording
    rxe(:,nn)=xe; %state
    rer(:,nn)=x-xe; %error
    %system
    rx(:,nn)=x; %state recording
    rho=rho0*exp(-x(1)/k); %air density
    d=(rho*(x(2)^2))/(2*x(3)); %drag
    rd(nn)=d; %drag recording
    %next system state
    x(1)=x(1)+(x(2)*T)+sn(1,nn);
    x(2)=x(2)+((g+d)*T)+sn(2,nn);
    x(3)=x(3)+sn(3,nn);
    
    %system output
    y=on(nn)+sqrt(L2+(x(1)^2));
    ym=y; %measurement
    ry(nn)=ym; %measurement recording
    %Prediction
    %sigma points
    sqP=chol(lN*P(:,:,nn)); %matrix square root
    xs(:,7)=xe;
    xs(:,1)=xe+sqP(1,:)'; xs(:,2)=xe+sqP(2,:)';
    xs(:,3)=xe+sqP(3,:)';
    xs(:,4)=xe-sqP(1,:)'; xs(:,5)=xe-sqP(2,:)';
    xs(:,6)=xe-sqP(3,:)';
    %a priori state
    %propagation of sigma points (state transition)
    for m=1:7
        rho=rho0*exp(-xs(1,m)/k); %air density
        d=(rho*(xs(2,m)^2))/(2*xs(3,m)); %drag
        xas(1,m)=xs(1,m)+(xs(2,m)*T);
        xas(2,m)=xs(2,m)+((g+d)*T);
        xas(3,m)=xs(3,m);
    end
    %a priori state mean (a weighted sum)
    xa=0;
    for m=1:6
        xa=xa+(xas(:,m));
    end
    xa=xa/(2*lN);
    xa=xa+(LaN*xas(:,7));
    %a priori cov.
    aux=zeros(3,3); aux1=zeros(3,3);
    for m=1:6
        aux=aux+((xas(:,m)-xa(:))*(xas(:,m)-xa(:))');
    end
    aux=aux/(2*lN);
    aux1=((xas(:,7)-xa(:))*(xas(:,7)-xa(:))');
    aux=aux+(aaN*aux1);
    M(:,:,nn+1)=aux+Sw;
    %Update
    %propagation of sigma points (measurement)
    for m=1:7
        yas(m)=sqrt(L2+(xas(1,m)^2));
    end
    %measurement mean
    ya=0;
    for m=1:6
        ya=ya+yas(m);
    end
    ya=ya/(2*lN);
    ya=ya+(LaN*yas(7));
    %measurement cov.
    aux2=0;
    for m=1:6
        aux2=aux2+((yas(m)-ya)^2);
    end
    aux2=aux2/(2*lN);
    aux2=aux2+(aaN*((yas(7)-ya)^2));
    Syy=aux2+Sv;
    %cross cov
    aux2=0;
    for m=1:6
        aux2=aux2+((xas(:,m)-xa(:))*(yas(m)-ya));
    end
    aux2=aux2/(2*lN);
    aux2=aux2+(aaN*((xas(:,7)-xa(:))*(yas(7)-ya)));
    Sxy=aux2;
    %Kalman gain, etc.
    K(:,nn+1)=Sxy*inv(Syy);
    P(:,:,nn+1)=M(:,:,nn+1)-(K(:,nn+1)*Syy*K(:,nn+1)');
    xe=xa+(K(:,nn+1)*(ym-ya)); %estimated (a posteriori) state
    nn=nn+1;
end
%------------------------------------------
%display
figure(1)
subplot(1,2,1)
plot(tim,rx(1,1:Nf),'kx'); hold on;
plot(tim,rxe(1,1:Nf),'r');
title('altitude'); xlabel('seconds')
axis([0 Nf*T 0 12*10^4]);
subplot(1,2,2)
plot(tim,rx(2,1:Nf),'kx'); hold on;
plot(tim,rxe(2,1:Nf),'r');
title('velocity'); xlabel('seconds');
axis([0 Nf*T -6000 1000]);

UKF实现仿真:

在这里插入图片描述

无迹卡尔曼滤波(UKF)超详细解释 前言:本文翻译自[https://blog.csdn.net/qq_41011336/article/details/84401835] 初次翻译,如有错误请多指正。 1.UKF 非线性可以表现在两个方面:量测模型与过程模型 量测:一个雷达,量测对于目标的倾斜长度,取平方根来计算x,y的坐标。 雷达通过发射一束无线电波并通过扫描回波工作。任何物体都会在这束路径上返回一些信息给雷达。通过对于返回雷... 阅读详情

相关推荐

滤波笔记三:无迹卡尔曼滤波(UKF)

UKF

scoutee的博客 1万+

超详细讲解无迹卡尔曼(UKF)滤波(个人整理结合代码分析)

无迹卡尔曼滤波详解——matlab程序一步步解释

jiushizhemekeai的博客 6万+

深入浅出:无迹卡尔曼滤波(UKF)在C++中的实现与应用

卡尔曼滤波是一种递归估计算法,最初由Rudolf E. Kalman在1960年提出,主要用于线性系统的状态估计。它通过结合预测和测量数据,递归地更新系统状态,具有计算效率高和实时性强的特点。然而,传统的卡尔曼滤波假设系统是线性的,这限制了它在实际应用中的广泛性。首先,我们定义一个UKF类,包含UKF所需的变量和函数。// 状态向量MatrixXd P;// 状态协方差矩阵MatrixXd Q;// 过程噪声协方差矩阵。

m0_57781768的博客 1195

无迹卡尔曼滤波(UKF)

无迹卡尔曼滤波算法用于解决系统方程非线性的情况。无迹卡尔曼滤波算法采用无迹变换对状态值进行采样,采样2n+1个sigma点用于计算均值与协方差。相比于EKF对系统方程线性化,无迹卡尔曼滤波近似程度更高。 系统方程: 状态预测: 观测量计算: 状态更新: 过程推导:​​​​​​​ ​​​​​​​无迹变换:一般用离散采样点恢复一种分布,采样点越多,近似度越高,但计算量也越大,比如蒙...

LittleEmperor的博客 7927

MATLAB实现UKF无迹卡尔曼滤波算法的完整指南

无迹卡尔曼滤波(UKF)是一种强大的非线性状态估计工具,在信号处理、导航、控制等领域有着广泛的应用。与传统的卡尔曼滤波器(KF)相比,UKF不需要线性化过程中的泰勒展开,而是通过一组确定的采样点(sigma点)来近似非线性函数的概率分布。这种算法由Simon Julier和Jeffrey Uhlmann在1997年提出,弥补了传统KF在处理高度非线性系统时的局限性。UKF算法的发展经历了不断的优化和扩展,其核心思想是利用无迹变换来近似非线性函数的均值和协方差,从而保证滤波器的性能。

weixin_33610780的博客 1322

卡尔曼滤波程序 GPS定位仿真

针对于 卫星接受数据的 卡尔曼滤波定位, 主要是 UKF sage自适应滤波的MATLAB程序 里面有定位的误差图 数据包 定位仿真结果 等

UKF无迹卡尔曼滤波

UKF无迹卡尔曼滤波是在卡尔曼滤波和变换的基础上发展而来的,它是利用无损变换使线性假设下的卡尔曼滤波应用于非线性系统。 UT变换是用固定数量的参数去近似一个高斯分布,其实现原理为:在原先分布中按某一规则取一些点,使这些点的均值和协方差与原状态分布的均值和协方差相等;将这些点代入非线性函数中,相应得到非线性函数值点集,通过这些点集可求取变换的均值和协方差。对任何一种非线性系统,当高斯型状态微量经由...

l2014010671的博客 3万+

kaggle:Digit Recognizer《手写数字识别》你的第一个图像识别竞赛项目

新手,入门,巩固复习,深度学习,图像识别

qq_63591092的博客 3097

无迹卡尔曼滤波UKF—目标跟踪中的应用(算法部分)

无迹卡尔曼滤波UKF—目标跟踪中的应用(算法部分)分 更新中ing 仿真部分见博客: [无迹卡尔曼滤波UKF—目标跟踪中的应用(仿真部分] 作者:823618313@qq.com 备注: 无迹卡尔曼滤波算法;无迹滤波;Uncented Filter 两种UKF算法:加性噪声UKF和非加性噪声UKF matlab实现; 目标跟踪仿真 Case: 二维目标跟踪情况和三维目标跟踪情况 代码下载地址如下(分别为二维情形和三维情形) 无迹滤波思考: 无迹卡尔曼滤波UKF—目标跟踪中的应用无迹卡尔曼滤波UKF—目标跟踪

主要从事定位、估计、滤波、多传感器融合等研究,主要应用于雷达、红外、声纳、传感器网络等的目标(如无人驾驶、智能终端、移动机器人、传感器节点、飞机等)跟踪、定位和导航 7751

生成式引擎优化(GEO):启动GEO优化的5个有效策略

随着生成式AI的普及,传统SEO正被GEO(生成式引擎优化)取代。本文提出GEO五大核心策略:用户意图解析、结构化内容设计、语义关键词优化、对话式内容创作和权威信源建设。研究表明,优化后的内容在AI答案中的引用率提升300%,点击率增长27%。文章还介绍了BERT模型、Schema标记等关键技术工具,并指出未来GEO将向多模态优化、实时数据更新方向发展。企业需避免简单堆砌关键词,应建立长期内容策略,通过结构化、权威性内容在AI时代保持竞争优势。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 2786

「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐

软件成分分析(Software Composition Analysis,SCA)是一种用于识别和分析软件内部组件及其关系的技术,旨在帮助开发人员更好地了解和管理其软件的构建过程,同时可帮助安全人员揭秘软件内部结构的神秘面纱。SCA技术的发展与软件行业的快速发展密不可分,下面将介绍SCA的发展背景、技术原理以及当前主流SCA工具。

所有成功的背后,都是痛苦的坚持,所有的痛苦,都是傻瓜般的不放弃! 5630

ukf(无迹卡尔曼滤波)算法的matlab程序.

 ukf(无迹卡尔曼滤波)算法的matlab程序. function [x,P]=ukf(fstate,x,P,hmeas,z,Q,R) % UKF   Unscented Kalman Filter for nonlinear dynamic systems % [x, P] = ukf(f,x,P,h,z,Q,R) returns state estimate, x and sta

ss19890125的专栏 2万+

NET 实战:30 天搞定企业级 Web 订餐系统(附完整源码 + 数据库设计)

订餐流程:浏览菜品 → 选择菜品及数量 → 填写送餐地址 → 提交订单 → 数据库记录核心代码(绑定菜品列表):vb' 绑定菜单表到DataGrid控件,展示菜品信息user id=sa;' 查询菜品名称、价格、口味Dim adpt1 As New SqlDataAdapter("select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish", conn)End Sub用户体验优化。

m0_67740236的博客 1517

无迹卡尔曼滤波UKF_代码及调参(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/mdeditor# 从试验工况到建模离散化,再到模型参数辨识,再到最简单的卡尔曼,比如扩展卡尔曼和自适应卡尔曼,接下来,我们如果专注于算法方面的话,自然到Sigma点滤波,这其中包括前几篇博客中我就提到的无迹卡尔曼UKF,中心差分卡尔曼CDKF,容积卡尔曼CKF以及粒子滤波PF,粒子滤波某种程度上也可...

软件领域 2万+

2026软考中级-软件设计师笔记(送最新视频教程)

核心口诀:运控存输输(运算器、控制器、存储器、输入、输出)例题(2019年上半年):核心公式:数字签名流程:数字证书作用:死锁4个必要条件:死锁判断公式:处理策略:程序设计语言的四大核心成分:顺序表操作(时间复杂度):链表操作(时间复杂度):核心思想:频率高的字符用短编码,频率低的用长编码 → 最小化总编码长度构造步骤(贪心算法):前提:有序表(升序/降序) 步骤:时间复杂度:O(log₂n) 例:查找中核心思想:用哈希函数将关键字映射到存储位置 哈希冲突:不同关键字映射到同一位置 → 用链地址法或开放定址

36万+

C#与欧姆龙PLC 通信——Fins Tcp协议

该调试助手专门为了帮助大家学习以及测试Fins-Tcp通信,下面进行详细介绍。

qq_34059233的博客 2082

基于UKF无迹卡尔曼滤波的电池Soc估计matlab仿真

通过UKF无迹卡尔曼滤波对电池的SOC进行估计,并对比电池真实的SOC,输出两者的对比仿真结果。电池状态估计,特别是电池的荷电状态(State of Charge, SoC)估计,在电动汽车、混合动力汽车以及其他电池应用领域中至关重要。无迹卡尔曼滤波(Unscented Kalman Filter, UKF)是一种非线性滤波方法,特别适用于处理非线性系统的状态估计问题。

熟悉MATLAB/fpga/RK3588/LABVIEW/protus/单片机/dsp/Multisim 1561

《RT-DETR魔术师》专栏介绍 & 优快云独家改进创新实战 & 专栏目录

通过本专栏的阅读,后续你也可以自己魔改网络,在网络不同位置(Backbone、head、neck、loss等)进行魔改,实现创新!!!

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 7367

无迹卡尔曼滤波(UKF)详解

Bowen Wang的博客 2万+

零基础学习simulink-- 基于自适应模糊PID控制的直流电机速度控制系统

通过上述代码实现,您可以逐步创建和搭建一个基于自适应模糊PID控制的直流电机速度控制系统。该系统能够根据电机的状态和误差实时调整PID参数,确保电机速度稳定在设定范围内。自适应模糊PID控制具有较强的鲁棒性和适应性,能够在存在不确定性和扰动的情况下提供快速且精确的控制性能。Simulink提供了强大的建模和仿真工具,使得控制系统工程师能够快速构建复杂的控制算法,并将其应用于实际工程中。直流电机建模:建立直流电机的动态模型,包括电枢电压、电流、转速和负载扭矩。自适应模糊PID控制器设计。

amy_mhd的博客 413

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

手撕自动驾驶算法——无迹卡尔曼滤波(UKF)

参考

xiaohu的博客 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

无迹卡尔曼滤波(UKF)

无迹变换、无迹卡尔曼滤波;对于同一个非线性过程,拓展卡尔曼滤波和无迹卡尔曼滤波的性能对比

qq_44169352的博客 8001

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【滤波】无迹卡尔曼滤波(UKF)

%matplotlib inline # format the book import book_format book_format.set_style() 前文 在上一章中,我们讨论了非线性系统带来的困难。这种非线性可以出现在两个地方。它可能出现在我们的观测值里,也可能发生在过程模型中。对于这些问题,标准卡尔曼滤波器的性能可能会很差。 在上一章中,我向你们展示了这样的一个现象(为了强调非线性的影响,我对方程做了一些修改): from kf_book.book_plots import set_fi

Yngz_Miao的博客 1万+

进一步理解无迹卡尔曼滤波(UKF)

无迹卡尔曼滤波(Unscented Kalman Filter, UKF),是卡尔曼滤波家族中处理非线性问题的一个成员,通过一种无迹变换的采样方法取代了EKF粗糙的线性化(泰勒展开)过程,它更准确、更鲁棒,并且更容易实现(无需推导令人头疼的雅可比矩阵),是现代非线性状态估计的首选工具之一。在SLAM、机器人、目标跟踪和自动驾驶等领域,UKF 及其变体(如 Error-State EKF)已经很大程度上取代了传统的 EKF。

具身小站 1312

【轨迹跟踪】UKF-IMM无迹卡尔曼滤波与交互式多模型轨迹跟踪(IMM-EKF、IMM-UKF、UKF)【含Matlab源码 MRJ012期】

UKF-IMM无迹卡尔曼滤波与交互式多模型轨迹跟踪(IMM-EKF、IMM-UKF、UKF) 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 742
上一篇: 粒子滤波原理和MATLAB代码实现
下一篇: 论文阅读和复现:去除PPG运动伪影的IEEE论文
KPer_Yang
博客等级 码龄5年 281粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

KPer_Yang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值