SLAM学习——非线性优化

1.状态估计问题

对于SLAM经典模型,我们知道是由一个运动方程和一个观测方程构成,如下方程:

{ x k = f ( x k − 1 , u k ) + w k z k , j = f ( y j , x k ) + v k , j \left\{\begin{matrix} \mathit{x}_{k}=f(\mathit{x}_{k-1},\mathit{u}_{k})+\mathit{w}_{k} \\ {z}_{k,j}=f(\mathit{y}_{j},\mathit{x}_{k})+\mathit{v}_{k,j} \end{matrix}\right. { xk=f(xk1,uk)+wkzk,j=f(yj,xk)+vk,j

其中 x k \mathit{x}_{k} xk为相机的位姿, u u u 为输入数据,即为采集到的数据。

假如我们在 x k \mathit{x}_{k} xk 处观测到路标 y j \mathit{y}_{j} yj,对应到图像上的像素位置 z k , j \mathit{z}_{k,j} zk,j,那么我们的观测方程可以表示为:

s z k , i = K ∗ e x p ( ε ∧ ) ∗ y i sz_{k,i}=\mathit{K}*exp(\varepsilon^{\wedge })*y_{i} szk,i=Kexp(ε)yi

其中 s s s为像素距离,即摄像机坐标系上的一点到像素坐标系的距离, K K K为内参, e x p ( ε ∧ ) exp(\varepsilon^{\wedge }) exp(ε) 为李代数 s e ( 3 ) se(3) se(3)。接着,在运动方程和观测方程中,我们假设噪声都满足于均值为0的高斯分布

w k ∼ N ( 0 , R k ) , v k ∼ N ( 0 , Q k , j ) \mathit{w}_{k}\sim N(0,\mathit{ {R}_{k}}),\mathit{v}_{k}\sim N(0,\mathit{ {Q}_{k,j}}) wkN(0,Rk),vkN(0,Qk,j)

在这些噪声的影响下,我们希望通过带噪声的数据 z z z u u u来推断位姿 x x x 和地图 y y y (以及他们的概率分布),这构成了一个状态问题,其中有优化方法有:1.扩展卡尔曼滤波器 E K F EKF EKF)求解,关心的是当前时刻的状态估计,而对直接的状态没有多加考虑。2.非线性优化,使用所有时刻采集到的数据进行状态估计,被认为优于传统滤波器。

从概率学角度来看,把所有需要估计的变量都放到一个“状态变量中”,即 $\mathit{x}=\begin{Bmatrix} {x_{1},\cdots ,x_{N},y_{1},\cdots ,y_{M}}\end{Bmatrix} , 在 已 知 输 入 数 据 ,在已知输入数据 ,u 和 观 测 数 据 和观测数据 z$的条件下,求计算 x x x 的条件概率分布: P ( x ∣ z , u ) P(x|z,u) P(xz,u)

当然,如果在运动过程中没有采集数据,且只有一张张图片时,概率分布又可以转换为 P ( x ∣ z ) P(x|z) P(xz)。**如果忽略图像在时间上的联系,看做一堆彼此没有关系的图片,该问题为SfM,即如何从许多图像中重建三维空间结构。**当我们把SLAM看做图像具有时间先后顺序,需要实时求解一个SfM问题。利用贝叶斯法则,有:

P ( x ∣ z ) = P ( z ∣ x ) P ( x ) P ( z ) ∝ P ( z ∣ x ) P ( x ) P(x|z)=\frac{P(z|x)P(x)}{P(z)}\propto P(z|x)P(x) P(xz)=P(z)P(zx)P(x)P(zx)P(x)

其中,贝叶斯法则左侧通常成为后验概率,右侧的 P ( z ∣ x ) P(z|x) P(zx)成为似然,另一部分P(x)称为先验。直接求后验是困难的,但是求一个状态最优估计,使得在该状态下后验概率最大化,则是可行的。即最大后验概率为最大似然与先验的乘积。

如果当不知道机器人在哪里,那我们则没有了先验,可以求解 x 的最大似然估计( M L E MLE MLE):

x M L E ∗ = a r g m a x P ( z ∣ x ) x^{*}_{MLE}=\mathrm{arg} max P(z|x) xMLE=argmaxP(zx)

上述公式可表达为:在什么样的状态下,最可能产生现在观测到的数据。

为转换为最小二乘问题,我们可以得到最大似然估计等价于最小化噪声项的平方(在范数意义下),我们定义数据与估计值之间的误差:

{ e v , k = x k − f ( x k − 1 , u k ) e y , j , k = z k , j − h ( x k , y j ) \left\{\begin{matrix} e_{v,k}=x_{k}-f(x_{k-1},u_{k})\\ e_{y,j,k}=z_{k,j}-h(x_{k},y_{j}) \end{matrix}\right. { ev,k=xkf(xk1,u

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值