A Sliding Window Filter

A Sliding Window Filter阅读

关于作者:Gabe Sibley, 07年博士毕业于南加州大学,剑桥三年博后,科罗拉多大学副教授,17年开始创业,成立了两家公司:Zippy Inc和Verdant Robotics, Inc.

一,系统参数化

为了形象一点,下面以永强作为机器人,永强观测到的房子作为路标点.
在这里插入图片描述假设永强沿着象牙山庄一直朝东走,在三个点上停留并进行观察,能看到周围的四个房子,那么该系统的变量有永强停留的的三个位置 ( x p 1 , x p 2 , x p 3 ) (x_{p1}, x_{p2},x_{p3}) (xp1,xp2,xp3), 四所房子的位置 ( x m 1 , x m 2 , x m 3 ) (x_{m1}, x_{m2},x_{m3}) (xm1,xm2,xm3).其中 x p i , x m i x_{pi}, x_{mi} xpi,xmi均为2D的位置

二,过程模型

在永强行走的过程中,根据平日步行的经验,他知道自己走了大约多少米(即里程计信息),该信息并不十分准确,但是依然比较有用. x p i + 1 = f i ( x p i , u i ) + w i x_{pi+1} = f_i(x_{pi}, u_i) + w_i xpi+1=fi(xpi,ui)+wi 为一般的过程模型,假设
f ( x p ) = [ f 1 ( x p i , u i ) f 2 ( x p i , u i ) ] f(x_p) =[\begin{matrix} f_1(x_{pi}, u_i) \\f_2(x_{pi}, u_i) \end{matrix}] f(xp)=[f1(xpi,ui)f2(xpi,ui)]
f ( x p ) f(x_p) f(xp)表示永强两次行走距离,是一个4*1的向量,而
x p = [ x 2 x 3 ] x_p =[\begin{matrix} x_2 \\x_3 \end{matrix}] xp=[x2x3]
如果x_p是永强真实位置,那么 x p − f ( x p ) x_p - f(x_p) xpf(xp)应该是一个0均值, Q方差的正太分布.正太分布的概率密度函数可以很好的刻画不同位置时,估计位置与永强估计的符合程度.
P ( x p ) = η x p e x p { − 1 / 2 ( x p − f ( x p ) ) T Q − 1 ( x p − f ( x p ) ) } P(x_p) = \eta_{x_p} exp\{-1/2(x_p - f(x_p))^TQ^{-1}(x_p - f(x_p))\} P(xp)=ηxpexp{1/2(xpf(xp))TQ1(xpf(xp))}
上式中,将永强估计的位置这一观测,与其位置估计,建模为了一个多元正态分布(4*1).

三,传感器模型

这里的传感器,就是指永强的观测了.在每一个点上,永强都观测到4个房子,得到相对于当前位置的相对距离 δ x \delta x δx. 对于一般的观测模型, z i = h ( x m i , x p i ) + v i z_i = h(x_{mi}, x_{pi}) + v_i zi=h(xmi,xpi)+vi. 当永强的位置和房子的位置都估计准时,那么由估计量计算的相对距离和永强观测的相对距离,应该是相等的,那么其差值应该是符合0为均值,R方差的正太分布,和上述过程模型一样,正太分布的概率密度函数可以很好的刻画不同位置时,估计位置与永强的观测值的符合程度:
P ( x m ) = η x m e x p { − 1 / 2 ( z i − h ( x m , x p ) ) T R − 1 ( z i − h ( x m , x p ) ) } P(x_m) = \eta_{x_m}exp\{-1/2(z_i - h(x_{m},x_{p}))^TR^{-1}(z_i - h(x_{m},x_{p}))\} P(xm)=ηxmexp{1/2(zih(xm,xp))TR1(zih(xm,xp))}
上式中,永强在每一个位置都会对所有房子进行观察,而观察一次是2*1的向量,那么上式应该是24*1维度的正太分布.

四,先验信息

先验信息是指对于永强的位置或者房子的相关信息的已有知识,在这里,永强从象牙山庄的最西头出发,其位置定义为(0, 0),为了和上述概率表示一致,可以将该位置作为一个观测.当永强的位置估计准确时,第一个状态 x p 1 x_{p1} xp1应该是和该位置相等,那么其差值应该也是符合0为均值, Π \Pi Π为方差的正太分布,和上述模型一样,正太分布的概率密度函数可以很好的刻画不同位置时,估计位置与先验知识的符合程度:
P ( x p ^ ) = η x π e x p { − 1 / 2 ( x p ^ − x p 1 ) T Π − 1 ( x p ^ − x p 1 ) } P(x_{\hat{p}}) = \eta_{x_\pi}exp\{-1/2(x_{\hat{p}} - x_{p1})^T\Pi^{-1}(x_{\hat{p}} - x_{p1})\} P(xp^)=ηxπexp{1/2(xp^xp1)TΠ1(xp^xp1)}
上式中,因为只对永强的起始位置有先验知识,上式表示的是2*1维度的正态分布.

