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)
xp−f(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(xp−f(xp))TQ−1(xp−f(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(zi−h(xm,xp))TR−1(zi−h(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(xp−f(xp))TQ−1(xp−f(xp))}∗exp{−1/2(zi−h(xm,xp))TR−1(zi−h(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=xp−f(xp),
f
m
=
z
i
−
h
(
x
m
,
x
p
)
f_m = z_i - h(x_{m},x_{p})
fm=zi−h(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(fpTQ−1fp+fmTR−1fm+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(fpTQ−1fp+fmTR−1fm+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/2fTC−1f,
利用克莱斯基分解,可以将
C
−
1
=
S
T
S
C^{-1} = S^TS
C−1=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=(0−f(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′′)−1L′T=−(r′Tr′)−1r′Tr
其中,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
C−1=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=−(f′TSTSf′)−1f′TSTSf=−(JTC−1J)−1JTC−1f
法方程如下:
(
J
T
C
−
1
J
)
δ
x
=
−
J
T
C
−
1
f
(J^TC^{-1}J)\delta x=-J^TC^{-1}f
(JTC−1J)δx=−JTC−1f
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−(xp2−xp1)f2=1−(xm−xp1)f3=−1−(xm−xp2)f4=xp1
以下构造三种解法(1)全局解,(2)直接删除房子,(3)采用边缘化的方式消除房子状态.初始值假设为0,0,0;
- 全局解,构造完成的雅克比矩阵与残差矩阵
f = [ 1.5 1 − 1 0 ] f =\left [ \begin{matrix}1.5\\ 1 \\ -1\\0\end{matrix} \right ] f=⎣⎢⎢⎡1.51−10⎦⎥⎥⎤
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=⎣⎢⎢⎡1101−10100−1−10⎦⎥⎥⎤
根据法方程,计算出增量为:
δ x = [ 0 ; 1.6 ; 0.8 ] \delta x= [0; 1.6; 0.8] δx=[0;1.6;0.8] - 直接删除房子的结构
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=[11−10]
根据法方程,计算出增量为:
δ x = [ 0 ; 1.5 ] \delta x= [0; 1.5] δx=[0;1.5] - 使用边缘化,保留房子信息,但不解房子的位置
[ 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 ] ⎣⎡3−1−1−12−1−1−12⎦⎤[δ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.5⎣⎡5−3−1−33−1002⎦⎤[δ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[5−3−33][δxp]=[−2.52.5]
解得:
δ x = [ 0 ; 1.6 ] \delta x = [0; 1.6] δx=[0;1.6]
比较这三种方式解的结果,可以得到如下结论:
- 全部解是最优的,而采用边缘化的方式与全部解是一致的.
- 直接删除变量会导致信息损失.即相当于永强没有观测到这个房子.
slding window的精髓在于不随意舍弃变量
下一篇将介绍EKF与最小二乘的区别.