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

在上一节的内容中,我们介绍了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.hqwc.cn/news/4086.html

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

相关文章

kotlin constructor init companion object 与初始化by lazy

kotlin constructor init companion object 与初始化by lazy class MyDemo(private var v: Int) {init {println("init $v")}constructor(m: Int, n: Int) : this(m) {println("constructor $m $n")}//只初始化一次companion object {private var TAG &qu…

死信是什么,如何运用RabbitMQ的死信机制?

系列文章目录 手把手教你,本地RabbitMQ服务搭建(windows) 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 推或拉? RabbitMQ 消费模式该如何选择 死信是什么,如何运用Rabbit…

Lesson1-1:OpenCV简介

图像处理 学习目标 了解图像的起源知道数字图像的表示 1 图像的起源 1.1 图像是什么 图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在…

OpenStack(T版)——对象存储(Swift)服务介绍与安装

文章目录 OpenStack(T版)——对象存储(Swift)服务介绍与安装安装和配置(controller)准备安装和配置Swift对象存储服务组件创建账户 Ring创建容器 Ring创建对象 RingSwift 存储系统的主配置文件修改文件属主 安装和配置(compute)准备配置Swift对象存储服务组件 验证(1)加载环境变…

java压测工具 Jmeter初使用

一. 下载及安装教程 1. 有博主总结的很好,这里直接放传送门: 【Jmeter】win 10 / win 11:Jmeter 下载、安装、汉化、新机迁移、版本更新(Jmeter 4 以上版本均适用) 2. Jmeter 自定义创建桌面快捷方式 3. JMeter插件…

I/O复用的高级应用三——同时处理TCP和UDP服务

截至目前学习,我们讨论过的服务器程序都只监听一个端口。但在实际应用中,有不少服务器程序能同时监听多个端口,比如超级服务inetd和android的调试服务adbd。 从bind系统调用的参数看,一个socket只能与一个socket地址绑定&#xff…

Amdahl定律

Amdahl定律 例:设改进前系统执行时间为3s,改进后系统执行时间为2s 则:加速比3/2 即计算机改进后比改进前快了1.5倍 Amdahl定律影响因素 公式推导 可改进的系统比例为fe,则不可改进的部分比例为(1-fe) 不可改进的部分耗时为T0 * (1- fe) 设改进后部件耗时为T,则…

RISC-V处理器的设计与实现(三)—— 上板验证(基于野火征途Pro开发板)

文章目录 RISC-V处理器的设计与实现(一)—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(二)—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(三)—— 上板验…

考研算法35天:三元组的最小距离 【双指针,滑动窗口,多路归并】

算法详解 多路归并;多路归并算法从理论到应用(易懂)_留恋单行路的博客-CSDN博客 多路归并就是将多个已经归并排序排好序的数组再进行排序(不一定是通过归并排序)。 算法题目 这道题就是一般做法是先通过排序将三个数组排好然后再进行三指针求最小。但…

Tuxera NTFS2023Mac电脑免费U盘硬盘读写工具

Mac用户在使用NTFS格式移动硬盘时,会遇到无法写入硬盘的情况。要想解决无法写入的问题,很多人选择使用Mac读写软件。面对市面上“众多”的读写硬盘软件,用户应该怎么选择呢?初次接触移动硬盘的伙伴可能不知道移动硬盘怎么和电脑连…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库:1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …