一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

Posted 脑壳二

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)相关的知识,希望对你有一定的参考价值。

粒子滤波在目标跟踪中的应用:粒子滤波VS无迹卡尔曼滤波

粒子滤波—从贝叶斯滤波到粒子滤波理论到实践

原创不易,路过的各位大佬请点个赞

机动目标跟踪/非线性滤波/传感器融合/导航等探讨代码联系WX: ZB823618313

粒子滤波 —从贝叶斯滤波到粒子滤波理论到实践

在非线性条件下,贝叶斯滤波面临一个重要问题是状态分布的表达和积分式的求解,由前面章节中的分析可知,对于一般的非线性/非高斯系统,解析求解的途径是行不通的。在数值近似方法中,蒙特卡罗仿真是一种最为通用、有效的手段,粒子滤波就是建立在蒙特卡罗仿真基础之上的,它通过利用一组带权值的系统状态采样来近似状态的统计分布。由于蒙特卡罗仿真方法具有广泛的适用性,由此得到的粒子滤波算法也能适用于一般的非线性/非高斯系统。但是,这种滤波方法也面临几个重要问题,如有效采样(粒子)如何产生、粒子如何传递以及系统状态的序贯估计如何得到等。

简单的理解,粒子滤波就是使用了大量的随机样本,采用蒙特卡洛(MonteCarlo,MC)仿真技术完成贝叶斯递推滤波(Recursive Bayesian Filter)过程。因此本博客从贝叶斯滤波出发,简单介绍粒子滤波PF的出生、即应用

1、问题描述

考虑离散时间非线性系统动态模型,
x k = f ( x k − 1 , w k − 1 ) z k = h ( x k , v k ) (1) x_k=f(x_k-1,w_k-1) \\\\ z_k=h(x_k,v_k ) \\tag1 xk=f(xk1,wk1)zk=h(xk,vk)(1)
其中 x k x_k xk k k k时刻的目标状态向量, z k z_k zk k k k时刻量测向量(传感器数据)。这里不考虑控制器 u k u_k uk w k w_k wk v k v_k vk分别是过程噪声序列和量测噪声序列。 w k w_k wk v k v_k vk为零均值高斯白噪声。

由于贝叶斯滤波的递推形式是基于非线性系统的后验概率密度,因此这里并不需要假设 w k w_k wk v k v_k vk为零均值高斯白噪声。而KF、EKF、CKF、QKF等需要假设过程、测量噪声为高斯白噪声。

因此基于贝叶斯滤波的粒子滤波可以处理非线性非高斯的状态估计问题。

定义 1 1 1 ~ k k k时刻对状态 x k x_k xk的所有测量数据为
z k = [ z 1 T , z 2 T , ⋯   , z k T ] T z^k=[z_1^T,z_2^T,\\cdots,z_k^T]^T zk=[z1T,z2T,,zkT]T

贝叶斯滤波问题就是计算对 k k k时刻状态 x x x估计的置信程度,为此构造概率密度函数 p ( x k ∣ z k ) p(x_k |z^k) p(xkzk),在给定初始分布 p ( x 0 ∣ z 0 ) = p ( x 0 ) p(x_0|z_0)= p(x_0) p(x0z0)=p(x0)后,从理论上看,可以通过预测和更新两个步骤递推得到概率密度函数 p ( x k ∣ z k ) p(x_k |z^k) p(xkzk)的值。

是不是卡尔曼滤波的雏形出现了,哈哈哈,预测、更新也存在KF中。

2、递推贝叶斯滤波

1)预测

现假定 k − 1 k- 1 k1时刻的概率密度函数已知,则通过将Chapman-Kolmogorov等式应用
于动态方程(1),即可预测 k k k时刻状态的先验概率密度函数为
p ( x k ∣ z k − 1 ) = ∫ p ( x k ∣ x k − 1 ) p ( k − 1 ∣ z k − 1 ) d x k − 1 ) (2) p(x_k |z^k-1)=\\int p(x_k |x_k-1)p(k-1 |z^k-1) dx_k-1) \\tag2 p(xkzk1)=p(xkxk1)p(k1zk1)dxk1)(2)

实际上,状态转移方程写为概率密度的形式即为: x k = f ( x k − 1 , w k − 1 ) = 等价 p ( x k ∣ x k − 1 ) x_k=f(x_k-1,w_k-1) \\underset\\text等价= p(x_k |x_k-1) xk=f(xk1,wk1)等价=p(xkxk1)
式(2)中隐含假定了 p ( x k ∣ x k − 1 ) = p ( x k ∣ x k − 1 , z k − 1 ) p(x_k |x_k-1)= p(x_k |x_k-1, z^k-1) p(xkxk1)=p(xkxk1,zk1),实际上这本身在这里就是成立的,基于(1)式的马尔可夫过程。

2)更新

在获得 p ( x k ∣ z k − 1 ) p(x_k |z^k-1) p(xkzk1)的基础上,结合 k k k时刻得到的新的量测值,基于贝叶斯公式,可以计算 k k k时刻状态的后验概率密度函数:
p ( x k ∣ z k ) = p ( z k ∣ x k ) p ( x k ∣ z k − 1 ) p ( z k ∣ z k − 1 ) (3) p(x_k |z^k)=\\fracp(z_k |x_k)p(x_k |z^k-1)p(z_k |z^k-1) \\tag3 p(xkzk)=p(zkzk1)p(z以上是关于一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)的主要内容,如果未能解决你的问题,请参考以下文章

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

一篇博客彻底掌握:粒子滤波 particle filter (PF) 的理论及实践(matlab版)

粒子滤波 particle filter—从贝叶斯滤波到粒子滤波—Part-V(粒子滤波 PF)

粒子滤波 particle filter—从贝叶斯滤波到粒子滤波—Part-V(粒子滤波 PF)

粒子滤波 particle filter —从贝叶斯滤波到粒子滤波——Part-I(贝叶斯滤波)

粒子滤波 particle filter —从贝叶斯滤波到粒子滤波——Part-I(贝叶斯滤波)