SLAM数学模型
运动方程
设机器人在行驶过程中,时刻
t
t
t的位姿为
x
t
x_t
xt,则机器人的运动方程可用下式表达:
x
k
=
f
(
x
k
−
1
,
u
k
,
w
k
)
x_k=f(x_{k-1},u_k,w_k)
xk=f(xk−1,uk,wk)
其中,
u
k
u_k
uk为控制量也即运动传感器的读数或输入。一般采用编码器获取机器人的行驶速度(速度运动模型)或采用里程计获取里程信息(里程运动模型)作为输入。
w
k
w_k
wk为运动噪声项。
运动方程的含义为,通过机器人上一时刻的位姿信息及控制量,能够估计得到机器人的当前时刻位姿。
观测方程
视觉SLAM的观察模型通常为基于特征的模型,则地图信息由一些列的路标组成。用 y 1 , y 2 , ⋯ , y N y_1,y_2,\cdots,y_N y1,y2,⋯,yN表示各个路标点。
在机器人运动过程中,传感器将得到周围路标的信息,则机器人的观测方程如下:
z
k
,
j
=
h
(
y
j
,
x
k
,
v
k
,
j
)
z_{k,j}=h(y_j,x_k,v_{k,j})
zk,j=h(yj,xk,vk,j)
其中,
v
k
,
j
v_{k,j}
vk,j为观测噪声项。
观测方程的含义为,在路标信息 y j y_j yj和机器人位姿 x k x_k xk下,传感器的观测数据为 z k , j z_{k,j} zk,j
状态估计问题
由此,得到SLAM的模型:
{
x
k
=
f
(
x
k
−
1
,
u
k
,
w
k
)
z
k
,
j
=
h
(
y
j
,
x
k
,
v
k
,
j
)
\begin{cases}x_k=f(x_{k-1},u_k,w_k)\\z_{k,j}=h(y_j,x_k,v_{k,j})\end{cases}
{xk=f(xk−1,uk,wk)zk,j=h(yj,xk,vk,j)
其中,运动方程中机器人当前位姿
x
k
x_k
xk可由
T
k
∈
S
E
(
3
)
T_k\in SE(3)
Tk∈SE(3)进行描述。而观测方程则有相机针孔模型进行建模:
s
z
k
,
j
=
K
(
R
k
y
j
+
t
k
)
s\:z_{k,j}=K(R_{k}y_j+t_k)
szk,j=K(Rkyj+tk)
也即在时刻
t
t
t下,相机传感器处于机器人位姿
x
k
x_k
xk处,此时对路标
y
j
y_j
yj进行的观测对应到图像上的像素位置
z
k
,
j
z_{k,j}
zk,j处。其中,
s
s
s为比例因子,
K
K
K为相机内参,
R
k
∈
S
O
(
3
)
R_k\in SO(3)
Rk∈SO(3)和平移
t
k
t_k
tk构成了相机的外参矩阵
T
k
T_k
Tk。
通常,增加以零为均值
R
k
、
Q
k
,
j
R_k、Q_{k,j}
Rk、Qk,j为方差的高斯分布
w
k
,
v
k
,
j
w_k,v_{k,j}
wk,vk,j作为运动噪声和观测噪声:
w
k
∼
N
(
0
,
R
k
)
v
k
,
j
∼
N
(
0
,
Q
k
,
j
)
w_k\sim \mathcal{N}(0,R_k)\qquad\qquad v_{k,j}\sim \mathcal{N}(0,Q_{k,j})
wk∼N(0,Rk)vk,j∼N(0,Qk,j)
根据模型,采用控制量
u
u
u(通常为速度信息或里程计信息)和传感器观测
z
z
z推断机器人的位姿
x
x
x以及地图信息
y
y
y
状态估计问题的处理有两种方式,一种叫做滤波器算法,一种则为批量估计算法。滤波器算法持有一个对当前时刻的估计,并用新的传感器数据更新估计。批量估计算法则将数据累计为一个小批量后,统一进行处理估计。
常用的滤波器算法有扩展卡尔曼算法(EKF)、无迹卡尔曼算法(UKF)等。相对而言,滤波器算法仅关心当前时刻下的状态估计量,而批量估计则在更大范围内得到最优。一般认为批量估计优于滤波器估计。
批量估计
对于机器人运动,考虑从1到N时刻下机器人的位姿
x
t
x_t
xt及对应的地标信息
y
j
y_j
yj:
x
=
{
x
1
,
⋯
,
x
N
}
y
=
{
y
1
,
⋯
,
y
M
}
x=\{x_1,\cdots,x_N\}\qquad\qquad y=\{y_1,\cdots,y_M\}
x={x1,⋯,xN}y={y1,⋯,yM}
则在控制量输入
u
u
u、传感器观测数据
z
z
z的条件下对机器人状估计如下:
p
(
x
,
y
∣
z
,
u
)
=
p
(
z
,
u
∣
x
,
y
)
p
(
x
,
y
)
p
(
z
,
u
)
=
η
p
(
z
,
u
∣
x
,
y
)
p
(
x
,
y
)
p(x,y|z,u)=\frac{p(z,u|x,y)\:p(x,y)}{p(z,u)}=\eta\:p(z,u|x,y)\:p(x,y)
p(x,y∣z,u)=p(z,u)p(z,u∣x,y)p(x,y)=ηp(z,u∣x,y)p(x,y)
贝叶斯法则展开,得到右侧内容,其中
η
\eta
η为归一化因子;
p
(
z
,
u
∣
x
,
y
)
p(z,u|x,y)
p(z,u∣x,y)为似然(Likehood);
p
(
x
,
y
)
p(x,y)
p(x,y)为先验(Prior);
p
(
x
,
y
∣
z
,
u
)
p(x,y|z,u)
p(x,y∣z,u)为后验。
直接求解后验分布较为困难,转为求解一个状态最优估计,使得后验概率最大化:
(
x
,
y
)
M
A
P
∗
=
a
r
g
max
p
(
x
,
y
∣
z
,
u
)
=
a
r
g
max
p
(
z
,
u
∣
x
,
y
)
p
(
x
,
y
)
(x,y)^*_{MAP}=arg\max\:p(x,y|z,u)=arg\max\:p(z,u|x,y)p(x,y)
(x,y)MAP∗=argmaxp(x,y∣z,u)=argmaxp(z,u∣x,y)p(x,y)
归一化因子
η
\eta
η同分布无关,归为常数项,忽略。由上述等式知:求解后验概率最大化就在于求解最大似然估计:
(
x
,
y
)
M
L
E
∗
=
a
r
g
max
p
(
z
,
u
∣
x
,
y
)
(x,y)^*_{MLE}=arg\max\:p(z,u|x,y)
(x,y)MLE∗=argmaxp(z,u∣x,y)
似然的含义为:在当前机器人位姿下,可能产生的观测数据。
最大似然估计:在机器人位姿什么状态下,最可能得到当前观测到的数据。
最大似然估计
观测模型
( x , y ) M L E ∗ = a r g m a x p ( z , u ∣ x , y ) (x,y)^*_{MLE}=arg\:max\:p(z,u|x,y) (x,y)MLE∗=argmaxp(z,u∣x,y)
对于一次观测:
z
k
,
j
=
h
(
y
j
,
x
k
)
+
v
k
,
j
z_{k,j}=h(y_j,x_k)+v_{k,j}
zk,j=h(yj,xk)+vk,j
以知用高斯分布建模观测噪声
v
t
,
j
∼
N
(
0
,
Q
k
,
j
)
v_{t,j}\sim\mathcal{N}(0,Q_{k,j})
vt,j∼N(0,Qk,j),则可知:
p
(
z
k
,
j
∣
x
k
,
y
j
)
∼
N
(
h
(
y
j
,
x
k
)
,
Q
k
,
j
)
p(z_{k,j}|x_k,y_j)\sim\mathcal{N}(h(y_j,x_k),Q_{k,j})
p(zk,j∣xk,yj)∼N(h(yj,xk),Qk,j)
求解最大似然估计可以使用最小化负对数方式进行。
最小负对数
对于一个任意高纬度高斯分布
x
∼
N
(
μ
,
Σ
)
x\sim\mathcal{N}(\mu,\Sigma)
x∼N(μ,Σ):
p
(
x
)
=
1
(
2
π
)
N
d
e
t
(
Σ
)
e
x
p
(
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
)
p(x)=\frac{1}{\sqrt{(2\pi)^Ndet(\Sigma)}}exp\Bigl(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\Bigr)
p(x)=(2π)Ndet(Σ)1exp(−21(x−μ)TΣ−1(x−μ))
对其取负自然对数:
−
ln
p
(
x
)
=
1
2
ln
(
(
2
π
)
N
d
e
t
(
Σ
)
)
+
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
-\ln\:p(x)=\frac{1}{2}\ln\Bigl((2\pi)^N\:det(\Sigma)\Bigr)+\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)
−lnp(x)=21ln((2π)Ndet(Σ))+21(x−μ)TΣ−1(x−μ)
由对数函数单调递增性质,可以得到对
p
(
x
)
p(x)
p(x)求取最大化也即对负对数
−
ln
p
(
x
)
-\ln\:p(x)
−lnp(x)取最小化。
上述表达式右侧第一项为常数项,则对其右侧第二项进行最小项求解即可得到状态的最大似然估计。
最大似然估计
将观测方程带入上述模型:
(
x
k
,
y
j
)
∗
=
a
r
g
max
N
(
h
(
y
j
,
x
k
)
,
Q
k
,
j
)
=
a
r
g
min
(
(
z
k
,
j
−
h
(
x
k
,
y
j
)
)
T
Q
k
,
j
−
1
(
z
k
,
j
−
h
(
x
k
,
y
j
)
)
)
\begin{aligned} (x_k,y_j)^*& =arg\max\:\mathcal{N}(h(y_j,x_k),Q_{k,j})\\ &=arg\min\Bigl(\bigl(z_{k,j}-h(x_k,y_j)\bigr)^TQ_{k,j}^{-1}\bigl(z_{k,j}-h(x_k,y_j)\bigr)\Bigr)\\ \end{aligned}
(xk,yj)∗=argmaxN(h(yj,xk),Qk,j)=argmin((zk,j−h(xk,yj))TQk,j−1(zk,j−h(xk,yj)))
称上述公式描述的为马哈拉诺比距离,简称马氏距离。该式等价于最小化噪声项,
Q
k
,
j
−
1
Q_{k,j}^{-1}
Qk,j−1叫做信息矩阵,也即高斯分布协方差矩阵的逆。
批量估计
考虑批量内时刻的数据,假设批量内各个时刻的控制量输入
u
u
u、传感器观测数据
z
z
z相互独立,也即控制量间相互独立,观测间相互独立,可得:
p
(
z
,
u
∣
x
,
y
)
=
∏
k
p
(
u
k
∣
x
k
−
1
,
x
k
)
∏
k
,
j
p
(
z
k
,
j
∣
x
k
,
y
j
)
p(z,u|x,y)=\prod_kp(u_k|x_{k-1},x_k)\:\prod_{k,j}p(z_{k,j}|x_k,y_j)
p(z,u∣x,y)=k∏p(uk∣xk−1,xk)k,j∏p(zk,j∣xk,yj)
由此,可独立处理各个时刻间的运动、观测。现定义运动控制量、传感器观测同模型的误差如下:
e
u
,
k
=
x
k
−
f
(
x
k
−
1
,
u
k
)
e
z
,
k
,
j
=
z
k
,
j
−
h
(
x
k
,
y
j
)
\begin{aligned} e_{u,k}&=x_k-f(x_{k-1},u_k)\\ e_{z,k,j}&=z_{k,j}-h(x_k,y_j)\\ \end{aligned}
eu,kez,k,j=xk−f(xk−1,uk)=zk,j−h(xk,yj)
由此,可得目标函数如下:
min
J
(
x
,
y
)
=
∑
k
e
u
,
k
T
R
k
−
1
e
u
,
k
+
∑
k
∑
j
e
z
,
k
,
j
T
Q
k
,
j
−
1
e
z
,
k
,
j
\min J(x,y)=\sum_ke_{u,k}^TR_k^{-1}e_{u,k}+\sum_k\sum_je_{z,k,j}^TQ_{k,j}^{-1}e_{z,k,j}
minJ(x,y)=k∑eu,kTRk−1eu,k+k∑j∑ez,k,jTQk,j−1ez,k,j
此处,实际采用最小负对数求解最大似然估计问题,故而累乘在负对数形式下变为累加。
求解目标函数最小化为非线性最小二乘问题。