SLAM中基于滤波与优化的方法的联系

参考书:slam十四讲、SLAM中的EKF,UKF,PF原理简介

基于滤波的状态估计思路是,用前一个时刻的值来估计下一个时刻,而优化则是把所有状态看成变量,把运动方程和观测方程看成变量间的约束,构造误差函数,然后最小化这个误差的二次型。这里,着重理解如何将滤波的方法和优化的方法统一到贝叶斯的框架下的.


经典SLAM模型:
{ x k = f ( x x − 1 , u k ) + w k z k , j = h ( y j , x k ) + v k , j \left\{\begin{matrix} x_k=f(x_{x-1},u_k)+w_k \\ z_{k,j}=h(y_j,x_k)+v_{k,j} \end{matrix}\right. {xk=f(xx1,uk)+wkzk,j=h(yj,xk)+vk,j
其中,第一个是运动方程,第二个是观测方程. SLAM的问题其实就是根据运动输入 u u u 和观测 z z z,求什么样的状态 x x x 能使状态 x x x 的条件概率分布最大:
x M A P ∗ = a r g   m a x P ( x ∣ z , u ) x_{MAP}^*=arg\ maxP(x|z,u) xMAP=arg maxP(xz,u)


非线性优化

只考虑观测方程时,也就是没有测量运动输入时(注意这里不是说整个系统没有运动输入,而是观测方程中不包含运动输入这一项,也就是说运动输入只出现在运动方程中),根据贝叶斯法则,有:
P ( x ∣ z ) = P ( z ∣ x ) P ( x ) P ( z ) ∝ P ( z ∣ x ) P ( x ) P(x|z)=\frac{P(z|x)P(x)}{P(z)}\propto P(z|x)P(x) P(xz)=P(z)P(zx)P(x)P(zx)P(x)
其中, P ( x ∣ z ) P(x|z) P(xz)后验概率,右侧的 P ( z ∣ x ) P(z|x) P(zx) 叫做似然 P ( x ) P(x) P(x) 叫做先验.
我们的目的是寻找 x x x 使得 P ( x ∣ z ) P(x|z) P(xz) 最大,即最大后验概率,它等于似然先验的乘积,因为我们在观测方程中不知道机器人位姿在哪里(注意这是因为观测方程没有运动输入啊,运动输入属于运动方程的范畴,注意跟KF的区别),所以就没有先验喽~,然后上面的最大后验概率问题就转换成了最大似然问题,即:
x M L E ∗ = a r g   m a x P ( z ∣ x ) x_{MLE}^*=arg\ maxP(z|x) xMLE=arg maxP(zx)
最大似然估计可以理解为:“在什么样的状态下,最可能产生现在观测的数据.”
根据观测方程(注意,这个位置 x k x_k xk 与KF中观测方程中 x ~ k \widetilde x_k x k 是不一样的,KF里是指状态变量的先验估计,这里没有先验的说法,而就是指优化变量本身.)
z k , j = h ( y j , x k ) + v k , j z_{k,j}=h(y_j,x_k)+v_{k,j} zk,j=h(yj,xk)+vk,j
得到观测数据的条件概率为:
P ( z j , k ∣ x k , y j ) = N ( h ( y j , x k ) ,   Q k , j ) P(z_{j,k}|x_k,y_j)=N(h(y_j,x_k),\ Q_{k,j}) P(zj,kxk,yj)=N(h(yj,xk), Qk,j)
多维高斯分布概率密度函数为:
P ( x ) = 1 ( 2 π ) 2 d e t ( Σ ) e x p ( − 1 2 ( x − u ) T Σ − 1 ( x − u ) ) P(x)=\frac1{\sqrt{(2\pi)^2det(\Sigma)}}exp\left(-\frac12 (x-u)^T\Sigma^{-1}(x-u)\right) P(x)=(2π)2det(Σ) 1exp(21(xu)TΣ1(xu))
接着根据最小化负对数的方式,对状态的最大似然估计转换成:
x ∗ = a r g   m i n ( z k , j − h ( y j , x k ) ) T Q k , j − 1 ( z k , j − h ( y j , x k ) ) x^*=arg\ min(z_{k,j}-h(y_j,x_k))^TQ_{k,j}^{-1}(z_{k,j}-h(y_j,x_k)) x=arg min(zk,jh(yj,xk))TQk,j1(zk,jh(yj,xk))
该式等价于最小化噪声项(即误差)的平方( Σ \Sigma Σ 范数意义下),这里的误差也叫做残差,如下:
e y , j , k = z k , j − h ( y j , x k ) e_{y,j,k}=z_{k,j}-h(y_j,x_k) ey,j,k=zk,jh(yj,xk)


卡尔曼滤波

x k = A k x k − 1 + B k u k + w k z k = C k x k + v k \begin {equation} \begin {split} &x_k=A_kx_{k-1} + B_ku_k+w_k \\ &z_k=C_kx_k+v_k \end {split} \nonumber \end {equation} xk=Akxk1+Bkuk+wkzk=Ckxk+vk
KF状态转移方程如下:
x k = A k x k − 1 + B k u k + w k x_k=A_kx_{k-1} + B_ku_k+w_k \\ xk=Akxk1+Bkuk+wk
假设状态变量符合高斯分布时,我们将只需维护状态变量的均值和协方差即可,均值为:
x ~ k = A k x ^ k − 1 + B k u k \widetilde x_k=A_k \hat x_{k-1} + B_ku_k x k=Akx^k1+Bkuk
使用协方差传递律,可得状态变量的协方差如下:
P ~ k = A k P ^ k − 1 A k T + B k M k B k T \widetilde{P}_k=A_k\hat{P}_{k-1}A_k^T+B_kM_kB_k^T P k=AkP^k1AkT+BkMkBkT
根据刚才推导的,后验概率:
P ( x k ∣ z k ) = P ( z k ∣ x k ) P ( x k ) P(x_k|z_k)= P(z_k|x_k)P(x_k) P(xkzk)=P(zkxk)P(xk)
为了推导KF公式,这里将结果设为 x k ∼ N ( x ^ k ,   P ^ k ) x_k \sim N(\hat x_k,\ \hat P_k) xkN(x^k, P^k),然后根据后验概率公式得到:
N ( x ^ k ,   P ^ k ) = N ( C k x k ,   R ) ⋅ N ( x ~ k ,   P ~ k ) N(\hat x_k,\ \hat P_k)=N(C_kx_k,\ R)·N(\widetilde x_k, \ \widetilde P_k) N(x^k, P^k)=N(Ckxk, R)N(x k, P k)
令指数部分相等,即可推出 KF的三个更新方程,这样能看到贝叶斯法则是如何应用到KF滤波中的了.


<完>
@leatherwang


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值