五,点估计

综合以上三类信息,可以估计出永强自己和房屋的最优位置,根据事件同时发生的原则,可以得出新的概率分布为:
P = P ( x p ) ∗ P ( x m ) P ( x p ^ ) = η x p η x m η x π e x p { − 1 / 2 ( x p − f ( x p ) ) T Q − 1 ( x p − f ( x p ) ) } ∗ e x p { − 1 / 2 ( z i − h ( x m , x p ) ) T R − 1 ( z i − h ( x m , x p ) ) } e x p { − 1 / 2 ( x p ^ − x p 1 ) T Π − 1 ( x p ^ − x p 1 ) } P = P(x_p)*P(x_m) P(x_{\hat{p}}) = \eta_{x_p} \eta_{x_m}\eta_{x_\pi} exp\{-1/2(x_p - f(x_p))^TQ^{-1}(x_p - f(x_p))\}\\*exp\{-1/2(z_i - h(x_{m},x_{p}))^TR^{-1}(z_i - h(x_{m},x_{p}))\}exp\{-1/2(x_{\hat{p}} - x_{p1})^T\Pi^{-1}(x_{\hat{p}} - x_{p1})\} P=P(xp)P(xm)P(xp^)=ηxpηxmηxπexp{1/2(xpf(xp))TQ1(xpf(xp))}exp{1/2(zih(xm,xp))TR1(zih(xm,xp))}exp{1/2(xp^xp1)TΠ1(xp^xp1)}
根据指数的运算法则: e x p ( A ) ∗ e x p ( B ) = e x p ( A + B ) exp(A)*exp(B) = exp(A+B) exp(A)exp(B)=exp(A+B).令: f p = x p − f ( x p ) f_p =x_p - f(x_p) fp=xpf(xp), f m = z i − h ( x m , x p ) f_m = z_i - h(x_{m},x_{p}) fm=zih(xm,xp), x p ^ − x p 1 x_{\hat{p}} - x_{p1} xp^xp1, 上述可以表示为:
P = η x p η x m η x π e x p ( − 1 / 2 ( f p T Q − 1 f p + f m T R − 1 f m + f p ^ T Π − 1 f p ^ ) ) P =\eta_{x_p} \eta_{x_m}\eta_{x_\pi} exp(-1/2(f_p^TQ^{-1}f_p +f_m^TR^{-1}f_m+f_{\hat{p}}^T\Pi^{-1}f_{\hat{p}})) P=ηxpηxmηxπexp(1/2(fpTQ1fp+fmTR1fm+fp^TΠ1fp^))
因为 η x p η x m η x π \eta_{x_p} \eta_{x_m}\eta_{x_\pi} ηxpηxmηxπ均大于0,且exp为单调递增函数,因此最大化上式等价于最小化下式:
L = 1 / 2 ( f p T Q − 1 f p + f m T R − 1 f m + f p ^ T Π − 1 f p ^ ) L = 1/2(f_p^TQ^{-1}f_p +f_m^TR^{-1}f_m+f_{\hat{p}}^T\Pi^{-1}f_{\hat{p}}) L=1/2(fpTQ1fp+fmTR1fm+fp^TΠ1fp^)
可以令: f = [ f p ; f m ; f p ^ ] f = [f_p;f_m;f_{\hat{p}}] f=[fp;fm;fp^],
C = [ Q 0 0 0 R 0 0 0 Π ] C = [\begin{matrix}Q & 0 & 0\\ 0 & R&0\\ 0 &0&\Pi \end{matrix}] C=[Q000R000Π]
其中:Q-4* 4, R-24* 24, Π \Pi Π-2* 2; 那么
L = 1 / 2 f T C − 1 f L = 1/2f^TC^{-1}f L=1/2fTC1f,
利用克莱斯基分解,可以将 C − 1 = S T S C^{-1} = S^TS C1=STS, r = S f r = Sf r=Sf, 则有:
L = 1 / 2 r T r L = 1/2r^Tr L=1/2rTr
上式为标准的最小二乘形式.可以使用迭代解法来求解.
理解一下r,r其实就是残差,它是永强和房屋位置的函数.

1. 一阶和二阶优化

为了简单说明一阶二阶优化的区别,这里采用 f ( x ) = 1 / 2 x 2 f(x) = 1/2x^2 f(x)=1/2x2来理解.假设初始化在 x 0 = 1 x_0 = 1 x0=1处.

