Linux/Mac:
G2O是一种开源C ++框架,用于优化基于图的非线性误差函数。 G2O旨在易于扩展到广泛的问题,通常可以用几行代码指定一个新问题。当前的实施为SLAM和BA的几种变体提供了解决方案。
机器人技术以及计算机视觉的各种问题涉及可以将非线性误差函数的最小化,可以表示为图形。典型的实例是同时定位和映射(SLAM)或捆绑调整(BA)。这些问题的总体目标是找到最大解释受高斯噪声影响的一组测量值的参数或状态变量的配置。 G2O是此类非线性最小二乘问题的开源C ++框架。 G2O旨在易于扩展到广泛的问题,通常可以用几行代码指定一个新问题。当前的实施为SLAM和BA的几种变体提供了解决方案。 G2O提供的性能与针对特定问题的最先进方法的实现相当(02/2011)。
分支Pymem包含一个Python包装器,并切换到智能指针而不是原始指针。目前是实验性的,但欢迎PR和改进 - 一如既往。
有关G2O的Python绑定的PYPI释放,请参见G2O-Python。
Rainer Kuemmerle,Giorgio Grisetti,Hauke Strasdat,Kurt Konolige和Wolfram Burgard G2O:图形优化的一般框架IEEE IEEE国际机器人和自动化会议(ICRA),2011年
可以在/doc/g2o.pdf中找到库的结构以及如何使用和扩展的详细说明,可以如doc/docy/doxygen/readme.txt中所述生成API文档
G2O已根据BSD许可获得许可。但是,某些图书馆根据不同的许可条款可用。见下文。
以下部分根据LGPL v2.1+:
以下部分根据GPL3+许可:
请注意,Cholmod的某些功能(G2O可以使用,请参见下面的Libsuitesparse)在GPL下获得许可。为避免GPL,您可能必须重新编译Cholmod,而不包括其GPL功能。 Cholmod库与Ubuntu或Debian分发,包括GPL功能。例如,如果可用,G2O考虑了在GPL下获得许可的上断分解。
在子文件夹中,我们包括我们不写的软件,以确保简单的编译和集成到G2O本身中。
CERES:BSD(请参阅G2O/AUTODIFF/LICENTION)提取标头以执行自动差异化。
FreeGlut:X-Constortium(请参阅G2O/外部/FreeGlut/Copying)版权(C)1999-2000 Pawel W. Olszta,我们使用剥离版本在OpenGl中绘制文本。
有关许可证的全文,请参见DOC文件夹。
G2O的分发是希望它将有用的,但没有任何保证;即使没有对特定目的的适销性或适合性的隐含保证。有关更多详细信息,请参见许可证。
在Ubuntu / debian上,这些依赖关系通过安装以下软件包来解决。
在Ubuntu / debian上,这些依赖关系通过安装以下软件包来解决。
您可以使用以下命令安装这些软件包
sudo apt install libeigen3-dev libspdlog-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5
如果使用自制,那就
brew install g2o
将安装G2O及其所需的依赖项。在这种情况下,无需手动编译。
如果使用vcpkg,则
scriptinstall-deps-windows.bat
或用于完整的依赖性安装
scriptinstall-additional-deps-windows.bat
将建立和安装依赖关系。 vcpkg的位置和必需的三重态可以分别作为CLI参数传递。请注意,通常VCPKG会自动检测三重态。仅当您不为操作系统使用默认构建时,将其设置。
我们的主要开发平台是Linux。 Mac OS X,Android和Windows(MingW或MSVC)的实验支持。我们建议通过以下命令序列来实现所谓的源构建。
mkdir build
cd build
cmake ../
make
二进制文件将放在bin和lib中的库中,这些图书馆都位于Cmake的构建文件夹下方。
在使用vcpkg的Windows上,以下命令将生成构建脚本(请根据您的系统更改Visual Studio版本号):
mkdir build
cd build
cmake -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON-DVCPKG_TARGET_TRIPLET="%VCPKG_DEFAULT_TRIPLET%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT_DIR%scriptsbuildsystemsvcpkg.cmake" ..`
cmake --build . --target ALL_BUILD
如果您在Windows上编译,并且出于某些原因不使用vcpkg ,请下载EIGEN3并提取它。在CMAKE-GUI中,将可变eigen3_include_dir设置为该目录。
mkdir build
cd build
cmake .. -DG2O_BUILD_APPS=ON -DG2O_BUILD_EXAMPLES=ON -DEIGEN3_INCLUDE_DIR="<THE_PATH_WHERE_YOU_PLACED_EIGEN3_AND_THE_EIGEN3_CMakeLists.txt>"
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 .
我们感谢以下贡献者提供的补丁:
pip安装