参考文献
Frank Dellaert,Michael Kaess,The International Journal of Robotics Research,2006,Square Root SAM: Simultaneous Localization and Mapping via Square Root Information Smoothing
模型
SLAM问题可以表示成置信网(belief net),因子图(factor graph),马尔可夫随机场(markov random field)。首先从置信网(也就是贝叶斯网络)的角度分析。
假设第
i
i
i时刻机器人的状态为
x
i
x_i
xi,
i
∈
0
i\in0
i∈0
…
\dots
…
M
M
M,路标为
l
j
l_j
lj,
j
∈
1
j\in1
j∈1
…
\dots
…
N
N
N,量测为
z
k
z_k
zk,
k
∈
1
k\in1
k∈1
…
\dots
…
K
K
K。
对应上图的联合概率密度模型为
P
(
X
,
L
,
Z
,
U
)
=
P
(
x
0
)
∏
i
=
1
M
P
(
x
i
∣
x
i
−
1
,
u
i
)
∏
k
=
1
K
P
(
z
k
∣
x
i
k
,
l
j
k
)
P(X,L,Z,U) = P(x_0)\prod_{i=1}^M {P(x_i|x_{i-1},u_i)}\prod_{k=1}^K {P(z_k|x_{ik},l_{jk})}
P(X,L,Z,U)=P(x0)i=1∏MP(xi∣xi−1,ui)k=1∏KP(zk∣xik,ljk)其中,
P
(
x
0
)
P(x_0)
P(x0)表示初始状态,
P
(
x
i
∣
x
i
−
1
,
u
i
)
P(x_i|x_{i-1},u_i)
P(xi∣xi−1,ui)表示运动模型,
P
(
z
∣
x
,
l
)
P(z|x,l)
P(z∣x,l)表示路标量测模型。引入标准的高斯模型,
x
i
=
f
i
(
x
i
−
1
,
u
i
)
+
w
i
⟺
P
(
x
i
∣
x
i
−
1
,
u
i
)
∝
e
x
p
(
−
1
2
∥
f
i
(
x
i
−
1
,
u
i
)
−
x
i
)
∥
Λ
i
2
)
x_i = f_i(x_{i-1},u_i) + w_i\iff P(x_i|x_{i-1},u_i) \propto exp(-\frac1{2} \Vert f_i(x_{i-1},u_i) - x_i) \Vert^2_{\Lambda_i} )
xi=fi(xi−1,ui)+wi⟺P(xi∣xi−1,ui)∝exp(−21∥fi(xi−1,ui)−xi)∥Λi2)其中
f
i
(
)
f_i()
fi()是一个process model,
w
i
w_i
wi是零均值高斯白噪声,协方差为
Λ
i
\Lambda_i
Λi。量测模型为
z
k
=
h
k
(
x
i
k
,
l
j
k
)
+
v
k
⟺
P
(
z
k
∣
x
i
k
,
l
j
k
)
∝
e
x
p
(
−
1
2
∥
h
k
(
x
i
k
,
l
j
k
)
−
z
k
∥
Σ
k
2
)
z_k = h_k(x_{ik},l_{jk}) + v_k \iff P(z_k|x_{ik},l{jk}) \propto exp(-\frac1{2}\Vert h_k(x_{ik},l_{jk}) - z_k \Vert^2_{\Sigma_k})
zk=hk(xik,ljk)+vk⟺P(zk∣xik,ljk)∝exp(−21∥hk(xik,ljk)−zk∥Σk2)其中
h
k
(
)
h_k()
hk()是观测方程,
v
k
v_k
vk同样是零均值高斯白噪声,协方差为
Σ
k
\Sigma_k
Σk。
∥
e
∥
Σ
2
=
e
T
Σ
−
1
e
\Vert e \Vert ^2_\Sigma=e^T\Sigma^{-1}e
∥e∥Σ2=eTΣ−1e定义为平方马氏距离。
最小二乘问题
将最大后验估计取负对数,转化成最小二乘问题
Θ
∗
=
arg
max
Θ
P
(
X
,
L
∣
Z
)
=
arg
max
Θ
P
(
X
,
L
,
Z
)
=
arg
min
Θ
−
l
o
g
(
P
(
X
,
L
∣
Z
)
)
\Theta^*=\arg\max_{\Theta}P(X,L|Z)=\arg\max_{\Theta}P(X,L,Z)=\arg\min_{\Theta}-log(P(X,L|Z))
Θ∗=argΘmaxP(X,L∣Z)=argΘmaxP(X,L,Z)=argΘmin−log(P(X,L∣Z))代入前面的几个式子,将
P
(
x
0
)
P(x_0)
P(x0)视为常数省略,得到非线性最小二乘问题如下:
Θ
∗
=
arg
min
Θ
{
∑
i
=
1
M
∥
f
i
(
x
i
−
1
,
u
i
)
−
x
i
∥
Λ
i
2
+
∑
k
=
1
K
∥
h
k
(
x
i
k
,
l
j
k
)
−
z
k
∥
Σ
k
2
}
\Theta^* = \arg\min_{\Theta}\lbrace\sum_{i=1}^M {\Vert f_i(x_{i-1},u_i)-x_i\Vert ^2_{\Lambda_i}+\sum_{k=1}^K {\Vert h_k(x_{ik},l_{jk})-z_k}\Vert^2_{\Sigma_k}}\rbrace
Θ∗=argΘmin{i=1∑M∥fi(xi−1,ui)−xi∥Λi2+k=1∑K∥hk(xik,ljk)−zk∥Σk2}实际中一般加以线性化,
f
i
(
x
i
−
1
,
u
i
)
−
x
i
≈
{
f
i
(
x
i
−
1
0
,
u
i
)
+
F
i
i
−
1
δ
x
i
−
1
}
−
{
x
i
0
+
δ
x
i
}
=
{
F
i
i
−
1
δ
x
i
−
1
−
δ
x
i
}
−
a
i
f_i(x_{i-1},u_i) -x_i \approx \lbrace f_i(x^0_{i-1},u_i) + F^{i-1}_i\delta x_{i-1}\rbrace-\lbrace x^0_i+\delta x_i\rbrace = \lbrace F^{i-1}_i\delta x_{i-1} - \delta x_i\rbrace - a_i
fi(xi−1,ui)−xi≈{fi(xi−10,ui)+Fii−1δxi−1}−{xi0+δxi}={Fii−1δxi−1−δxi}−ai其中
a
i
=
x
i
0
−
f
i
(
x
i
−
1
0
,
u
i
)
a_i = x_i^0 - f_i(x^0_{i-1},u_i)
ai=xi0−fi(xi−10,ui)表示里程计预测误差,这里
u
i
u_i
ui是给定的,被认为是常数。而
F
i
i
−
1
F_i^{i-1}
Fii−1是
f
i
(
.
)
f_i(.)
fi(.)在线性化点
x
i
−
1
0
x_{i-1}^0
xi−10的雅可比矩阵,定义为
F
i
i
−
1
=
∂
f
i
(
x
i
−
1
,
u
i
)
∂
x
i
−
1
∣
x
i
−
1
0
F_i^{i-1} = \left. \frac{\partial f_i(x_{i-1},u_i)}{\partial x_{i-1}} \right|_{x_{i-1}^0}
Fii−1=∂xi−1∂fi(xi−1,ui)∣∣∣∣xi−10对于量测模型
h
k
(
x
i
k
,
l
j
k
)
−
z
k
≈
{
h
k
(
x
i
k
0
,
l
j
k
0
)
+
H
k
i
k
δ
x
i
k
+
J
k
j
k
δ
l
j
k
}
−
z
k
=
{
H
k
i
k
δ
x
i
k
+
J
k
j
k
δ
l
j
k
}
−
c
k
h_k(x_{ik},l_{jk}) - z_k \approx \lbrace h_k(x_{ik}^0,l_{jk}^0) + H_k^{ik}\delta x_{ik} + J_k^{jk}\delta l_{jk}\rbrace - z_k = \lbrace H_k^{ik} \delta x_{ik} + J_{k}^{jk} \delta l_{jk}\rbrace -c_k
hk(xik,ljk)−zk≈{hk(xik0,ljk0)+Hkikδxik+Jkjkδljk}−zk={Hkikδxik+Jkjkδljk}−ck其中
H
k
i
k
H_k^{ik}
Hkik和
J
k
j
k
J_k^{jk}
Jkjk分别是
h
k
(
.
)
h_k(.)
hk(.)在线性化点
(
x
i
k
0
,
l
j
k
0
)
(x_{ik}^0,l_{jk}^0)
(xik0,ljk0)处对
x
i
k
x_{ik}
xik和
l
j
k
l_{jk}
ljk的雅可比矩阵,即
H
k
i
k
=
∂
h
k
(
x
i
k
,
l
j
k
)
∂
x
i
k
∣
(
x
i
k
0
,
l
j
k
0
)
H_k^{ik} = \left. \frac{\partial h_k(x_{ik},l_{jk})}{\partial x_{ik}} \right|_{(x_{ik}^0,l_{jk}^0)}
Hkik=∂xik∂hk(xik,ljk)∣∣∣∣(xik0,ljk0)
J
k
j
k
=
∂
h
k
(
x
i
k
,
l
j
k
)
∂
l
j
k
∣
(
x
i
k
0
,
l
j
k
0
)
J_k^{jk} = \left. \frac{\partial h_k(x_{ik},l_{jk})}{\partial l_{jk}} \right|_{(x_{ik}^0,l_{jk}^0)}
Jkjk=∂ljk∂hk(xik,ljk)∣∣∣∣(xik0,ljk0)而
c
k
=
z
k
−
h
k
(
x
i
k
0
,
l
j
k
0
)
c_k = z_k - h_k(x_{ik}^0,l_{jk}^0)
ck=zk−hk(xik0,ljk0)是量测误差。
那么非线性最小二乘问题就可以转化成线性最小二乘问题,即
δ
∗
=
a
r
g
min
δ
{
∑
i
=
1
M
∥
F
i
i
−
1
δ
x
i
−
1
+
G
i
i
δ
x
i
−
a
i
∥
Λ
i
2
+
∑
k
=
1
K
∥
H
k
i
k
δ
x
i
k
+
J
k
j
k
δ
l
j
k
−
c
k
∥
Σ
k
2
}
\delta^* = arg\min_\delta \lbrace\sum_{i=1}^M \Vert F_i^{i-1}\delta x_{i-1} + G_i^i\delta x_i -a_i\Vert _{\Lambda_i}^2 + \sum_{k=1}^K\Vert H_k^{ik}\delta x_{ik} + J_k^{jk}\delta l_{jk} -c_k\Vert ^2_{\Sigma_k}\rbrace
δ∗=argδmin{i=1∑M∥Fii−1δxi−1+Giiδxi−ai∥Λi2+k=1∑K∥Hkikδxik+Jkjkδljk−ck∥Σk2}其中,
G
i
i
=
−
I
d
∗
d
G_i^i = -I_{d*d}
Gii=−Id∗d为单位矩阵,
d
d
d是
x
i
x_i
xi的维度。
求解
由于
∥
e
∥
Σ
2
=
e
T
Σ
−
1
e
=
(
Σ
−
T
2
e
)
T
(
Σ
−
T
2
e
)
=
∥
Σ
−
T
2
e
∥
2
2
\Vert e\Vert _\Sigma^2 = e^T\Sigma^{-1}e = (\Sigma^{-\frac T{2}}e)^T(\Sigma^{-\frac T{2}}e) = \Vert \Sigma^{-\frac T{2}}e \Vert _2^2
∥e∥Σ2=eTΣ−1e=(Σ−2Te)T(Σ−2Te)=∥Σ−2Te∥22那么将马氏距离转化成几何的平方距离形式(二范数)
δ
∗
=
a
r
g
min
δ
{
∑
i
=
1
M
∥
Λ
i
−
T
2
(
F
i
i
−
1
δ
x
i
−
1
+
G
i
i
δ
x
i
−
a
i
)
∥
2
2
+
∑
k
=
1
K
∥
Σ
k
−
T
2
(
H
k
i
k
δ
x
i
k
+
J
k
j
k
δ
l
j
k
−
c
k
)
∥
2
2
}
\delta^* = arg\min_{\delta} \lbrace\sum_{i=1}^M \Vert \Lambda_i^{-\frac T{2}}(F_i^{i-1}\delta x_{i-1} + G_i^i\delta x_i -a_i)\Vert _2^2 + \sum_{k=1}^K \Vert \Sigma_k^{-\frac T{2}}(H_k^{ik}\delta x_{ik} + J_k^{jk}\delta l_{jk} -c_k)\Vert _2^2\rbrace
δ∗=argδmin{i=1∑M∥Λi−2T(Fii−1δxi−1+Giiδxi−ai)∥22+k=1∑K∥Σk−2T(Hkikδxik+Jkjkδljk−ck)∥22}这其中,
F
i
i
−
1
F_i^{i-1}
Fii−1、
H
k
i
k
H_k^{ik}
Hkik、
J
k
j
k
J_k^{jk}
Jkjk都是雅可比矩阵,将所有的雅可比矩阵合并到一个矩阵
A
A
A,而向量
a
i
a_i
ai、
c
k
c_k
ck放入RHS(right-hand side)向量
b
b
b中,得到最小二乘问题的标准形式为
δ
∗
=
a
r
g
min
δ
∥
A
δ
−
b
∥
2
2
\delta^* = arg\min_\delta \Vert A\delta - b \Vert _2^2
δ∗=argδmin∥Aδ−b∥22.其中,
A
A
A可能维度增长到比较大,但是是保持稀疏的。向量
δ
∈
R
n
\delta \in R^n
δ∈Rn包含所有的位姿和landmark变量,矩阵
A
∈
R
m
×
n
A\in R^{m\times n}
A∈Rm×n是一个大但是稀疏的量测雅可比矩阵,
m
m
m表示量测的数目,
b
∈
R
m
b\in R^m
b∈Rm是RHS向量。
对上面的式子取最小值,就是对
∥
A
δ
−
b
∥
2
2
\Vert A\delta-b\Vert^2_2
∥Aδ−b∥22求导,令导数为0,得到
A
T
A
δ
=
A
T
b
A^TA\delta=A^Tb
ATAδ=ATb。可以通过对
A
T
A
A^TA
ATA的Cholesky分解进行求解。
后续QR分解或者Cholesky分解,理解了再补充。