一阶

此时梯度方向为f’,以梯度与 x 0 x_0 x0处的点为直线,与 y = 0 y = 0 y=0的交点处的x为:
δ x = ( 0 − f ( x 0 ) ) / f ′ = − 1 / 2 \delta x = (0 - f(x_0))/f' = -1/2 δx=(0f(x0))/f=1/2
那么 x 1 = 1 / 2 x_1 = 1/2 x1=1/2

二阶

x 0 x_0 x0处展开得: f ( x ) ≈ f ( x 0 ) + f ′ / 1 ∗ δ x f(x) \approx f(x_0) + f'/1*\delta x f(x)f(x0)+f/1δx,因为要求下降方向,那么 f ( x ) f(x) f(x)就要尽可能小, 即求f(x)最小,那么其一定出现在导数为0的地方.即
f ′ + f ′ ′ δ x = 0 f' + f''\delta x = 0 f+fδx=0
即: δ x = − f ′ / f ′ ′ = − 1 \delta x = -f'/f'' = -1 δx=f/f=1
那么 x 1 = 0 x_1 = 0 x1=0
可以看出,二阶优化的步长相对于一阶优化,更准确,更快.

2. 根据初始值,求永强的位置

根据二阶优化的原则,永强的位置增量可以表示为:
δ x = − ( L ′ ′ ) − 1 L ′ T = − ( r ′ T r ′ ) − 1 r ′ T r \delta x = - (L'')^{-1}L'^T = - (r'^Tr')^{-1}r'^Tr δx=(L)1LT=(rTr)1rTr
其中,L是1* 1, r 是30* 1, L’是1* 14, L’'是14* 14, δ x \delta x δx是14* 1,
r = S f r = Sf r=Sf, C − 1 = S T S C^{-1} = S^TS C1=STS, J = f ′ J = f' J=f带入,得到
δ x = − ( f ′ T S T S f ′ ) − 1 f ′ T S T S f = − ( J T C − 1 J ) − 1 J T C − 1 f \delta x = - (f'^TS^TSf')^{-1}f'^TS^TSf = -(J^TC^{-1}J)^{-1}J^TC^{-1}f δx=(fTSTSf)1fTSTSf=(JTC1J)1JTC1f
法方程如下:
( J T C − 1 J ) δ x = − J T C − 1 f (J^TC^{-1}J)\delta x=-J^TC^{-1}f (JTC1J)δx=JTC1f

3. 稀疏性,永强如何通过手算,解出自己和房屋的位置.

在上一节的法方程中,随着永强走的越远,观测到的房屋越多,状态增量 δ x \delta x δx将会越来越大.从现在的14增加到正无穷,据说,象牙山庄一共有100座房子,而永强需要走120步,那么最终该向量的维度就有440维,这将是一个非常大的向量了.在学术上,对状态量进行删减的操作叫做边缘化marginization,名称也比较形象,指的就是远处的状态需要被边缘化,即不纳入计算.
由于观测的特殊性,上式中的 J T J J^TJ JTJ一般具有稀疏性,如下图:(TODO)
利用该稀疏性,可以将法方程写为:
[ λ p λ p m λ p m T λ m ] [ δ x p δ x m ] = [ g p g m ] [\begin{matrix}\lambda _p && \lambda _{pm} \\\lambda _{pm}^T&& \lambda _m \end{matrix}][\begin{matrix}\delta x_{p} \\ \delta x_{m}\end{matrix}] = [\begin{matrix}g_p \\ g_m\end{matrix}] [λpλpmTλpmλm][δxpδxm]=[gpgm]
利用线性方程组的可消元性,可以得到:
[ λ p − λ p m / λ m λ p m T 0 λ p m T λ m ] [ δ x p δ x m ] = [ g p − λ p m / λ m g m g m ] [\begin{matrix}\lambda _p- \lambda _{pm}/\lambda _m \lambda _{pm}^T&& 0 \\\lambda _{pm}^T&& \lambda _m \end{matrix}][\begin{matrix}\delta x_{p} \\ \delta x_{m}\end{matrix}] = [\begin{matrix}g_p - \lambda _{pm}/\lambda _m g_m \\ g_m\end{matrix}] [λpλpm/λmλpmTλpmT0λm][δxpδxm]=[gpλpm/λmgmgm]
进而可以解得 δ x p \delta x_{p} δxp,带入第二个式子中,解得 δ x m \delta x_{m} δxm.通常, λ p m / λ m \lambda _{pm}/\lambda _m λpm/λm叫做舍尔补.
原本是解一个14*14的方程组,现在变成了两个7*7,完全可以通过手推的方式计算出来.

4.如何舍弃历史轨迹.

