使用G2O拟合曲线

标签: 优化
367人阅读 评论(0) 收藏 举报
分类:

这是参考自清华大学的高翔所著的《视觉SLAM十四讲》读后感,笔记和摘要。

使用G2O拟合曲线

首先,将曲线拟合问题抽象成图优化。在该问题中,只要记住节点为优化变量,边为误差项即可。


  • 在曲线拟合问题中,整个问题只有一个定点:曲线模型的参数a,b,c;而各个噪声的数据点,构成了一个个误差项,也就是图优化的边。我们把边称为Hyper Edge,整个图叫做Hyper Graph 。

优化步骤


弄清楚这个模型后,接下来就是在G2O中建立该模型,进行优化了


  • 定义顶点和边的类型
  • 构建图
  • 选择优化算法
  • 调用g2o进行优化,返回结果

下面演示一下程序
std::cout<<"Hello World"<<std::endl;


在这个程序中,从g2o派生出了用于曲线拟合的图优化顶点和边:CurveFittingVertex和CurveFittingEdge,这实质上扩展了g2o的使用方式。在这两个派生类中,重写了重要的虚函数:


  • 顶点的更新函数:oplusImpl。我们知道优化过程中最重要的是增量Δx的计算,而该函数处理的是xk+1=xk+Δx的过程。在曲线拟合的过程中,由于优化变量本身位于向量空间中,这个更新计算确实就是简单的加法。但是,当优化变量不在向量空间中,比如说x是相机位姿,它本身不一定有加法运算。这时,就需要重新定义增量如何加到现有的估计上的行为。
  • 顶点的重置函数:setToOriginImpl。这是平凡的,把估计值置0.
  • 边的误差函数计算:computerError。该函数需要去除边所连接的顶点的当前估计置,根据曲线模型,与它的观测值比较。这和最小二乘问题中的误差模型是一致的。
  • 存盘和读数函数:read和write。由于并不像进行读/写操作,所以留空。

在定义了顶点和边之后,在main函数里声明了一个图模型,然后按照生成的噪声数据,往图模型中添加顶点和边,最后调用优化函数进行优化。g2o会给出优化的结果。

Code:



- Red
+ Green
* Blue

查看评论

g2o的安装及初步使用

声明:本博客仅供个人学习使用。转载自  Jasmine_shine g2o的安装及初步使用  运行环境:ubuntu12.04 + g2o  个人原创,转载请注明...
  • u012700322
  • u012700322
  • 2016-08-04 20:36:12
  • 1551

g2o拟合曲线

CmakeLists: cmake_minimum_required(VERSION 3.7) project(g2o_curve_fitting_robin) set(CMAKE_CXX_STA...
  • robinhjwy
  • robinhjwy
  • 2017-08-23 20:58:51
  • 261

g2o学习——再看顶点和边

写在前面 跟着g2o的slam2d_tutorial进行了学习,发现自己对于顶点和边的理解还是不太够,觉得有必要把顶点和边的一些东西再给总结一下,主要参考的就是如下网站: http://docs....
  • wubaobao1993
  • wubaobao1993
  • 2018-02-16 00:03:24
  • 120

半闲居士视觉SLAM十四讲笔记(6)非线性优化 - part 2 Ceres、g2o简介和使用

本系列文章由 屋卡出品,转载请注明出处。 文章链接:http://blog.csdn.net/wxr769066052/article/details/78595158 作者:吴向荣(屋卡) 邮...
  • wxr769066052
  • wxr769066052
  • 2017-11-21 17:48:22
  • 372

G2O

https://github.com/RainerKuemmerle/g2o1、sudo apt-get install libeigen3-dev  libsuitesparse-dev qtdec...
  • sfe1012
  • sfe1012
  • 2018-03-08 22:37:51
  • 54

g2o库文件已上传

下载地址:http://download.csdn.net/detail/aopaw/9746339 需要积分,分有点高,但是有时候需要下载大家懂的。...
  • aopaw
  • aopaw
  • 2017-02-03 13:03:54
  • 242

g2o学习——顶点和边之外的solver

写在前面 最近学习g2o的程序,跟着例程做了几个程序,其实其中大多数要注意的就是顶点和边的一些东西,本次博客旨在记录那些不被看到的过程,也就是g2o帮助我们做了哪些东西,主要参考的就是如下网站: ...
  • wubaobao1993
  • wubaobao1993
  • 2018-02-18 23:40:58
  • 143

图优化 G2o库使用 数值优化算法 牛顿 高斯

* 原理介绍 http://blog.csdn.net/liu14lang/article/details/53991897 * e...
  • xiaoxiaowenqiang
  • xiaoxiaowenqiang
  • 2018-01-06 20:27:27
  • 309

g2o:一种图优化的C++框架

声明:转载自 Taylor Guo ,仅供个人学习 g2o: A general framework for graph optimization 原文发表于IEEE InternationalCo...
  • u012700322
  • u012700322
  • 2016-10-19 10:41:07
  • 2379

G2O非线性优化

g2o即General Graph Optimization,它是一个基于图优化的库。至于图优化理论,参照半闲居士的博客 接着上回曲线拟合问题,拟合y=Asin(Bx)+Ccos(Dx),已知N组数据...
  • danmeng8068
  • danmeng8068
  • 2018-03-28 11:07:58
  • 17
    个人资料
    等级:
    访问量: 1429
    积分: 64
    排名: 161万+
    文章存档