g2o - General Graph Optimization
================================
Linux: [![Build Status](https://travis-ci.org/RainerKuemmerle/g2o.svg?branch=master)](https://travis-ci.org/RainerKuemmerle/g2o)
Windows: [![Build status](https://ci.appveyor.com/api/projects/status/9w0cpb9krc6t4nt7/branch/master?svg=true)](https://ci.appveyor.com/project/RainerKuemmerle/g2o/branch/master)
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
http://ais.informatik.uni-freiburg.de/publications/papers/kuemmerle11icra.pdf
### 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 that your binary has
to be licensed under 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 EXTERNAL we include software not written by us to
guarantee easy compilation.
- csparse: LPGL2.1 (see EXTERNAL/csparse/License.txt)
csparse is compiled if it is not provided by the system.
- ceres: BSD (see 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
* cmake http://www.cmake.org/
* Eigen3 http://eigen.tuxfamily.org
On Ubuntu / Debian these dependencies are resolved by installing the
following packages.
- cmake
- libeigen3-dev
#### Optional requirements
* suitesparse http://www.cise.ufl.edu/research/sparse/SuiteSparse/
* Qt5 http://qt-project.org
* libQGLViewer http://www.libqglviewer.com/
On Ubuntu / Debian these dependencies are resolved by installing the
following packages.
- libsuitesparse-dev
- qtdeclarative5-dev
- qt5-qmake
- libqglviewer-dev
#### Mac OS X
If using [Homebrew](http://brew.sh/), then
`brew install homebrew/science/g2o`
will install g2o together with its required dependencies. In this case no manual compilation is necessary.
### 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.
If you are compiling on Windows, 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.
### Contact information
Rainer Kuemmerle <kuemmerl@informatik.uni-freiburg.de>
Giorgio Grisetti <grisetti@dis.uniroma1.it>
Hauke Strasdat <strasdat@gmail.com>
Kurt Konolige <konolige@willowgarage.com>
Wolfram Burgard <burgard@informatik.uni-freiburg.de>
g2o图优化库的老版本压缩包
需积分: 0 17 浏览量
更新于2023-08-18
收藏 1.98MB RAR 举报
**g2o图优化库详解**
g2o(Graph Optimization)是一个开源的C++库,专为图形模型的优化设计,广泛应用于Simultaneous Localization And Mapping (SLAM)领域。SLAM是机器人学中的核心问题,它涉及机器人在未知环境中同时定位自身位置并构建环境地图。g2o库为解决这一问题提供了高效且灵活的框架。
**1. 图形优化概念**
g2o的核心是基于图的优化方法,其中图的节点代表状态变量(如机器人位置、特征点的位置等),边则表示这些变量之间的关系或约束(如测量数据)。通过最小化图的误差函数(通常为残差平方和),可以找到最佳状态变量的估计,即全局最优解。
**2. g2o架构**
g2o库采用面向对象的设计,包含三个主要组件:节点(Nodes)、边(Edges)和优化器(Optimizers)。节点存储状态信息,边定义节点间的约束,而优化器负责执行优化过程。用户可以根据需求自定义节点和边类型,适应不同的问题。
**3. g2o的主要特性**
- **灵活性**:g2o支持多种优化算法,如Levenberg-Marquardt、Gauss-Newton以及更高效的Dogleg策略。
- **多类型约束**:边可以表示各种类型的测量,如欧氏距离、极几何约束、循环闭合约束等。
- **多类型节点**:节点可以表示各种状态,如2D/3D位置、姿态、速度等。
- **实时性能**:g2o设计时考虑了效率,能够处理大规模的图结构,适用于实时SLAM系统。
- **易于扩展**:由于其模块化设计,用户可以方便地添加新的边类型和优化算法。
**4. 使用g2o进行SLAM**
在SLAM中,g2o通常用于融合来自不同传感器的数据,如激光雷达、视觉、IMU等,以估计机器人的轨迹和环境的3D结构。通过不断更新和优化图模型,g2o能够逐渐减少不确定性,提供更准确的定位和建图结果。
**5. g2o的版本差异**
"老版本"可能指的是g2o早期的代码版本,与最新版相比,可能在功能、性能或API上存在差异。随着时间的发展,g2o库持续改进,增加了新特性,优化了性能,修复了已知问题。老版本可能不包含某些新功能,但可能更适合研究特定的旧算法或兼容旧的项目需求。
**6. 学习和应用g2o**
对于初学者,理解g2o的底层原理和使用方式是必要的。可以参考官方文档、开源示例代码以及相关的研究论文来学习。同时,参与社区讨论和实践项目能加速学习过程。在实际应用中,g2o可以作为开发SLAM系统的基础,也可以作为其他图形优化问题的解决方案。
总结来说,g2o图优化库是SLAM领域的一个强大工具,它提供了灵活、高效的图形优化框架。通过对老版本的g2o进行研究,开发者可以深入了解其内部机制,为自己的项目或研究提供坚实的基础。
coolrp
- 粉丝: 2
- 资源: 2
最新资源
- MATLAB界面版本-汉字识别.zip
- 双有源桥DC-DC变器仿真 隔离型双向变器 采用光伏(PV)+蓄电池+负载 光伏采用mppt 控制 蓄电池恒流充放电控制 闭环控制,matlab2021b仿真模型
- MATLAB界面版本-火焰识别系统设计.zip
- MATLAB界面版本-基于DWT+SVD结合傅里叶变换的数字图像水印水印系统.zip
- MATLAB界面版本-家居防火识别系统.zip
- MATLAB界面版本-火焰烟雾检测.zip
- MATLAB界面版本-教室人数统计.zip
- MATLAB界面版本-金属表面缺陷分析.zip
- MATLAB界面版本-交通道路标识识别.zip
- MATLAB界面版本-考勤系统设计.zip
- MATLAB界面版本-口罩识别.zip
- MATLAB界面版本-口罩检测.zip
- MATLAB界面版本-口罩识别设计.zip
- MATLAB界面版本-口罩识别检测.zip
- MATLAB界面版本-垃圾分类系统.zip
- MATLAB界面版本-垃圾识别定位.zip