SLAM最大后验估计求解

问题定义

运 动 方 程 : x k = A k − 1 x k − 1 + v k + w k , k = 1   .   .   .   K \qquad 运动方程:x_k=A_{k-1}x_{k-1}+v_k+w_k,\quad k=1\ .\ .\ .\ K xk=Ak1xk1+vk+wk,k=1 . . . K
观 测 方 程 : y k = C k x k + n k , k = 0   .   .   .   K \qquad观测方程:y_k=C_kx_k+n_k,\quad k=0\ .\ .\ .\ K yk=Ckxk+nk,k=0 . . . K
其中 k k k为时间下标,最大值为 K K K。各变量的含义如下
系统状态:   x k   ϵ   R n \qquad \ x_k\ \epsilon \ R^n  xk ϵ Rn
初始状态:   x 0   ϵ   R n ∼ N ( x ˇ 0 , P ˇ 0 ) \qquad \ x_0\ \epsilon \ R^n\sim N(\check x_0,\check P_0)  x0 ϵ RnN(xˇ0,Pˇ0)
输⼊: v k   ϵ   R n \qquad \qquad v_k\ \epsilon \ R^n vk ϵ Rn
过程噪声:   w k   ϵ   R n ∼ N ( 0 , Q k ) \qquad \ w_k\ \epsilon \ R^n\sim N(0,Q_k)  wk ϵ RnN(0,Qk)
测量: y k   ϵ   R m \qquad \qquad y_k\ \epsilon \ R^m yk ϵ Rm
测量噪声:   n k   ϵ   R m ∼ N ( 0 , R k ) \qquad \ n_k\ \epsilon \ R^m\sim N(0,R_k)  nk ϵ RmN(0,Rk)

状态估计问题是指,在 k k k个(一个或多个)时间点上,基于初始的状态信息 x ˇ 0 \check x_0 xˇ0,一系列观测数据 y 0 : K , m e a s y_{0:K,meas} y0:K,meas,一系列输入 v 1 : K v_{1:K} v1:K,以及系统的运动和观测模型,来计算系统的真实状态的估计值 x ^ k \hat x_k x^k

最大后验估计(Maximum A Posteriori, MAP)

