g2o: A General Framework for Graph Optimization

g2o is an open-source C++ framework for optimizing graph-based nonlinear error functions. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA.

Authors
Rainer Kuemmerle; Giorgio Grisetti; Hauke Strasdat; Kurt Konolige; Wolfram Burgard;

Get the Source Code!

Long Description
A wide range of problems in robotics as well as in computer-vision involve the minimization of a non-linear error function that can be represented as a graph. Typical instances are simultaneous localization and mapping (SLAM) or bundle adjustment (BA). The overall goal in these problems is to find the configuration of parameters or state variables that maximally explain a set of measurements affected by Gaussian noise. g2o is an open-source C++ framework for such nonlinear least squares problems. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA. g2o offers a performance comparable to implementations of state-of-the-art approaches for the specific problems (02/2011).


Input Data
Nodes and edges of a graph.

Logfile Format
A set of simple text messages to represent nodes and edges of the graph. Note that examples files are in the repository. See folder data.

Type of Map
Graphs (nodes and edge)

Hardware/Software Requirements
Developed under Linux (GCC). Tested under Linux, Windows (MinGW), and OS X. CMake is needed for building. Uses SuiteSparse if available, requires Qt4 and libQGLViewer for the GUI. Includes a copy of Eigen3.

Papers Describing the Approach
Rainer Kuemmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige, and Wolfram Burgard: g2o: A General Framework for Graph Optimization, IEEE International Conference on Robotics and Automation (ICRA), 2011 (link)

License Information
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The authors allow the users of OpenSLAM.org to use and modify the source code for their own research. Any commercial application, redistribution, etc has to be arranged between users and authors individually and is not covered by OpenSLAM.org.

g2o is licenced under LGPL v3, whereas the g2o_viewer and g2o_incremental are licensed under GPL v3

Further Information
The code of the OpenSLAM repository is a stable release. Please see g2o on github for our devel code, among other things it features a run-time improved version of the Schur complement. Additionally, the devel version is re-licensed under the terms of the BSD license.

C++ code, well-coded, compact, efficient.

We thank Simon Julier for submitting patches to achieve compatibility with Mac OS X.


*** OpenSLAM.org is not responsible for the content of this webpage ***
*** Copyright and V.i.S.d.P.: Rainer Kuemmerle; Giorgio Grisetti; Hauke Strasdat; Kurt Konolige; Wolfram Burgard; ***