【视觉SLAM十四讲】非线性优化(附Ceres和g2o的安装)

本文为视觉 SLAM 学习总结。

在给定观测数据 z k , j z_{k,j} zk,j 时,如何估计状态变量 x k , y j x_k,y_j xk,yj,即同时定位和建图

本讲内容概要

  • 最小二乘法的含义和处理方式
  • Gauss-Newton,Levenburg-Marquadt 等下降策略
  • Ceres 库和 g2o 库的基本使用方法

状态估计问题

最大后验与最大似然

回顾 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(xk1,uk)+wkzk,j=h(yj,xk)+vk,j
其中

  • 相机位姿: x k = T k = e x p ( ξ k ) x_k=T_k=exp(ξ_k) xk=Tk=exp(ξk)
  • 像素: s z k , j = K e x p ( ξ ^ ) y j sz_{k,j}=Kexp(\hat ξ)y_j szk,j=Kexp(ξ^)yj
  • 噪声: w k ∼ ( 0 , R k ) , v k ∼ ( 0 , Q k , j ) w_k\sim(0,R_k),v_k\sim(0,Q_{k,j}) wk(0,Rk),vk(0,Qk,j)

最简单的情况是: f , g f,g f,g 都为线性函数,噪声服从高斯分布,这种情况在 CH10 中会讲到,使用 KEF 可以求得无偏的最优解。如果是非线性系统,和非高斯噪声,情况会变得很复杂,要分情况讨论。

以前通常用滤波器求解状态估计,该方法假设该系统具有马尔可夫性——系统下一时刻状态仅依赖于上一个状态。于是我们可以只维护上一个状态,当有新的输入进入时就更新一次状态估计。

近年来非线性优化已成为主流方法。

状态变量:所有待求解的量,即所有时刻的位姿和路标
x = { x 1 , … , x N , y 1 , … , y M } x=\{x_1,…,x_N,y_1,…,y_M\} x={ x1,,xN,y1,,yM}
状态估计实际上是求解条件分布: P ( x ∣ z , u ) P(x|z,u) P(xz,u),这里的 z , u z,u z,u 是统称。考虑最简单的情况,当只有观测时,该问题类似于求解一个 SfM(Structure from Motion) 问题。

由贝叶斯法则有:
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 ) P(x) P(x) 为先验。

然而, P ( x ∣ z ) P(x|z) P(xz) 条件分布很难求解,但是我们可以求解:

  • 最大后验估计(MAP)。因为分母与 x x x 无关直接省略。
    x M A P ∗ = arg ⁡ max ⁡ P ( x ∣ z ) = arg ⁡ max ⁡ P ( z ∣ x ) P ( x ) x^*_{MAP}=\arg \max P(x|z)=\arg \max P(z|x)P(x) xMAP=argmaxP(xz)=argmaxP(zx)P(x)

  • 最大似然估计(MLE)。此时先验 x x x 未知
    x M A P ∗

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值