【SLAM笔记】贝叶斯滤波与Graph-SLAM

SLAM问题的处理方法主要分为滤波和图优化两类。

一、滤波方法(定位)

从贝叶斯理论的观点看,机器人定位问题就是要求已知历史的动作uku_{k},感知zkz_{k},利用其两者确定机器人当前的状态xkx_{k}
据此定义贝叶斯模型:
bel(xt)=p(xtz1:t,u1:t) bel(x_{t}) = p(x_t|z_{1:t}, u_{1:t})
利用贝叶斯法则可得:
=ηp(ztxt,z1:t1,u1:t)p(xtz1:t1,u1:t) = \eta p(z_t|x_t,z_{1:t-1},u_{1:t})p(x_t|z_{1:t-1},u_{1:t})
其中η=1p(ztz1:t1,u1:t)\eta = \frac{1}{p(z_t|z_{1:t-1},u_{1:t})}为归一化常数。
根据Markov假设和全概率公式有:
=ηp(ztxt)p(xtxt1,z1:t1,u1:t)p(xt1z1:t1,u1:t)dxt1=ηp(ztxt)p(xtxt1,ut)p(xt1z1:t1,u1:t1)dxt1=ηp(ztxt)p(xtxt1,ut)bel(xt1)dxt1 = \eta p(z_t|x_t) \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})dx_{t-1} \\ = \eta p(z_t|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} \\ = \eta p(z_t|x_t) \int p(x_t|x_{t-1},u_t)bel(x_{t-1})dx_{t-1}
据此可得出运动模型与观测模型如下:

运动模型

运动模型解决的问题是:
如何在当前位置xt1x_{t-1}作出动作utu_t时,给出机器人所处位置的概率分布。
belˉ(xt)=ηp(xtxt1,ut)bel(xt1)dxt1 \bar{bel}(x_{t}) = \eta \int p(x_t|x_{t-1},u_t)bel(x_{t-1})dx_{t-1}

观测模型

观测模型解决的问题是:
如何在感知到zz信息的情况下,更新当前的状态xx
bel(xt)=p(ztxt)belˉ(xt) bel(x_{t}) = p(z_t|x_t)\bar{bel}(x_{t})
为求解以上的机器人定位问题,有两种主要的方法:
(1)粒子滤波(离散) (2)卡尔曼滤波(连续)

1、粒子滤波(Monte Carlo Localization)

bel(xt)=ηp(ztxt)p(xtxt1,ut)bel(xt1)dxt1 bel(x_{t}) = \eta \int p(z_t|x_t)p(x_t|x_{t-1},u_t)bel(x_{t-1})dx_{t-1}
上面的推导过程中需要用到积分,对于一般的非线性,非高斯系统,很难得到后验概率的解析解。为了解决这个问题,需要引进蒙特卡洛采样,此方法也称为粒子滤波。
【SLAM笔记】贝叶斯滤波与Graph-SLAM
知识点:

  • 因为bel(xt1)bel(x_{t-1})难以采样,故引入重要性采样的方法去估计bel(xt)bel(x_{t})
    bel(xt)=ηp(ztxt)p(xtxt1,ut)q(xt1)bel(xt1)q(xt1)dxt1=ηEq[p(ztxt)p(xtxt1,ut)bel(xt1)q(xt1)] bel(x_{t}) = \eta \int p(z_t|x_t)p(x_t|x_{t-1},u_t)q(x_{t-1})\frac{bel(x_{t-1})}{q(x_{t-1})}dx_{t-1} \\ = \eta \mathbb{E_q} [p(z_t|x_t)p(x_t|x_{t-1},u_t)\frac{bel(x_{t-1})}{q(x_{t-1})}] 参考:Particle Filter Tutorial 粒子滤波:从推导到应用(二)

2、卡尔曼滤波(连续)

假设
Move:
p(xkxk1,uk)p(x_k|x_{k-1},u_{k}) ~ N(Akxk1+Bkuk,Rt)\mathcal N(A_{k}x_{k-1}+B_{k}u_{k},R_{t})
p(xk1)p(x_{k-1}) ~ N(μk1,Σk1)\mathcal N(\mu_{k-1},\Sigma_{k-1})
Sense:
p(ykxk)p(y_{k}|x_{k}) ~ N(Ckxk,Qk)\mathcal N(C_{k}x_{k},Q_{k})
p(xk)p(x_{k}) ~ N(μˉk,Σˉk)\mathcal N(\bar{\mu}_{k},\bar{\Sigma}_{k})
据此可推导μk\mu_{k}Σk\Sigma_{k},推导的知识点包括:

  • p(xkxk1,uk)p(x_k|x_{k-1},u_{k})p(xk1)p(x_{k-1})的乘积仍然为高斯分布。
  • 为了对xk1x_{k-1}部分进行积分,可先分离出关于xk1x_{k-1}的高斯分布。
  • 高斯分布一阶导的零点为均值,二阶导的零点为协方差的逆。
    参考:卡尔曼滤波器(THE KALMAN FILTER)的数学原理
    【SLAM笔记】贝叶斯滤波与Graph-SLAM

二、图优化方法(定位与建图)

Graph SLAM

GraphSLAM背后的思想主要是把机器人或Landmarks的位姿抽象为点,把机器人在不同位姿运动和观测的约束抽象为边。从而构成信息矩阵Ω\Omega和信息向量ξ\xi,并满足Ω\Omegaμ\mu=ξ\xi,故地图所有点的位姿μ\mu可由以下式子求得:μ=Ω1ξ\mu=\Omega^{-1}\xi
【SLAM笔记】贝叶斯滤波与Graph-SLAM
【SLAM笔记】贝叶斯滤波与Graph-SLAM
【SLAM笔记】贝叶斯滤波与Graph-SLAM

参考资料

Particle Filter Tutorial 粒子滤波:从推导到应用(一)
卡尔曼滤波器(THE KALMAN FILTER)的数学原理
SLAM笔记三——贝叶斯滤波器
Particle Filter Tutorial 粒子滤波:从推导到应用(二)
【SLAM】(二)Cartographer的原理探究——GraphSLAM理论基础