版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hzwwpgmwy/article/details/81607963
参考书:slam十四讲
着重理解如何将滤波的方法和优化的方法统一到贝叶斯的框架下的.
经典SLAM模型:
{xk=f(xx−1,uk)+wkzk,j=h(yj,xk)+vk,j
其中,第一个是运动方程,第二个是观测方程. SLAM的问题其实就是根据运动输入
u
和观测
z
,求什么样的状态
x
能使状态
x
的条件概率分布最大:
x∗MAP=arg maxP(x|z,u)
非线性优化
在只考虑观测方程时,也就是没有测量运动输入时(注意:这里不是说整个系统没有运动输入,而是观测方程中不包含运动输入这一项,也就是说运动输入只出现在运动方程中),根据贝叶斯法则,有:
P(x|z)=P(z|x)P(x)P(z)∝P(z|x)P(x)
其中,
P(x|z)
是
后验概率
,右侧的
P(z|x)
叫做
似然
,
P(x)
叫做
先验
.
我们的目的是寻找
x
使得
P(x|z)
最大,即
最大后验概率
,它等于
似然
与
先验
的乘积,因为我们在观测方程中不知道机器人位姿在哪里(
注意,
这是因为观测方程没有运动输入啊,运动输入属于运动方程的范畴,注意跟KF的区别),所以就没有先验喽~,然后上面的
最大后验概率
问题就转换成了
最大似然
问题,即:
x∗MLE=arg maxP(z|x)
最大似然估计
可以理解为:“在什么样的状态下,最可能产生现在观测的数据.”
根据观测方程(
注意,这个位置
xk
与KF中观测方程中
x˜k
是不一样的,KF里是指状态变量的
先验估计
,这里没有先验的说法,而就是指
优化变量
本身.)
zk,j=h(yj,xk)+vk,j
得到观测数据的条件概率为:
P(zj,k|xk,yj)=N(h(yj,xk), Qk,j)
多维高斯分布概率密度函数为:
P(x)=1(2π)2det(Σ)−−−−−−−−−−√exp(−12(x−u)TΣ−1(x−u))
接着根据
最小化负对数的方式,对状态的
最大似然估计
转换成:
x∗=arg min(zk,j−h(yj,xk))TQ−1k,j(zk,j−h(yj,xk))
该式等价于最小化噪声项(即误差)的平方(
Σ
范数意义下),这里的误差也叫做
残差
,如下:
ey,j,k=zk,j−h(yj,xk)
卡尔曼滤波
xk=Akxk−1+Bkuk+wkzk=Ckxk+vk
KF状态转移方程如下:
xk=Akxk−1+Bkuk+wk
假设状态变量符合高斯分布时,我们将
只需维护状态变量的均值和协方差即可,均值为:
x˜k=Akx^k−1+Bkuk
使用
协方差传递律
,可得状态变量的协方差如下:
P˜k=AkP^k−1ATk+BkMkBTk
根据刚才推导的,后验概率:
P(xk|zk)=P(zk|xk)P(xk)
为了推导KF公式,这里将结果设为
xk∼N(x^k, P^k)
,然后根据
后验概率
公式得到:
N(x^k, P^k)=N(Ckxk, R)⋅N(x˜k, P˜k)
令指数部分相等,即可推出 KF的三个更新方程,这样能看到
贝叶斯法则
是如何应用到KF滤波中的了.
<完>
@leatherwang