视觉SLAM非线性优化之Ceres solver 和 G2o

本文介绍了视觉SLAM中的非线性最小二乘优化问题,探讨了Ceres Solver和G2O库的应用。通过对经典SLAM模型和最小二乘问题的阐述,展示了如何利用这两个库进行曲线拟合和参数估计。Ceres提供自动求导,而G2O基于图优化理论,两者都是解决非线性优化的有效工具。
摘要由CSDN通过智能技术生成

“ 如果你受苦了,感谢生活,那是它给你的一份感觉;

    如果你受苦了,感谢上帝,说明你还活着。”

                                                                                                               ——伊索

 

3月就要结束了~

最近在看视觉SLAM的一些东西,把高博的非线性优化章节理解整理下,对传感器的融合优化很有帮助:=

 

首先(白话)解释下:

         关于SLAM的概念基础就不细说了,可以百度下,经典的SLAM模型主要是由一个状态(转移)方程和一个运动(观测)方程组成,由于状态方程在视觉 SLAM 中没有特殊性,暂且不讨论它,主要讨论观测方程。而通常我们会获得大量带有噪声的观测数据,来推断运动相机的位姿和地图,即演化成一个状态估计问题(也可以说是一个最小二乘问题,可根据情况为线性最小二乘或非线性最小二乘)。在此,针对非线性的最小二乘问题,我们不用EKF来求解,而是用当前主流的非线性的优化方法来求解,比如说梯度下降法、高斯牛顿法(G-N)、列文伯格-马夸尔特方法Levenberg-Marquardt Method(LM)、以及Dog-Leg方法等。那么实际当中,通常使用谷歌的 Ceres 库 以及基于图优化的g2o 库来实现这些求解方法。下面补充两个基础知识:1.经典SLAM中的模型方程;2.最小二乘问题的定义以及解法。

 

●经典SLAM的模型方程

● 最小二乘问题的定义以及解法

                也就是说,所谓的最小二乘问题是指找到测量值和模型预测值之间的最小误差,即:

              其中e(x)为模型和样本之间的误差,在SLAM中亦可以看作为观测值和估计值之间的误差。通过求解该问题我们就能够优化我们的模型函数使之更接近与真实的函数模型。

             下图的数据拟合可以很好的说明最小二乘问题的结果和效果。

注意,如果上面问题为线性的,即线性最小二乘,即可以直接对目标函数求导,并且令其等于零,以此求得其极值,并通过比较求取全局最小值(Global Minimizer),并将其最为目标函数的解。但是如果问题为非线性,此时我们通常无法直接写出其导数形式(函数过于复杂),因此我们不再去试图直接找到全局最小值,而是退而求其次通过不停的迭代计算寻找到函数的局部最小值(Local Minimize

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值