贝叶斯滤波和粒子滤波
贝叶斯滤波,状态估计,频率学派,一系列统称,
粒子滤波是贝叶斯滤波的特例(实现方式)、粒子耗散问题(不能解决)、FastSLAM
一、贝叶斯滤波
1.数学概念
2.特性
- 估计的是概率分布,不是具体数值;
极大似然估计、极大后验估计
- 是一大类方法的统称;
- 是一个抽象的表达形式——对于不同问题有不同的实现方式(卡尔曼家族、粒子滤波);
- 迭代估计形式
3.贝叶斯估计
bel(xt)=p(xt∣z1:t,u1:t)=ηp(zt∣xt)bel‾(xt)=ηp(zt∣xt)∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1(1-1)bel(x_t)=p(x_t|z_{1:t},u_{1:t})=\eta p(z_t|x_t)\overline{bel}(x_t)=\eta p(z_t|x_t)\begin{aligned} \int p(x_t|x_{t-1},u_t)p(x_{t-1}|z_{1:t-1,}u_{1:t-1}) \mathrm{d} x_{t-1} \end{aligned}\tag{1-1} bel(xt)=p(xt∣z1:t,u1:t)=ηp(zt∣xt)bel(xt)=ηp(zt∣xt)∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1(1-1)
- bel(xt)bel(x_t)bel(xt)是后验概率——观测更新
- bel‾(xt)\overline{bel}(x_t)bel(xt)是预测分布——运动预测
功能:已知状态量t-1时刻的概率分布,在给定t时刻的观测数据(zt,ut)(z_t,u_t)(zt,ut)的情况下估计出状态量在t时刻的概率分布
4.推导
- 目标:在已知p(xt−1∣z1:t−1,u1:t−1)、ut、ztp(x_{t-1}|z_{1:t-1,}u_{1:t-1})、u_t、z_tp(xt−1∣z1:t−1,u1:t−1)、ut、zt的情况下,得到p(xt∣z1:t,u1:t)p(x_t|z_{1:t},u_{1:t})p(xt∣z1:t,u1:t)的表达式。
p(xt∣z1:t,u1:t)=p(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)p(zt∣z1:t−1,u1:t)=ηp(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)p(x_t|z_{1:t},u_{1:t})=\frac{p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t})}{p(z_t|z_{1:t-1,u_{1:t}})}\\ \\=\eta p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t}) p(xt∣z1:t,u1:t)=p(zt∣z1:t−1,u1:t)p(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)=ηp(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)
其中:
p(zt∣xt,z1:t−1,u1:t)=p(zt∣xt)p(z_t|x_t,z_{1:t-1},u_{1:t})=p(z_t|x_t)p(zt∣xt,z1:t−1,u1:t)=p(zt∣xt)
p(xt∣z1:t−1,u1:t)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1p(x_t|z_{1:t-1},u_{1:t})= \begin{aligned} \int p(x_t|x_{t-1},z_{1:t-1},u_{1:t})p(x_{t-1}|z_{1:t-1},u_{1:t})\mathrm{d} x_{t-1} \end{aligned}p(xt∣z1:t−1,u1:t)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1
p(xt∣xt−1,z1:t−1,u1:t)=p(xt∣xt−1,ut)p(x_t|x_{t-1},z_{1:t-1},u_{1:t})=p(x_t|x_{t-1},u_t)p(xt∣xt−1,z1:t−1,u1:t)=p(xt∣xt−1,ut)
p(xt−1∣z1:t−1,u1:t)=p(xt−1∣z1:t−1,u1:t−1)p(x_{t-1}|z_{1:t-1},u_{1:t})=p(x_{t-1}|z_{1:t-1,}u_{1:t-1})p(xt−1∣z1:t−1,u1:t)=p(xt−1∣z1:t−1,u1:t−1)
令:
bel(xt)=p(xt∣z1:t,u1:t)bel(x_t)=p(x_{t}|z_{1:t},u_{1:t})bel(xt)=p(xt∣z1:t,u1:t)表示xtx_txt的后验概率分布
bel‾(xt)=p(xt∣z1:t,u1:t)\overline{bel}(x_t)=p(x_{t}|z_{1:t},u_{1:t})bel(xt)=p(xt∣z1:t,u1:t)表示xtx_txt的预测(proposal)概率分布
则:
bel(xt)=ηp(zt∣xt)bel‾(xt)bel(x_t)=\eta p(z_t|x_t)\overline{bel}(x_t)bel(xt)=ηp(zt∣xt)bel(xt)
bel‾(xt)=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1\overline{bel}(x_t)= \begin{aligned} \int p(x_t|x_{t-1},u_t)p(x_{t-1}|z_{1:t-1,}u_{1:t-1}) \mathrm{d} x_{t-1} \end{aligned}bel(xt)=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1
2.粒子滤波
粒子滤波用一系列通过后验概率分布随机采样的状态粒子近似表示后验概率分布,采样得到的状态粒子点的疏密程度与该区域后验概率分布大小成正比,也就是说状态粒子点的枢密程度简介反映了后验概率分布的大小。这样粒子就可以直接参与系统的非线性变换,并利用运动和观测进行重新采样以调整状态粒子点的疏密程度。
粒子算法是一种基于遗传进化的算法,粒子经过运动和观测过程的筛选后,粒子点将逐渐集中到后验概率高的区域。
1.特性
- 贝叶斯估计器的一种实现方式
- 能处理非线性情况
- 能处理多峰分布的情况——全局定位
- 用系列粒子近似概率分布
- 非参滤波器
2.推导
$ X={ {(x_ti,w_ti)|i=1,2,…,n} } $
xtix_t^ixti表示一个状态的假设——机器人位姿
wtiw_t^iwti表示假设的权重——跟地图的匹配度
流程
用粒子进行状态传播:xtix_{t}^ixti~p(xt∣ut,xt−1i)p(x_t|u_t,x_{t-1}^i)p(xt∣ut,xt−1i)
评估每个粒子的权重: wti=ηp(zt∣xt)w_{t}^i=\eta p(z_t|x_t)wti=ηp(zt∣xt)
根据权重进行重采样:以 wtiw_{t}^iwti的概率接受xtix_{t}^ixti,权重清零
①状态传播
传播模型:
bel‾(xt)=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1\overline{bel}(x_t)= \begin{aligned} \int p(x_t|x_{t-1},u_t)p(x_{t-1}|z_{1:t-1,}u_{1:t-1}) \mathrm{d} x_{t-1} \end{aligned} bel(xt)=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1
已知t-1时刻的概率分布(粒子分布):
p(xt−1∣z1:t−1,u1:t−1)=(xt−1i,wt−1i)∣i=1,2,...,np(x_{t-1}|z_{1:t-1,}u_{1:t-1}) ={{(x_{t-1}^i,w_{t-1}^i)|i=1,2,...,n}} p(xt−1∣z1:t−1,u1:t−1)=(xt−1i,wt−1i)∣i=1,2,...,n
根据数据utu_tut预测t-1时刻的概率分布(粒子分布):
xti∽p(xt∣ut,xt−1i)i=1,2,....,nx_{t}^i \backsim p(x_t|u_t,x_{t-1}^i)\\ i=1,2,....,n xti∽p(xt∣ut,xt−1i)i=1,2,....,n
②权重评估
- 无法知道机器人位姿的实际分布
- 从机器人的预测分布进行采样,联合权重一起近似机器人的后验概率分布
- 权重用来评估实际的预测分布和实际分布的差,差越大,权重越小
- 权重的定义
w=bel(xt)bel‾(xt)w=\frac{bel(x_t)}{\overline{bel}(x_t)} w=bel(xt)bel(xt)
对于某个粒子:
bel(xt)=ηp(zt∣xt)p(xt∣xt−1,ut)bel(xt)bel‾(xt)=p(xt∣xt−1,ut)bel(xt)bel(x_t)=\eta p(z_t|x_t)p(x_t|x_{t-1},u_t)bel(x_t) \\ \overline{bel}(x_t)= p(x_t|x_{t-1},u_t)bel(x_t) bel(xt)=ηp(zt∣xt)p(xt∣xt−1,ut)bel(xt)bel(xt)=p(xt∣xt−1,ut)bel(xt)
因此权重为:
w=ηp(zt∣xt)p(xt∣xt−1,ut)bel(xt)p(xt∣xt−1,ut)bel(xt)=ηp(zt∣xt)w=\frac{\eta p(z_t|x_t)p(x_t|x_{t-1},u_t)bel(x_t)}{p(x_t|x_{t-1},u_t)bel(x_t)}\\ \\ =\eta p(z_t|x_t) w=p(xt∣xt−1,ut)bel(xt)ηp(zt∣xt)p(xt∣xt−1,ut)bel(xt)=ηp(zt∣xt)
③重采样
- 到目前为止,新的粒子群是根据proposal分布进行采样的,并且用观测模型计算权重,而最终的目的是用粒子群来近似后验概率分布
- 对粒子群进行重采样,对于某一个粒子xix_ixi来说,以wiw_iwi的概率接受这个粒子
- 生成一个随机数,根据其落在的区间决定接受的粒子,重复N次。
3.算法流程
4.存在的问题
- 粒子耗散问题——粒子多样性的丧失
- 维数灾难
- 当proposal比较差的时候,需要用很多的粒子才能较好的表示机器人的后验概率分布。
贝叶斯滤波和粒子滤波相关推荐
- 粒子滤波 particle filter —从贝叶斯滤波到 粒子滤波—Part-III(重要性采样序贯重要性采样SIS)
粒子滤波 particle filter -从贝叶斯滤波到粒子滤波-Part-III(重要性采样&序贯重要性采样SIS) 原创不易,路过的各位大佬请点个赞 机动目标跟踪/非线性滤波/传感器融合 ...
- java 粒子滤波_粒子滤波 - gary_123 - 博客园
跟着博主http://blog.csdn.net/heyijia0327/article/details/40899819一起学习 尽管利用高斯逼近能有效解决许多滤波问题,但当滤波分布为多模型或某些状 ...
- 【滤波】粒子滤波(PF)
%matplotlib inline #format the book import book_format book_format.set_style() 动机 现在的问题是:我们要跟踪移动中的物体 ...
- 高斯粒子滤波matlab,粒子滤波(Particle filter)matlab实现 | 学步园
粒子滤波是以贝叶斯推理和重要性采样为基本框架的.因此,想要掌握粒子滤波,对于上述两个基本内容必须有一个初步的了解.贝叶斯公式非常perfect,但是在实际问题中,由于变量维数很高,被积函数很难积分,常 ...
- 通过非递归贝叶斯滤波实现室内环境下建筑平面图的行人惯性导航
文章目录 一.介绍 二.方法 A.零速更新 B.递归贝叶斯滤波器(RBF) C.提出的方法 三.实验设置和结果 四.结论 REFERENCES 摘要 在这篇论文中,使用一种新颖的非递归贝叶斯滤波 ...
- 蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...
本文原版链接:https://www.seas.harvard.edu/courses/cs281/papers/doucet-johansen.pdf 本文是哈佛大学相关研究人员于2008年发表的一 ...
- 崔岩的笔记——粒子滤波原理及应用(3)粒子滤波原理及算法流程
崔岩的笔记--粒子滤波原理及应用(1)概率论与数理统计基础_今天也是睡觉的一天的博客-CSDN博客 崔岩的笔记--粒子滤波原理及应用(2)蒙特卡洛法与贝叶斯滤波_今天也是睡觉的一天的博客-CSDN博客 ...
- 蒙特卡洛粒子滤波定位算法_基于粒子滤波的TBD算法仿真—MATLAB仿真
目标跟踪的最终目的是在最小的误差下确定目标的位置,而在无线传感器网络中要实现这个目的需要很多相关技术的支持,如定位技术.目标检测技术.估计技术.节能技术等.目标跟踪问题的求解有很多方法, 从算法的考虑 ...
- 交互式多模型-粒子滤波IMM-PF—在机动目标跟踪中的应用/matlab实现
交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应用/matlab实现 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 交互式多模型-粒子滤波IMM-PF-在机动目标跟踪中的应 ...
- 卡尔曼滤波系列——(三)粒子滤波
1 简介 粒子滤波(Partical Filter,PF)就是通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,用样本均值代替积分运算,进而获得系统状态的最小方差估计的过程,这些样本被称 ...
最新文章
- 【 C 】深入了解递归
- 5月Web服务器份额:Microsoft亚军 份额涨1.05%
- 搭建网络及服务器系统,网络服务器搭建与管理
- 安装pr_PR 一键转场插件 安装教程
- 记录x86调试命令总结
- 搭建基于hyperledger fabric的联盟社区(九) --检索状态数据库
- python实现: protobuf解释器
- STL学习笔记-set的基本原理以及插入、遍历
- macbook视频格式转换_AnyMP4简易视频格式转换器 for mac | MAC之家
- vs2010下libevent的使用
- Cube IDE 的下载安装
- 分布式架构,Java高级工程师必看系列
- 快速搞懂Oracle 19c安全新特性 (二) Privilege Analysis(权限分析)
- stc单片机c语言程序头文件(stc12c5a60s2.h,stc12c5a60s2头文件在keil中没法用?
- 微信小程序音乐播放器旋转动画
- android 开游艇游戏,游艇狂飙游戏-游艇狂飙安卓版预约_第一手游网
- 涉密计算机默认安全用户名,机密级涉密计算机的系统登录如采用用户名加口令的方式,则系统口令更换周期不得长于 - 作业在线问答...
- Labview连接bartender自动打印条码
- 【组合数学】递推方程 ( 特征方程与特征根 | 特征方程示例 | 一元二次方程根公式 )
- java地图点线面_点线面类型互转
热门文章
- 【超图+CESIUM】【基础API使用示例】46、超图|CESIUM - 聚光源设置
- java docx4j 目录_使用Docx4j创建word文档
- 2022深圳杯D题思路:复杂水平井三维轨道设计
- php工程师绩效考核表_如何对程序员绩效考核?
- C++实现的基于αβ剪枝算法五子棋设计
- DSP6678使用NDK网口通信
- 修改centos系统时间
- 阅读html查看器,手机HTML查看器
- 2018计算机一级证件照,2018下半年软考报名照片要几寸的呢?是要白底照片吗?...
- 下面列出LoadRunner的性能测试流程