RainerKuemmerle / G2o

g2o: A General Framework for Graph Optimization

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language
Yacc
648 projects
Lex
420 projects
shell
77523 projects

Projects that are alternatives of or similar to G2o

ba demo ceres
Bundle adjustment demo using Ceres Solver, with customized cost function and local parameterization on SE(3)
Stars: ✭ 150 (-92.8%)
Mutual labels:  slam, graph-optimization
li slam ros2
ROS2 package of tightly-coupled lidar inertial ndt/gicp slam
Stars: ✭ 160 (-92.32%)
Mutual labels:  slam, g2o
Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (-34.05%)
Mutual labels:  slam
Easy slam tutorial
首个中文的简单从零开始实现视觉SLAM理论与实践教程,使用Python实现。包括:ORB特征点提取,对极几何,视觉里程计后端优化,实时三维重建地图。A easy SLAM practical tutorial (Python).图像处理、otsu二值化。更多其他教程我的CSDN博客
Stars: ✭ 137 (-93.42%)
Mutual labels:  slam
Se2clam
SE(2)-Constrained Localization and Mapping by Fusing Odometry and Vision (IEEE Transactions on Cybernetics 2019)
Stars: ✭ 116 (-94.43%)
Mutual labels:  slam
Turtlebot3 simulations
Simulations for TurtleBot3
Stars: ✭ 104 (-95%)
Mutual labels:  slam
Dl Vision Papers
深度学习和三维视觉相关的论文
Stars: ✭ 123 (-94.09%)
Mutual labels:  slam
Caesar.jl
Robot toolkit: Towards non-parametric and parametric navigation solutions
Stars: ✭ 98 (-95.29%)
Mutual labels:  slam
Surfelwarp
SurfelWarp: Efficient Non-Volumetric Dynamic Reconstruction
Stars: ✭ 149 (-92.84%)
Mutual labels:  slam
M Loam
Robust Odometry and Mapping for Multi-LiDAR Systems with Online Extrinsic Calibration
Stars: ✭ 114 (-94.52%)
Mutual labels:  slam
Vi orb slam2
Monocular/Stereo Visual-Inertial ORB-SLAM based on ORB-SLAM2
Stars: ✭ 137 (-93.42%)
Mutual labels:  slam
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (-9.89%)
Mutual labels:  slam
Door Slam
Distributed, Online, and Outlier Resilient SLAM for Robotic Teams
Stars: ✭ 107 (-94.86%)
Mutual labels:  slam
Cleanit
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners. Under development.
Stars: ✭ 125 (-94%)
Mutual labels:  slam
Rtabmap
RTAB-Map library and standalone application
Stars: ✭ 1,376 (-33.91%)
Mutual labels:  slam
Aruco ekf slam
ArUco-based EKF-SLAM.
Stars: ✭ 142 (-93.18%)
Mutual labels:  slam
Eao Slam
[IROS 2020] EAO-SLAM: Monocular Semi-Dense Object SLAM Based on Ensemble Data Association
Stars: ✭ 95 (-95.44%)
Mutual labels:  slam
Dre slam
RGB-D Encoder SLAM for a Differential-Drive Robot in Dynamic Environments
Stars: ✭ 110 (-94.72%)
Mutual labels:  slam
Ov2slam
OV²SLAM is a Fully Online and Versatile Visual SLAM for Real-Time Applications
Stars: ✭ 119 (-94.28%)
Mutual labels:  slam
Arcoreinsideouttrackinggearvr
Inside Out Positional Tracking (6DoF) for GearVR/Cardboard/Daydream using ARCore v1.6.0
Stars: ✭ 150 (-92.8%)
Mutual labels:  slam

g2o - General Graph Optimization

Linux: CI Windows: Build status Codacy Badge

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.

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

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

Documentation

A detailed description of how the library is structured and how to use and extend it can be found in /doc/g2o.pdf The API documentation can be generated as described in doc/doxygen/readme.txt

License

g2o is licensed under the BSD License. However, some libraries are available under different license terms. See below.

The following parts are licensed under LGPL3+:

  • csparse_extension

The following parts are licensed under GPL3+:

  • g2o_viewer
  • g2o_incremental
  • slam2d_g2o (example for 2D SLAM with a QGLviewer GUI)

Please note that some features of CHOLMOD (which may be used by g2o, see libsuitesparse below) are licensed under the GPL. To avoid the GPL, you may have to re-compile CHOLMOD without including its GPL features. The CHOLMOD library distributed with, for example, Ubuntu or Debian includes the GPL features. The supernodal factorization is considered by g2o, if it is available.

Within the folder g2o/EXTERNAL we include software not written by us to guarantee easy compilation.

  • ceres: BSD (see g2o/EXTERNAL/ceres/LICENSE) Headers to perform Automatic Differentiation

  • freeglut: X Consortium (Copyright (c) 1999-2000 Pawel W. Olszta) We use a stripped down version for drawing text in OpenGL.

See the doc folder for the full text of the licenses.

g2o 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. See the licenses for more details.

Requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • cmake
  • libeigen3-dev

Optional requirements

On Ubuntu / Debian these dependencies are resolved by installing the following packages.

  • libsuitesparse-dev
  • qtdeclarative5-dev
  • qt5-qmake
  • libqglviewer-dev-qt5

Mac OS X

If using Homebrew, then

brew install brewsci/science/g2o

will install g2o together with its required dependencies. In this case no manual compilation is necessary.

Windows

If using vcpkg, then

scripts\install-deps-windows.bat

will build and install the required dependencies. The location of vcpkg and required triplet are determined by the environment variables VCPKG_ROOT_DIR and VCPKG_DEFAULT_TRIPLET.

Compilation

Our primary development platform is Linux. Experimental support for Mac OS X, Android and Windows (MinGW or MSVC). We recommend a so-called out of source build which can be achieved by the following command sequence.

  • mkdir build
  • cd build
  • cmake ../
  • make

The binaries will be placed in bin and the libraries in lib which are both located in the top-level folder.

On Windows with vcpkg the following two commands will generate build scripts for Visual Studio 2017 MSVC 14 tool set:

  • mkdir build
  • cd build
  • cmake -G "Visual Studio 14 2017 Win64" -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON -DVCPKG_TARGET_TRIPLET="%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT_DIR%\scripts\buildsystems\vcpkg.cmake" ..

If you are compiling on Windows and you are for some reasons not using vcpkg please download Eigen3 and extract it. Within cmake-gui set the variable G2O_EIGEN3_INCLUDE to that directory.

Cross-Compiling for Android

  • mkdir build
  • cd build
  • cmake -DCMAKE_TOOLCHAIN_FILE=../script/android.toolchain.cmake -DANDROID_NDK=<YOUR_PATH_TO_ANDROID_NDK_r10d+> -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI="armeabi-v7a with NEON" -DEIGEN3_INCLUDE_DIR="<YOUR_PATH_TO_EIGEN>" -DEIGEN3_VERSION_OK=ON .. && cmake --build .

Acknowledgments

We thank the following contributors for providing patches:

  • Simon J. Julier: patches to achieve compatibility with Mac OS X and others.
  • Michael A. Eriksen for submitting patches to compile with MSVC.
  • Mark Pupilli for submitting patches to compile with MSVC.

Projects using g2o

Contact information

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].