边缘化除了增加快速的状态求解,还能确定舍弃哪些变量,保留哪些变量.假设我们现在要舍弃第一个房屋的状态,那么如果直接删除,原文中说有信息损失,需要使用边缘化操作,才能保证信息不损失.上面的例子不太直观,以下使用一个简单例子来说明必须使用边缘化来舍弃
在这里插入图片描述假设永强的真实位置是 x p 1 = 0 , x p 2 = 2 x_{p1} = 0, x_{p2} = 2 xp1=0,xp2=2 , 房子的真实位置是 x m = 1 x_{m} = 1 xm=1,假设永强的根据步子的估计不准,本来是走了2米,结果永强估计的是1.5米,观测很准,即在两个位置上观察都是一米,那么可以得到如下残差项
f 1 = 1.5 − ( x p 2 − x p 1 ) f 2 = 1 − ( x m − x p 1 ) f 3 = − 1 − ( x m − x p 2 ) f 4 = x p 1 f_1 = 1.5 - (x_{p2} - x_{p1}) \\ f_2 = 1 - (x_m - x_{p1})\\ f_3 = -1 - (x_m - x_{p2})\\ f_4 = x_{p1} f1=1.5(xp2xp1)f2=1(xmxp1)f3=1(xmxp2)f4=xp1
以下构造三种解法(1)全局解,(2)直接删除房子,(3)采用边缘化的方式消除房子状态.初始值假设为0,0,0;

  1. 全局解,构造完成的雅克比矩阵与残差矩阵
    f = [ 1.5 1 − 1 0 ] f =\left [ \begin{matrix}1.5\\ 1 \\ -1\\0\end{matrix} \right ] f=1.5110
    J = [ 1 − 1 0 1 0 − 1 0 1 − 1 1 0 0 ] J = \left [ \begin{matrix}1&-1&0\\ 1&0&-1\\0&1&-1\\ 1&0&0 \end{matrix} \right ] J=110110100110
    根据法方程,计算出增量为:
    δ x = [ 0 ; 1.6 ; 0.8 ] \delta x= [0; 1.6; 0.8] δx=[0;1.6;0.8]
  2. 直接删除房子的结构
    f = [ 1.5 0 ] f =\left [ \begin{matrix}1.5\\0\end{matrix} \right ] f=[1.50]
    J = [ 1 − 1 1 0 ] J = \left [ \begin{matrix}1&-1\\ 1&0\end{matrix} \right ] J=[1110]
    根据法方程,计算出增量为:
    δ x = [ 0 ; 1.5 ] \delta x= [0; 1.5] δx=[0;1.5]
  3. 使用边缘化,保留房子信息,但不解房子的位置
    [ 3 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ] [ δ x p δ x m ] = [ − 2.5 2.5 0 ] \left [ \begin{matrix}3 & -1 &-1\\ -1 & 2& -1\\ -1 & -1 & 2\end{matrix} \right ] \left [\begin{matrix}\delta x_p \\\delta x_m\end{matrix}\right ] = \left [\begin{matrix} -2.5\\2.5 \\0\end{matrix}\right ] 311121112[δxpδxm]=2.52.50
    其中舒尔补为 λ p m / λ m \lambda_{pm}/\lambda_m λpm/λm,线性变换之后可得:
    0.5 [ 5 − 3 0 − 3 3 0 − 1 − 1 2 ] [ δ x p δ x m ] = [ − 2.5 2.5 0 ] 0.5\left [ \begin{matrix}5 & -3 &0\\ -3 & 3& 0\\ -1 & -1 & 2\end{matrix} \right ] \left [\begin{matrix}\delta x_p \\\delta x_m\end{matrix}\right ] = \left [\begin{matrix} -2.5\\2.5 \\0\end{matrix}\right ] 0.5531331002[δxpδxm]=2.52.50
    即:
    0.5 [ 5 − 3 − 3 3 ] [ δ x p ] = [ − 2.5 2.5 ] 0.5\left [ \begin{matrix}5 & -3 \\ -3 & 3\\ \end{matrix} \right ] \left [\begin{matrix}\delta x_p \end{matrix}\right ] = \left [\begin{matrix} -2.5\\2.5\end{matrix}\right ] 0.5[5333][δxp]=[2.52.5]
    解得:
    δ x = [ 0 ; 1.6 ] \delta x = [0; 1.6] δx=[0;1.6]
    比较这三种方式解的结果,可以得到如下结论:
  • 全部解是最优的,而采用边缘化的方式与全部解是一致的.
  • 直接删除变量会导致信息损失.即相当于永强没有观测到这个房子.
    slding window的精髓在于不随意舍弃变量
    下一篇将介绍EKF与最小二乘的区别.
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手持电烙铁的侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值