MAP的目标就是求解以下问题:
x ^ = arg max ⁡ x p ( x ∣ v , y ) \hat x=\argmax_x p(x|v,y) x^=xargmaxp(xv,y)
由公式:
p ( x , y , v ) = p ( y ∣ x , v ) p ( x , v ) = p ( x ∣ v , y ) p ( v ∣ y ) \qquad p(x,y,v)=p(y|x,v)p(x,v)=p(x|v,y)p(v|y) p(x,y,v)=p(yx,v)p(x,v)=p(xv,y)p(vy)
p ( x , v ) = p ( x ∣ v ) p ( v ) \qquad p(x,v)=p(x|v)p(v) p(x,v)=p(xv)p(v)
p ( v , y ) = p ( y ∣ v ) p ( v ) \qquad p(v,y)=p(y|v)p(v) p(v,y)=p(yv)p(v)
可得出:
x ^ = arg max ⁡ x p ( x ∣ v , y ) = arg max ⁡ x p ( y ∣ x , v ) p ( x ∣ v ) p ( y ∣ v ) \hat x=\argmax_x p(x|v,y)=\argmax_x \frac{p(y|x,v)p(x|v)}{p(y|v)} x^=xargmaxp(xv,y)=xargmaxp(yv)p(yx,v)p(xv)
又因为上式分母和 x x x无关,可以把分母略去,同时在 x x x已知的情况下 p ( y ∣ x , v ) p(y|x,v) p(yx,v)中的v可以省略。
所以可以得到:
x ^ = arg max ⁡ x p ( x ∣ v , y ) = arg max ⁡ x p ( y ∣ x , v ) p ( x ∣ v ) p ( y ∣ v ) = arg max ⁡ x p ( y ∣ x ) p ( x ∣ v ) \hat x=\argmax_x p(x|v,y)=\argmax_x \frac{p(y|x,v)p(x|v)}{p(y|v)}=\argmax_x p(y|x)p(x|v) x^=xargmaxp(xv,y)=xargmaxp(yv)p(yx,v)p(xv)=xargmaxp(yx)p(xv)
假设所有时刻的 w k w_k wk n k n_k nk之间是无关的。则有:
p ( y ∣ x ) = ∐ k = 0 K p ( y k ∣ x k ) p(y|x) = \coprod_{k=0}^{K}p(y_k|x_k) p(yx)=k=0Kp(ykxk)
还有:
p ( x ∣ v ) = ∐ k = 1 K p ( x k ∣ x k − 1 , v k ) p(x|v) = \coprod_{k=1}^{K}p(x_k|x_{k-1},v_k) p(xv)=k=1Kp(xkxk1,vk)
在线性系统中,高斯密度函数可展开为:
p ( x 0 ∣ x ˇ 0 ) = 1 ( 2 π ) N d e t P ˇ 0 × e x p ( − 1 2 ( x 0 − x ˇ 0 ) T P ˇ 0 − 1 ( x 0 − x ˇ 0 ) ) p(x_0|\check x_0)=\frac{1}{\sqrt {(2\pi)^Ndet\check P_0}}\times exp(-\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0)) p(x0xˇ0)=(2π)NdetPˇ0 1×exp(21(x0xˇ0)TPˇ01(x0xˇ0))
p ( x k ∣ x k − 1 , v k ) = 1 ( 2 π ) N d e t Q k × e x p ( − 1 2 ( x k − A k − 1 x k − 1 − v k ) T Q k − 1 ( x k − A k − 1 x k − 1 − v k ) ) p(x_k|x_{k-1},v_k)=\frac{1}{\sqrt {(2\pi)^NdetQ_k}}\times exp(-\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k)) p(xkxk1,vk)=(2π)NdetQk 1×exp(21(xkAk1xk1vk)TQk1(xkAk1xk1vk))
p ( y k ∣ , x k ) = 1 ( 2 π ) M d e t R k × e x p ( − 1 2 ( y k − C k x k ) T R k − 1 ( y k − C k x k ) ) p(y_k|,x_k)=\frac{1}{\sqrt {(2\pi)^MdetR_k}}\times exp(-\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k)) p(yk,xk)=(2π)MdetRk 1×exp(21(ykCkxk)TRk1(ykCkxk))
对等式两端取对数:
l n   p ( y ∣ x ) p ( x ∣ v ) ) = l n   p ( x 0 ∣ x ˇ 0 ) + ∑ k = 1 K l n   p ( x k ∣ x k − 1 , v k ) + ∑ k = 0 K l n   p ( y k ∣ x k ) ) ln\ p(y|x)p(x|v))=ln\ p(x_0|\check x_0)+\sum_{k=1}^{K}ln\ p(x_k|x_{k-1},v_k)+\sum_{k=0}^{K}ln\ p(y_k|x_k)) ln p(yx)p(xv))=ln p(x0xˇ0)+k=1Kln p(xkxk1,vk)+k=0Kln p(ykxk))
有:
l n   p ( x 0 ∣ x ˇ 0 ) = − 1 2 ( x 0 − x ˇ 0 ) T P ˇ 0 − 1 ( x 0 − x ˇ 0 ) ) − 1 2 l n ( ( 2 π ) N d e t P ˇ 0 ) ln\ p(x_0|\check x_0)=-\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0))-\frac{1}{2}ln((2\pi)^Ndet\check P_0) ln p(x0xˇ0)=21(x0xˇ0)TPˇ01(x0xˇ0))21ln((2π)NdetPˇ0)
l n   p ( x k ∣ x k − 1 , v k ) = − 1 2 ( x k − A k − 1 x k − 1 − v k ) T Q k − 1 ( x k − A k − 1 x k − 1 − v k ) ) − 1 2 l n ( ( 2 π ) N d e t Q k ) ln\ p(x_k|x_{k-1},v_k)=-\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k))-\frac{1}{2}ln((2\pi)^NdetQ_k) ln p(xkxk1,vk)=21(xkAk1xk1vk)TQk1(xkAk1xk1vk))21ln((2π)NdetQk)
l n   p ( y k ∣ , x k ) = − 1 2 ( y k − C k x k ) T R k − 1 ( y k − C k x k ) ) − 1 2 l n ( ( 2 π ) M d e t R k ) ln\ p(y_k|,x_k)=-\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k))-\frac{1}{2}ln((2\pi)^MdetR_k) ln p(yk,xk)=21(ykCkxk)TRk1(ykCkxk))21ln((2π)MdetRk)
上面三个式子中和 x x x无关的项可以忽略掉,可定义如下等式:
J v , k ( x ) = { 1 2 ( x 0 − x ˇ 0 ) T P ˇ 0 − 1 ( x 0 − x ˇ 0 )       k = 0 1 2 ( x k − A k − 1 x k − 1 − v k ) T Q k − 1 ( x k − A k − 1 x k − 1 − v k ) ,   k = 1... K J y , k ( x ) = 1 2 ( y k − C k x k ) T R k − 1 ( y k − C k x k ) ,        k = 0... K \begin{aligned} &J_{v,k}(x)=\left\{ \begin{aligned} &\frac{1}{2}(x_0-\check x_0)^T\check P_0^{-1}(x_0-\check x_0)\qquad \qquad \qquad \qquad \qquad \ \ \ \ \ k=0\\ &\frac{1}{2}(x_k-A_{k-1}x_{k-1}-v_k)^TQ_k^{-1}(x_k-A_{k-1}x_{k-1}-v_k),\ k=1...K\\ \end{aligned} \right.\\ &J_{y,k}(x)=\frac{1}{2}(y_k-C_kx_k)^TR_k^{-1}(y_k-C_kx_k),\ \qquad \qquad \qquad \qquad \ \ \ \ k=0...K \end{aligned} Jv,k(x)=21(x0xˇ0)TPˇ01(x0xˇ0)     k=021(xkAk1xk1vk)TQk1(xkAk1xk1vk), k=1...KJy,k(x)=21(ykCkxk)TRk1(ykCkxk),     k=0...K
定义整体目标函数,最小化这个目标函数,就是我们的解:
J ( x ) = ∑ k = 0 K ( J v , k ( x ) + J y , k ( x ) ) J(x)=\sum_{k=0}^K(J_{v,k}(x)+J_{y,k}(x)) J(x)=k=0K(Jv,k(x)+Jy,k(x))

声明

本文参考自《机器人学的状态估计》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值