{x⃗ k=f(x⃗ k−1,u⃗ k)+w⃗ kz⃗ k,j=h(y⃗ j,x⃗ k)+v⃗ k,j
{
x
→
k
=
f
(
x
→
k
−
1
,
u
→
k
)
+
w
→
k
z
→
k
,
j
=
h
(
y
→
j
,
x
→
k
)
+
v
→
k
,
j
注意这里的
x⃗
x
→
为相机的位姿,可以用
李群Tk
T
k
或
李代数exp(ξ∧k)
exp
(
ξ
k
∧
)
表示。假设在
x⃗ k
x
→
k
对路标
y⃗ j
y
→
j
进行一次观测,对应到图像的位置为
z⃗ k,j
z
→
k
,
j
,则观测方程为:
sz⃗ k,j=Kexp(ξ∧k)y⃗ j
s
z
→
k
,
j
=
K
exp
(
ξ
k
∧
)
y
→
j
式中
s
s
为像素点的距离。式中z⃗ k,j和
y⃗ j
y
→
j
皆为齐次坐标.
不妨假设噪声项
w⃗ k
w
→
k
和
v⃗ k,j
v
→
k
,
j
满足零均值高斯分布:
w⃗ k∼N(0,Rk),v⃗ k,j∼N(0,Qk,j)
w
→
k
∼
N
(
0
,
R
k
)
,
v
→
k
,
j
∼
N
(
0
,
Q
k
,
j
)
先把所有的待估计变量放在一个
状态变量中:
x⃗ =x⃗ 1,⋯,x⃗ N,y⃗ 1,⋯,y⃗ M
x
→
=
x
→
1
,
⋯
,
x
→
N
,
y
→
1
,
⋯
,
y
→
M
对机器人状态的估计,转变为求已知输入数据u⃗
u
→
和观测数据z⃗
z
→
和条件下,计算状态x⃗
x
→
的条件概率:P(x⃗ |z⃗ ,u⃗ )
P
(
x
→
|
z
→
,
u
→
)
.
当没有运动测量的传感器,即不存在u⃗
u
→
时,上述问题转变为Structure from Motion(SfM)问题。此时,利用贝叶斯法则有:
P(x⃗ |z⃗ )=P(z⃗ |x⃗ )P(x⃗ )P(z⃗ )∝P(z⃗ |x⃗ )P(x⃗ )
P
(
x
→
|
z
→
)
=
P
(
z
→
|
x
→
)
P
(
x
→
)
P
(
z
→
)
∝
P
(
z
→
|
x
→
)
P
(
x
→
)
上式中,
P(z⃗ |x⃗ )
P
(
z
→
|
x
→
)
为
似然,
P(x⃗ )
P
(
x
→
)
为
先验。此时可用
MAP(Maximize a Posterior, MAP)求解:
x⃗ ∗MAP=argmaxP(x⃗ |z⃗ )=argmaxP(z⃗ |x⃗ )P(x⃗ )
x
→
∗
M
A
P
=
arg
max
P
(
x
→
|
z
→
)
=
arg
max
P
(
z
→
|
x
→
)
P
(
x
→
)
进一步地,假设机器人无法获得自己的位置,即
x⃗
x
→
没有,则可求解
x⃗
x
→
的
最大似然估计(Maximize Likelihood Estimation, MLE):
x⃗ ∗MLE=argmaxP(z⃗ |x⃗ )
x
→
∗
M
L
E
=
arg
max
P
(
z
→
|
x
→
)
上式可理解为”在什么样的状态下,最可能产生现在观测到的数据”.
最小二乘问题:
对一次观测:
z⃗ k,j=h(y⃗ j,x⃗ k)+v⃗ k,j
z
→
k
,
j
=
h
(
y
→
j
,
x
→
k
)
+
v
→
k
,
j
并且有假设
v⃗ k,j∼N(0,Qk,j)
v
→
k
,
j
∼
N
(
0
,
Q
k
,
j
)
,条件概率为:
P(z⃗ k,j|x⃗ k,y⃗ j)=N(h(y⃗ j,x⃗ k),Qk,j))
P
(
z
→
k
,
j
|
x
→
k
,
y
→
j
)
=
N
(
h
(
y
→
j
,
x
→
k
)
,
Q
k
,
j
)
)
为求解该问题,回忆一个任意的高维高斯分布
x⃗ ∼N(u⃗ ,Σ)
x
→
∼
N
(
u
→
,
Σ
)
,其概率密度函数为:
P(x⃗ )=1(2π)Ndet(Σ)‾‾‾‾‾‾‾‾‾‾‾√exp(−12(x⃗ −u⃗ ⊤Σ−1(x⃗ −u⃗ )))
P
(
x
→
)
=
1
(
2
π
)
N
det
(
Σ
)
exp
(
−
1
2
(
x
→
−
u
→
⊤
Σ
−
1
(
x
→
−
u
→
)
)
)
两边取负对数后变为:
−ln(P(x⃗ ))=12ln((2π)Ndet(Σ))+12(x⃗ −u⃗ ⊤Σ−1(x⃗ −u⃗ ))
−
ln
(
P
(
x
→
)
)
=
1
2
ln
(
(
2
π
)
N
det
(
Σ
)
)
+
1
2
(
x
→
−
u
→
⊤
Σ
−
1
(
x
→
−
u
→
)
)
应用上述公式,第一项与
x⃗
x
→
无关可移除,代入slam观测模型结果为:
x⃗ ∗=argmin((z⃗ k,j−h(x⃗ k,y⃗ i))⊤Q−1k,j(z⃗ k,j−h(x⃗ k,y⃗ i)))
x
→
∗
=
arg
min
(
(
z
→
k
,
j
−
h
(
x
→
k
,
y
→
i
)
)
⊤
Q
k
,
j
−
1
(
z
→
k
,
j
−
h
(
x
→
k
,
y
→
i
)
)
)
定义数据与误差之间误差为:
{e⃗ v,k=x⃗ k−f(x⃗ k−1,u⃗ k)e⃗ y,j,k=z⃗ k,j−h(x⃗ k,y⃗ j)
{
e
→
v
,
k
=
x
→
k
−
f
(
x
→
k
−
1
,
u
→
k
)
e
→
y
,
j
,
k
=
z
→
k
,
j
−
h
(
x
→
k
,
y
→
j
)
则误差平方项之和为:
J(x⃗ )=∑ke⃗ ⊤v,kR−1ke⃗ v,k+∑k∑je⊤y,k,jQ−1k,jey,k,j
J
(
x
→
)
=
∑
k
e
→
v
,
k
⊤
R
k
−
1
e
→
v
,
k
+
∑
k
∑
j
e
y
,
k
,
j
⊤
Q
k
,
j
−
1
e
y
,
k
,
j