《Probabilistic Robotics》 读书笔记 04

摘要

高斯滤波依赖于对后验概率进行特定函数形式(高斯函数)的假定,因此当某些概率分布并不符合高斯分布时,高斯滤波就显示出无法避免的短板。而非参数滤波不需要这种假定。因此非参数滤波可以表示更复杂的状态可信度模型,但同样会增加计算的复杂性。本章主要介绍了两种非参数方法,包括直方图滤波和粒子滤波。

直方图滤波

直方图滤波应用于离散状态时,被称为离散贝叶斯滤波。算法流程如下:

其实离散贝叶斯滤波就是将第二章的贝叶斯滤波算法中的积分形式代替为求和形式。
其中$x_i$代表某种状态,某一时刻,某种状态的可信度用$p_{k,t}$表示。

将离散的状态进行合并就得到了连续的状态空间,其误差由离散状态的粒度决定的
$range(X_t)=x_{1,t} \cup x_{2,t} \cup … \ x_{k,t} $

对于每个区域的$\mathbf X_{k,t}$,通常用平均值进行估计。
$\hat x_{k,t}=\ \mid \mathbf X_{k,t} \mid ^{-1} \int_{\mathbf x_{k,t}} x_t \ dx_t$

因此可以得到区域的状态转移概率和测量概率
$p(\mathbf x_{k,t} \mid u_t, \mathbf x_{i,t-1}) \approx \dfrac{\eta}{\mid\mathbf x_{k,t}\mid} p(\hat x_{k,t} \mid u_t, \hat x_{i,t-1})$
$p(z_t \mid \mathbf x_{k,t}) \approx p(z_t \mid \hat x_{k,t})$

因此对连续的状态空间进行分解的分解技术是直方图滤波实现的关键技术之一,主要分为静态分解和动态分解。静态分解提前设定了固定的分解方式。Grid representation是静态分解的典型例子。动态分解则根据后验分布的形状动态选择分解方式。Density trees是动态分解的典型例子。

粒子滤波

粒子滤波的主要思想是通过状态可信度的随机样本来表示状态可信度的后验概率。这是一种蒙特卡罗的思路。

粒子滤波的算法流程如下:

其中 $\mathcal X$代表粒子群,用粒子群来表示状态可信度的概率分布
1.第四行通过$t-1$时刻的粒子群表示的概率分布以及当前的控制信息$u_t$来产生$t$时刻的粒子群,该粒子群就是对当前状态可信度概率的评估。
2.第五行根据测量数据计算每个粒子的重要因子(importance factor)
3.第八行到第十一行被称为resampling 或者 importance resampling。根据第二步中的重要因子对粒子群进行重采样。重要因子中融合了测量数据,因此重采样过程就是对可信度概率的评估根据测量数据进行修正。这同样是通过粒子群来表达的。

粒子滤波存在四个方面的近似误差,这四个方面也是改进粒子滤波的重要方面。
1.用来表示概率分布的粒子数M是有限的。在M=1的极限情况下,重采样阶段会舍弃所有的测量信息。幸运的是M越大,这种影响越轻微。
2.在重采样阶段的随机性问题。不断的重采样会导致最终结果趋于一个固定值而丢失了状态的多样性。
减少这个误差有两个思路,第一是减少重采样的频率,第二是低方差采样(low variance sampling)。
3.粒子滤波得到的评估概率分布(proposal distribution)和经过修正的目标概率分布(target distribution)的分歧。
4.在高维状态空间中,对某些状态周围可能未采样到粒子,因此无法对这些状态进行概率评估。简单的做法也是增大M的数值。

总结

这一章节的内容比较抽象,包括直方图滤波中的区域概率的估计以及连续的状态空间的分解。包括粒子滤波中的用粒子群来表示概率分布,通过粒子群重采样来修正概率分布。对这方面的内容有进一步的学习和理解之后,再深化这篇文章的内容。