数学概念
理解基础的数学概念,是理解贝叶斯滤波的前提,由于公式推理中会经常用到这些公式,所以写在博客的开头以便后面翻看。
独立:
p
(
x
,
y
)
=
p
(
x
)
p
(
y
)
p
(
x
∣
y
)
=
p
(
x
)
p
(
y
∣
x
)
=
p
(
y
)
(1.1)
p(x,y) = p(x)p(y) \\ p(x|y) = p(x) \\ p(y|x) = p(y) \tag{1.1}
p(x,y)=p(x)p(y)p(x∣y)=p(x)p(y∣x)=p(y)(1.1)
条件独立:
表
示
当
条
件
z
存
在
时
,
x
,
y
独
立
p
(
x
,
y
∣
z
)
=
p
(
x
∣
z
)
p
(
y
∣
z
)
当
x
与
z
相
关
,
与
y
无
关
时
p
(
x
∣
y
,
z
)
=
p
(
x
∣
z
)
p
(
y
∣
x
,
z
)
=
p
(
y
∣
z
)
(1.2)
表示当条件z存在时,x,y独立\\ p(x,y|z) = p(x|z)p(y|z) \\ 当x与z相关,与y无关时\\ p(x|y,z) = p(x|z) \\ p(y|x,z) = p(y|z) \tag{1.2}
表示当条件z存在时,x,y独立p(x,y∣z)=p(x∣z)p(y∣z)当x与z相关,与y无关时p(x∣y,z)=p(x∣z)p(y∣x,z)=p(y∣z)(1.2)
全概率公式:
p
(
x
)
=
∫
p
(
x
∣
y
)
p
(
y
)
d
y
(1.3)
p(x) = \int p(x|y)p(y){\rm d}y \tag{1.3}
p(x)=∫p(x∣y)p(y)dy(1.3)
条件概率公式:
p
(
x
,
y
)
=
p
(
x
∣
y
)
p
(
y
)
=
p
(
y
∣
x
)
p
(
x
)
(1.4)
p(x,y) = p(x|y)p(y) = p(y|x)p(x) \tag{1.4}
p(x,y)=p(x∣y)p(y)=p(y∣x)p(x)(1.4)
贝叶斯公式:
p
(
x
,
y
)
=
p
(
x
∣
y
)
p
(
y
)
=
p
(
y
∣
x
)
p
(
x
)
→
p
(
x
∣
y
)
=
p
(
y
∣
x
)
p
(
x
)
p
(
y
)
=
η
p
(
y
∣
x
)
p
(
x
)
(
但
p
(
y
)
相
对
不
重
要
或
可
以
计
算
出
来
可
用
η
表
示
)
(1.5)
p(x,y) = p(x|y)p(y) = p(y|x)p(x) \\ \rightarrow p(x|y) = \frac{p(y|x)p(x)}{p(y)} = \eta p(y|x)p(x) \tag{1.5} \\ (但p(y)相对不重要或可以计算出来可用\eta表示)
p(x,y)=p(x∣y)p(y)=p(y∣x)p(x)→p(x∣y)=p(y)p(y∣x)p(x)=ηp(y∣x)p(x)(但p(y)相对不重要或可以计算出来可用η表示)(1.5)
条件贝叶斯公式:
p
(
x
∣
y
,
z
)
=
p
(
y
∣
x
,
z
)
p
(
x
∣
z
)
p
(
y
∣
z
)
=
η
p
(
y
∣
x
,
z
)
p
(
x
∣
z
)
(1.6)
p(x|y,z) = \frac{p(y|x,z)p(x|z)}{p(y|z)} = \eta p(y|x,z)p(x|z) \tag{1.6}
p(x∣y,z)=p(y∣z)p(y∣x,z)p(x∣z)=ηp(y∣x,z)p(x∣z)(1.6)
贝叶斯滤波
gmapping是目前应用最广泛的基于滤波的SLAM算法,其算法实现是基于粒子滤波,而粒子滤波的本质就是贝叶斯滤波。在这篇文章中,我会结合机器人定位来讲解贝叶斯滤波。
介绍
- 估计的是概率分布,不是具体的数值
- 是一大类方法的统称
- 是一个抽象的表达形式—对于不同问题有不同的实现方式(卡尔曼家族、粒子滤波)
- 迭代估计形式
推导
1、符号说明:
x
t
x_t
xt:表示
t
t
t时刻机器人的位姿;
z
t
z_t
zt:表示
t
t
t时刻机器人的观测数据(激光雷达的数据);
u
t
u_t
ut:表示
t
t
t时刻机器人的编码器里程计的数据。
2、贝叶斯滤波的更新公式:
b
e
l
(
x
t
)
=
p
(
x
t
∣
z
1
:
t
,
u
1
:
t
)
=
η
p
(
z
t
∣
x
t
)
b
e
l
‾
(
x
t
)
其
中
:
b
e
l
‾
=
∫
p
(
x
t
∣
x
t
−
1
,
u
t
)
p
(
x
t
−
1
∣
z
1
:
t
−
1
,
u
1
:
t
−
1
)
d
x
t
−
1
(2.1)
bel(x_t) = p(x_t|z_{1:t},u_{1:t}) = \eta p(z_t|x_t) \overline{bel}(x_t)\\ 其中: \overline{bel} = \int{p(x_t|x_{t-1},u_t) p(x_{t-1}|z_{1:t-1},u_{1:t-1})}{\rm d}x_{t-1}\\ \tag{2.1}
bel(xt)=p(xt∣z1:t,u1:t)=ηp(zt∣xt)bel(xt)其中:bel=∫p(xt∣xt−1,ut)p(xt−1∣z1:t−1,u1:t−1)dxt−1(2.1)
该公式的作用是在已知
t
−
1
t-1
t−1时刻的概率分布,在给定
t
t
t时刻的观测数据
(
z
t
,
u
z
)
(z_t,u_z)
(zt,uz)的情况下,估计出状态量在
t
t
t时刻的概率分布。此处
b
e
l
(
x
t
)
bel(x_t)
bel(xt)表示
x
t
x_t
xt的后验概率分布,
b
e
l
‾
\overline{bel}
bel表示
x
t
x_t
xt的预测概率分布(先验概率分布)。
3、贝叶斯滤波的推导:
目标:在已知
p
(
x
t
−
1
∣
z
1
:
t
−
1
,
u
1
:
t
−
1
)
、
u
t
、
z
t
p(x_{t-1}|z_{1:t-1},u_{1:t-1})、u_t、z_t
p(xt−1∣z1:t−1,u1:t−1)、ut、zt的情况下,得到
p
(
x
t
∣
z
1
:
t
,
u
1
:
t
)
p(x_t|z_{1:t},u_{1:t})
p(xt∣z1:t,u1:t)的表达式。
p
(
x
t
∣
z
1
:
t
,
u
1
:
t
)
=
p
(
x
t
∣
z
t
,
z
1
:
t
−
1
,
u
1
:
t
)
=
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
)
=
η
p
(
z
t
∣
x
t
,
z
1
:
t
−
1
,
u
1
:
t
)
p
(
x
t
∣
z
1
:
t
−
1
,
u
1
:
t
)
(2.2)
p(x_t|z_{1:t},u_{1:t}) = p(x_t|z_t, z_{1:t-1},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}) \tag{2.2}
p(xt∣z1:t,u1:t)=p(xt∣zt,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(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)(2.2)
因为当前时刻的激光观测数据
z
t
z_t
zt仅与位姿
x
t
x_t
xt有关,与历史观测
z
1
:
t
−
1
z_{1:t-1}
z1:t−1及历史到当前位姿
u
1
:
t
u_{1:t}
u1:t无关(已知
t
t
t时刻位姿后,观测
z
t
z_t
zt就与
x
t
x_t
xt有关,与
u
t
u_t
ut无关),公式
(
2.2
)
(2.2)
(2.2)第一步将
z
t
z_t
zt与
z
1
:
t
−
1
z_{1:t-1}
z1:t−1分开。然后先忽略
z
1
:
t
−
1
z_{1:t-1}
z1:t−1和
u
1
:
t
u_{1:t}
u1:t,将
p
(
x
t
∣
z
t
)
p(x_t|z_t)
p(xt∣zt)用贝叶斯公式展开,再把
z
1
:
t
−
1
z_{1:t-1}
z1:t−1和
u
1
:
t
u_{1:t}
u1:t代人展开的式子中。
另外,我们还需要将公式(2.2)简化一下。
其中:
已知
t
t
t时刻位姿后,观测
z
t
z_t
zt就与当前位姿
x
t
x_t
xt有关,与
u
1
:
t
u_{1:t}
u1:t和
z
1
:
t
−
1
z_{1:t-1}
z1:t−1无关:
p
(
z
t
∣
x
t
,
z
1
:
t
−
1
,
u
1
:
t
)
=
p
(
z
t
∣
x
t
)
(2.3)
p(z_t|x_t,z_{1:t-1},u_{1:t}) = p(z_t|x_t) \tag{2.3}
p(zt∣xt,z1:t−1,u1:t)=p(zt∣xt)(2.3)
这里是将
p
(
x
t
∣
z
1
:
t
−
1
,
u
1
:
t
)
p(x_t|z_{1:t-1},u_{1:t})
p(xt∣z1:t−1,u1:t)用全概率公式展开得到
x
t
x_t
xt与
x
t
−
1
x_{t-1}
xt−1的关系:
p
(
x
t
∣
z
1
:
t
−
1
,
u
1
:
t
)
=
∫
p
(
x
t
∣
x
t
−
1
,
z
1
:
t
−
1
,
u
1
:
t
)
p
(
x
t
−
1
∣
z
1
:
t
−
1
,
u
1
:
t
)
d
x
t
−
1
(2.4)
p(x_t|z_{1:t-1},u_{1: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}){\rm d}x_{t-1} \\ \tag{2.4}
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(2.4)
将上面全概率公式再简化,得到:
p
(
x
t
∣
x
t
−
1
,
z
1
:
t
−
1
,
u
1
:
t
)
=
p
(
x
t
∣
x
t
−
1
,
u
t
)
p
(
x
t
−
1
∣
z
1
:
t
−
1
,
u
1
:
t
)
=
p
(
x
t
−
1
∣
z
1
:
t
−
1
,
u
1
:
t
−
1
)
(2.5)
p(x_t|x_{t-1},z_{1:t-1},u_{1:t}) = p(x_t|x_{t-1},u_t) \\ p(x_{t-1}|z_{1:t-1},u_{1:t}) = p(x_{t-1}|z_{1:t-1},u_{1:t-1}) \tag{2.5}
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)(2.5)
上面公式
p
(
x
t
∣
x
t
−
1
,
z
1
:
t
−
1
,
u
1
:
t
)
=
p
(
x
t
∣
x
t
−
1
,
u
t
)
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)便是机器人的运动模型。
令:
b
e
l
(
x
t
)
=
p
(
x
t
∣
z
1
:
t
,
u
1
:
t
)
b
e
l
(
x
t
)
‾
=
p
(
x
t
∣
z
1
:
t
−
1
,
u
1
:
t
)
(2.6)
bel(x_t) = p(x_t|z_{1:t},u_{1:t}) \\ \overline{bel(x_t)} = p(x_t|z_{1:t-1},u_{1:t}) \tag{2.6}
bel(xt)=p(xt∣z1:t,u1:t)bel(xt)=p(xt∣z1:t−1,u1:t)(2.6)
b
e
l
(
x
t
)
bel(x_t)
bel(xt)是后验概率分布,也就是我们要求的实际分布;
b
e
l
(
x
t
)
‾
\overline{bel(x_t)}
bel(xt)是先验概率分布,也就是根据里程计数据得到的预测(proposal)分布。最后得到的式子如下:
b
e
l
(
x
t
)
=
η
p
(
z
t
∣
x
t
)
b
‾
e
l
(
x
t
)
(2.7)
bel(x_t) = \eta p(z_t|x_t)\overline bel(x_t) \tag{2.7}
bel(xt)=ηp(zt∣xt)bel(xt)(2.7)
实例
在上图a中,机器人的位置的概率分布是一个均匀分布,所以机器人无法获知自己的位置。图b中,机器人通过传感器检测知道了自己的位置在门旁边,这时候概率分布就变成了在门对应的位置有一个较大的波峰,表示机器人可能在这三个位置上,但无法确定是哪一个门。图c较图b,机器人向前移动了一定距离,到了另一个门边上,此时机器人的位置概率分布也随之产生变化,波峰的位置改变。这时候,图c的概率分布是通过里程计计算预测得到的,为先验概率分布,图d的概率分布通过观测数据更新后,得到的后验概率分布就确定了机器人的位置。