无迹卡尔曼滤波在目标跟踪中的作用(二)

news2024/10/6 2:25:03

在上一节的内容中,我们介绍了UKF中最重要的内容—无迹变换UT,今天我们将具体介绍UKF是如何实现的。
好了,话不多说,开整!!!

UKF算法的实现

我们知道,我们可以使用状态方程观测方程来对系统进行描述,那么一个非线性系统可以用以下的方程进行描述:
{ X ( k + 1 ) = f ( x ( k ) , V ( k ) ) Z ( k ) = h ( x ( k ) , W ( k ) ) \left\{\begin{array}{l}X\left(k+1\right)=f\left(x\left(k\right),V\left(k\right)\right)\\ Z\left(k\right)=h\left(x\left(k\right),W\left(k\right)\right)\end{array}\right. {X(k+1)=f(x(k),V(k))Z(k)=h(x(k),W(k))
其中的

  • f f f为非线性状态方程函数
  • V ( k ) V(k) V(k)为过程噪声,其协方差矩阵为Q
  • h h h为非线性观测方程函数
  • W ( k ) W(k) W(k)为量测噪声,协方差矩阵为R

在描述完非线性系统后,对不同时刻的数据进行滤波,步骤如下:

  • 1、首先获得一组Sigma点集(采样点集)与权值,计算如下式:在这里插入图片描述
    在这里插入图片描述
    详细介绍请见:
    UKF在目标跟踪中的应用(一)
    也即:
    X ( i ) ( k ∣ k ) = [ X ^ ( k ∣ k ) X ^ ( k ∣ k ) + ( n + λ ) P ( k ∣ k ) X ^ ( k ∣ k ) − ( n + λ ) P ( k ∣ k ) ] X^{(i)}(k|k)=[\hat{X}(k|k)\quad\hat{X}(k|k)+\sqrt{(n+\lambda)P(k|k)}\quad\hat{X}(k|k)-\sqrt{(n+\lambda)P(k|k)}] X(i)(kk)=[X^(kk)X^(kk)+(n+λ)P(kk) X^(kk)(n+λ)P(kk) ]

  • 2、然后计算2n+1个Sigma点的一步预测值,i=1,2……2n+1;
    X ( i ) ( k + 1 ∣ k ) = f [ k , X ( i ) ( k ∣ k ) ] X^{(i)}(k+1|k)=f[k,X^{(i)}(k|k)] X(i)(k+1∣k)=f[k,X(i)(kk)]

  • 3、计算系统状态量和协方差矩阵的一步预测值

X ^ ( k + 1 ∣ k ) = ∑ i = 0 2 n ω ( i ) X ( i ) ( k + 1 ∣ k ) \hat{X}(k+1|k)=\sum_{i=0}^{2n}\omega^{(i)}X^{(i)}(k+1|k) X^(k+1∣k)=i=02nω(i)X(i)(k+1∣k)
P ( k + 1 ∣ k ) = ∑ k = 0 2 n ω ( k ) [ X ^ ( k + 1 ∣ k ) − X ( k ) ( k + 1 ∣ k ) ] [ X ^ ( k + 1 ∣ k ) − X ( n ) ( k + 1 ∣ k ) ] T + Q P(k+1|k)=\sum\limits_{k=0}^{2n}\omega^{(k)}[\hat{X}(k+1|k)-X^{(k)}(k+1|k)][\hat{X}(k+1|k)-X^{(n)}(k+1|k)]^T+Q P(k+1∣k)=k=02nω(k)[X^(k+1∣k)X(k)(k+1∣k)][X^(k+1∣k)X(n)(k+1∣k)]T+Q

此处就与Kalman明显不同:
Kalman滤波中,只需将上一时刻的值带入状态方程计算一次即可得到预测值UKF是将一组采样点值进行预测,然后加权,得到状态的预测值

  • 4、再根据一步预测值,使用UT变换产生新的Sigma点集
    X ( i ) ( k + 1 ∣ k ) = [ X ^ ( k + 1 ∣ k ) X ^ ( k + 1 ∣ k ) + ( n + λ ) P ( k + 1 ∣ k ) X ^ ( k + 1 ∣ k ) − ( n + λ ) P ( k + 1 ∣ k ) ] X^{(i)}(k+1|k)=[\hat{X}(k+1|k) \quad \hat{X}(k+1|k)+\sqrt{(n+\lambda)P(k+1|k)} \quad \hat{X}(k+1|k)-\sqrt{(n+\lambda)P(k+1|k)}] X(i)(k+1∣k)=[X^(k+1∣k)X^(k+1∣k)+(n+λ)P(k+1∣k) X^(k+1∣k)(n+λ)P(k+1∣k) ]

  • 5、将步骤4新产生的Sigma点集带入观测方程,得到观测的预测值,i=1,2,……2n+1;
    Z ( i ) ( k + 1 ∣ k ) = h [ X ( i ) ( k + 1 ∣ k ) ] Z^{(i)}\left(k+1|k\right)=h[X^{(i)}(k+1|k)] Z(i)(k+1∣k)=h[X(i)(k+1∣k)]

  • 6、通过步骤5中得到的Sigma点集的观测预测值加权求和得到系统预测的均值和方差
    Z ‾ ( k + 1 ∣ k ) = ∑ i = 0 2 n ω ( i ) Z ( i ) ( k + 1 ∣ k ) \overline{Z}(k+1|k)=\sum\limits_{i=0}^{2n}\omega^{(i)}{Z}^{(i)}(k+1|k) Z(k+1∣k)=i=02nω(i)Z(i)(k+1∣k)
    P z k z k = ∑ i = 0 2 n ω ( i ) [ Z ( i ) ( k + 1 ∣ k ) − Z ‾ ( k + 1 ∣ k ) ] [ Z ( i ) ( k + 1 ∣ k ) − Z ‾ ( k + 1 ∣ k ) ] T + R P_{z_kz_k}=\sum\limits_{i=0}^{2n}\omega^{(i)}[Z^{(i)}(k+1|k)-\overline{Z}(k+1|k)][Z^{(i)}(k+1|k)-\overline{Z}(k+1|k)]^{\mathrm{T}}+R Pzkzk=i=02nω(i)[Z(i)(k+1∣k)Z(k+1∣k)][Z(i)(k+1∣k)Z(k+1∣k)]T+R
    P x k z k = ∑ i = 0 2 π ω ( i ) [ X ( i ) ( k + 1 ∣ k ) − Z ‾ ( k + 1 ∣ k ) ] [ Z ( i ) ( k + 1 ∣ k ) − Z ‾ ( k + 1 ∣ k ) ] T P_{x_k z_k}=\sum\limits_{i=0}^{2\pi}\omega^{(i)}[X^{(i)}(k+1|k)-\overline{Z}(k+1|k)][Z^{(i)}(k+1|k)-\overline{Z}(k+1|k)]^T Pxkzk=i=02πω(i)[X(i)(k+1∣k)Z(k+1∣k)][Z(i)(k+1∣k)Z(k+1∣k)]T

  • 7、计算滤波增益K
    K ( k + 1 ) = P x k z k P z k z k − 1 K(k+1)=P_{x_k z_k}P_{z_k z_k}^{-1} K(k+1)=PxkzkPzkzk1

  • 8、状态更新、协方差更新:
    X ^ ( k + 1 ∣ k + 1 ) = X ^ ( k + 1 ∣ k ) + K ( k + 1 ) [ Z ( k + 1 ) − Z ^ ( k + 1 ∣ k ) ] \hat{X}\left(k+1|k+1\right)=\hat{X}\left(k+1|k\right)+K\left(k+1\right)\left[Z\left(k+1\right)-\hat{Z}\left(k+1|k\right)\right] X^(k+1∣k+1)=X^(k+1∣k)+K(k+1)[Z(k+1)Z^(k+1∣k)]
    P ( k + 1 ∣ k + 1 ) = P ( k + 1 ∣ k ) − K ( k + 1 ) P z k z k K ⊺ ( k + 1 ) P(k+1|k+1)=P(k+1|k)-K(k+1)P_{z_kz_k}K^{\intercal}(k+1) P(k+1∣k+1)=P(k+1∣k)K(k+1)PzkzkK(k+1)

经过上述的步骤,即可完成一次滤波,然后不断循环进行即可,如果用一张图表示UKF滤波过程,可以如下图所示:
在这里插入图片描述
下次将对其进行MATLAB仿真验证。

上述内容即使今天的全部内容了,感谢大家的观看。
如果方便,辛苦大家点个赞和关注哦!
您的点赞或评论或关注是对我最大的肯定,谢谢大家!!!

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

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

相关文章

04 Web全栈 闭包/this指针

专业术语 变量、常量、数据类型形参、实参匿名函数、具名函数、自执行函数函数声明、函数表达式堆、栈同步、异步、进程、线程 执行上下文 当函数执行时,会创建一个执行上下文的环境,分为创建和执行两个阶段 创建阶段 创建阶段,指函数被调…

Android开发有必要深耕Framework吗?该如何着手?

前言 前段时间朋友在找 Android 高级开发工作,想进一步提升自己的能力,看了很多招聘信息,都要求熟练掌握 Framwork,了解底层原理等,发现是不是该深入研究底层技术…… 同时在网上也看到过相关问题,有很多…

iOS应用上架指iOS应用上架指南:综合详解

目录 引言 一、基本需求信息。 二、证书 一.证书管理 二.新建证书 三.使用appuploader服务同步证书 三、打包 三、审核 四、整体架构流程 五、代码实现 六、总结 转载自iOS开发上架的文章:iOS应用全面上架指南 引言 上架IOS应用到app store,…

An unexpected connection driver error occured

安装下载好rabbitmq,我在springboot整合mq,启动的时候报错了 An unexpected connection driver error occured 后来又报 Failed to check/redeclare auto-delete queue(s). 综合就是连接问题,端口有问题 我试过添加账户,提高权限&…

Docker 环境安装

博文目录 文章目录 CentOS 安装 Docker Engine安装 Docker升级 Docker卸载 Docker阿里云镜像加速 使用 DNF 命令安装最新 Docker Docker 官方文档 下载与安装 Linux 版本选择 Docker 官方文档 下载与安装 CentOS CentOS 安装 Docker Engine 安装 Docker 卸载旧版。卸载docke…

充分条件、必要条件

关于对充分条件、必要条件、充要条件的最简单扼要的理解: 充分条件:有A就一定有B,则A是B的充分条件; 必要条件:无A就一定无B,则A是B的必要条件; 充要条件:有A就一定有B&#xff0…

(区间dp)牛客·分离与合体

别人写dfs&#xff0c;我写bfs&#xff0c;个人觉得对于这个题bfs更好理解。 思路都大同小异啦…… 1、dp[i][j]:第i到第j获得最大的价值 2、p[i][j]:第i到第j获得最大价值时(i-k-j)&#xff0c;记录值k 3、bfs求路径&#xff0c;层次遍历嘛#include<bits/stdc.h> using…

精通 H.264,从压缩原理到前沿应用的全方位了解

H.264&#xff0c;也称为 AVC&#xff08;Advanced Video Coding&#xff09;&#xff0c;是一种广泛使用的视频编码标准。它是一种高效的压缩算法&#xff0c;可用于对音频和视频数据进行高质量的压缩和编码。以下是关于 H.264 编码的一些重要信息&#xff1a; 压缩原理&…

机器学习笔记 - 结合深度学习的基于内容的图像实例检索 通过学习DCNN表示进行检索

一、概述 上一篇,利用现成的DCNN模型进行检索。 机器学习笔记 - 结合深度学习的基于内容的图像实例检索 利用现成的DCNN模型进行检索_坐望云起的博客-CSDN博客一种方案是,为分类任务而进行大规模训练的DCNN直接充当图像检索任务的现成特征检测器,也就是说,可以提出在DCNN的…

5G驻留提升优化

故提出基于5-4两两邻区对的精细化的驻留比分析办法&#xff0c;围绕“一核心、二场景、四维度、五方案”这一方法&#xff0c;助力驻留比提升&#xff0c;“一核心”指基于5-4两两邻区对&#xff0c;选取次数TOP邻区对分析&#xff0c;“二场景”指5G小区为宏站还是室分&#x…

飞鱼星 企业级智能上网行为管理系统 权限绕过信息泄露漏洞

一&#xff1a;漏洞描述 飞鱼星 企业级智能上网行为管理系统 存在权限绕过以及信息泄露漏洞&#xff0c;可以获取管理员权限以及用户密码 二: 漏洞影响 飞鱼星 企业级智能上网行为管理系统 三: 漏洞复现 title“飞鱼星企业级智能上网行为管理系统” 访问主页使用Burp抓包 …

避免游离指针或引用以保护共享数据

在对共享数据进行保护时&#xff0c;有可能被外界的指针修改。如下例&#xff1a; #include<iostream> #include<thread> #include<mutex> #include<windows.h>using namespace std;class user_data {public:int a;char c;void change_data(void) { a…

Log On Yarn

序言 整理下各种部署在Yarn上的应用如何查看日志的问题.当然我觉得使用自定义的日志收集器来收集就更好了.这样子也解决了集群日志的问题cuiyaonan2000163.com 只用Flink做个引子,其它的服务也是这样的,没有什么差别 Flink 比如我们提交了一个任务同时知道他的ApplicationId…

transformer零基础学习

声明&#xff1a;以下文章链接仅用于个人学习与备忘。 基础知识 1&#xff1a;零基础解析教程 [推荐] https://zhuanlan.zhihu.com/p/609271490 2&#xff1a;Transformer 详解 [推荐] https://wmathor.com/index.php/archives/1438/ 3&#xff1a;如何从浅入深理解transfor…

Flutter开发笔记:Flutter 布局相关组件

Flutter开发笔记 Flutter 布局与布局组件 - 文章信息 - Author: Jack Lee (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChineAddress of this article:https://blog.csdn.net/qq_28550263/article/details/131419782 【介绍】&am…

随笔-当曾经的小弟当了你的领导,阁下该如何应对

前几天&#xff0c;从小龙那得到一个招聘信息&#xff0c;想着被优化的C朋友&#xff0c;就转发给了他。过了会C朋友给我回了信息&#xff1a; C朋友&#xff1a;入职A&#xff08;我现在的公司&#xff09;需要穿正装吗&#xff1f; 我&#xff1a;需要啊&#xff0c;办手续…

并发编程-分布式存储系统之edits_log

复杂一点的多线程编程场景&#xff0c;总结起来也就是 通过加锁来控制好标志位的状态流转&#xff0c;通过标志位的不同的流转状态&#xff0c;来控制每个线程有不同的行为如果是需要各个线程协作处理的逻辑&#xff0c;就采用最简洁的wait/notify机制 分布式存储系统 分布式存…

【软件安装】Linux系统中安装JDK1.8运行环境(Ubuntu系统)

这篇文章&#xff0c;主要介绍Linux系统中安装JDK1.8运行环境&#xff08;Ubuntu系统&#xff09;。 目录 一、Linux安装JDK运行环境 1.1、下载JDK安装包 1.2、上传JDK到Linux服务器 1.3、解压JDK安装包 1.4、配置JDK环境变量 1.5、重新加载profile环境变量 1.6、检查是…

卷积(CNN)| 反卷积(TCNN、Transposed CNN)| 卷积过程中feature map的通道变化 | 1 × 1卷积核如何降维/升维

关于深度学习中的一些小概念&#xff0c;因为网上的资源有些散乱&#xff0c;这里总结一些自己的&#xff0c;方便后面复习&#xff0c;摘一些图&#xff0c;但是会标明引用&#xff01; 一、卷积 对于卷积&#xff0c;下面一张图就够了&#xff0c;根据 stride 步长在 featur…