您的位置:首页 > 运维架构

g2o(General Graph Optimization)---通用图优化算法

2013-11-12 10:48 549 查看
g2o的本质:g2o是一个算法集的C++实现,而并不是在算法理论上的创新,即根据前人求解非线性最小二乘的理论,根据具体的问题,选用最合适的算法。

它是一个平台,你可以加入你自己的线性方程求解器,编写自己的优化目标函数,确定更新的方式。g2o的作者说Guassian-Newton和Levenberg-Marquardt方法比较naive,但是g2o的本质就是这些算法的实现。事实上,g2o iSAM SPA和 sSPA等非线性优化算法只是在非线性问题线性化时处理得不一样,在线性化后要求解线性方程都是利用了已有的linear solver库来求解,如 CSparse CHOLMOD PCG等,他们都需要依靠Eigen这个线性代数库。

g2o的用途:很多机器人的应用如SLAM(同步定位与制图)还有计算机视觉中的光束优化(bundle adjustment 参考/article/1820939.html

http://courses.cs.washington.edu/courses/cse576/05sp/projects/proj3/artifacts/yongjoon/index.html)都会涉及到最小化非线性误差函数的问题。这类应用中,非线性误差函数可以用图(graph)的形式来表征。整个问题的求解就是要找到最符合观测量的相机参数或机器人状态。



g2o的实现:



类似算法:iSAM (参考http://openslam.org/iSAM.html

SPA2d (参考http://users.ics.forth.gr/~lourakis/sba/

HOG_Man

g2o与其他算法的效果对比:(具体参考论文:《g2o:a general graph optimization》)

Fig1:


Fig2:


Fig3:isam与其他算法的对比(参考:http://people.csail.mit.edu/kaess/isam/comparison.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: