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.
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.