状态估计问题
1.批量状态估计与最大后验估计
经典SLAM模型由一个运动方程和一个观测方程构成:
{xk=f(xk−1,uk)+wkzk,j=h(yi,xk)+vk,j
其中
xk是相机的位姿,可以用
Tk∈SE(3)描述,观测方程即针孔相机模型。假设在
xk处对路标
yj进行了 一次观测,对应到图像上的像素位置
zk,j,那么观测方程可以表示成
szk,j=K(Rkyj+tk)
其中
K为相机内参,
s为像素点的距离,也是
(Rkyj+tk)的第三个分量。
考虑数据受噪声影响后发生的改变。在运动和观测方程中,我们通常假设两个噪声项
wk,vk,j满足零均值的高斯分布,像这样:
Wk∼N(0,Rv),vk∼N(0,Qk,j).
其中
N表示高斯分布,
0表示零均值,
Rk,Qk,j为协方差矩阵。在噪声影响下,我们希望通过带噪声的数据
z和
u推断位姿
x和地图
y(以及它们的概率分布),这构成了一个状态估计问题。
从 1 到 N 的所有时刻,假设有 M 个路标点。定义所有时刻的机器人位姿和路标点坐标为
x={x1,...,xN},y={y1,...,yN}
同样用不带下标的
u表示所有时刻的输入,
z表示所有时刻的观测数据。求机器人的状态估计,就是在
u和
z已知条件下,求状态
x和
y的条件概率分布:
P(x,y∣z,u)
利用贝叶斯法则,有
P(x,y∣z,u)=P(z,u)P(z,u∣x,y)P(x,y)⇒似然
P(z,u∣x,y)先验
P(x,y)
贝叶斯法则左侧称为后验概率,右侧的
P(z∣x)称为似然,另一部分
P(x)称为先验。直接求后验分布是困难的,但是求一个状态最优估计,使得在该状态下后验概率最大化,则是可行的:
(x,y)MAP∗=argmaxP(x,y∣z,u)=argmaxP(z,u∣x,y)P(x,y)
请注意贝叶斯法则的分母部分与待估计的状态
x,y无关,因而可以忽略。求解最大后验概率等价于最大似然和先验的乘积。由于我们不知道机器人位姿或路标大概在什么地方,因此就没有了先验。那么,可以求解最大似然估计:
(x,y)MLE∗=argmaxP(z,u∣x,y)
最大似然估计可以理解成:“在什么样的状态下,最可能产生现在观测到的数据”。
2.最小二乘的引出
对于某一次观测:
zk,j=h(yj,xk)+vk,j
由于我们假设了噪声项
vk∼N(0,Qk,j),所以观测数据的条件概率为
P(zj,k∣xk,yj)=N(h(yj,xk),Qk,j)
单次观测的最大似然估计,可以使用最小化负对数来求一个高斯分布的最大似然。任意高维高斯分布
x∼N(μ,∑),它的概率密度函数展开形式为
P(x)=(2π)Ndet(∑)
1exp(−21(x−μ)T∑−1(x−μ))
对其取负对数,得
−ln(P(x))=21ln((2π)Ndet(∑))+21(x−μ)T∑−1(x−μ)
因为对数函数是单调递增的,所以对原函数求最大化相当于对负对数求最小化。在最小化上式的
x时,第一项与
x无关,可以略去。代入SLAM的观测模型:
(xk.yj)∗=argmaxN(h(yj,xk),Qk,j)=argmin((zk,j−h(xk,yj))TQk,j−1(zk,j−h(xk,yj)))
该式等于最小化噪声项的一个二次型。这个二次型成为马哈拉诺比斯距离,又叫马氏距离。它也可以看成由
Qk,j−1加权之后的欧氏距离,在这里
Qk,j−1也叫做信息矩阵,即高斯分布协方差矩阵之逆。
定义各次输入和观测数据与模型之间的误差:
eu,k=xk−f(xk−1,uk)ez,j,k=zk,j−h(xk,yj)
最小化所有时刻估计值与真实值之间的马氏距离,等价于求最大似然估计。负对数允许我们把乘积变成求和:
minJ(x,y)=k∑eu,kTRk−1eu,k+k∑j∑ez,k,jTQk,j−1ez,j,k
这样就得到了最小二乘问题,它的解等价于状态的最大似然估计。