《概率机器人》学习系列(一)——贝叶斯滤波

        最近正在学习<<概率机器人>>,可能会出一系列有关的文章,主要也是为了记录自己学习的过程,如果写的不对的地方,望不吝赐教。本章主要讲自己对贝叶斯估计的一些理解。

        一、贝叶斯估计是一种抽象的概念,是一类方法的总称

        刚开始学习贝叶斯估计的时候,总是认为贝叶斯估计是具体算法流程,想具体实现,找着资料才发现原来是一系列方法的总称。它的具体实现为 粒子滤波卡尔曼滤波等等。贝叶斯滤波主要分为 预测 和  修正 两个过程。

       二、算法流程介绍

         我从实际情况来介绍一下贝叶斯滤波,详细的数学推导可以看书本,首先先放出贝叶斯滤波的算法流程:

《概率机器人》学习系列(一)——贝叶斯滤波_第1张图片

其中:

\overline{bel(x_{t})} :此过程为 预测,它的具体形式为:

                                                     \int p(x_{_{t}}|x_{t-1},u_{t})p(x_{t-1}|z_{1:t-1},u_{1:t-1})dx_{t-1}

p(x_{_{t}}|x_{t-1},u_{t}) : u_{t} 为里程计 t-1 时刻到 t 时刻的姿态变化,x_{t-1} 为 t-1 时刻的机器人位姿,而 x_{t} 的位姿就是通过运动学模型的得到的,所以这个式子的意思是想告诉我们 x_{t} = x_{t-1} + u_{t} ,实际上的运算并不是这样子,这只是为了方便说明而简化了,详细的运算可以看看概率机器人的运动学模型那一章,那里有详细的推导,后期的文章也会讲解。我个人的理解这一部分就是预测了。

p(x_{t-1}|z_{1:t-1},u_{1:t-1})  : 这个就是x_{t-1} 为t-1时刻的机器人位姿,是一个已知的条件,所以只需管p(x_{_{t}}|x_{t-1},u_{t})即可。

bel(x_{t}) : 此过程为 修正。

\overline{bel(x_{t})} 这个就无需介绍了,这一步就是预测,而 \eta 为归一化因子,就是贝叶斯准则的分母的倒数。

p(z_{t}|x_{t}) : 这个实际上就是观测模型,如果是已知观测模型的系统,可直接套入前面讲到的预测的x_{t}来计算观测的具体值,如果是机器人的话,是算似然域得分,这一个过程我会在未来几篇专门讲解。

整个贝叶斯滤波就是不断预测,修正,预测,修正......如果想从代码入手,就多看看卡尔曼滤波和粒子滤波的代码实现,这都是贝叶斯滤波的具体实现,概率机器人上也有讲解,也可以看看gmapping,这个也是基于滤波器实现的。

 

 

 

你可能感兴趣的:(概率机器人)