Linux/Mac:
G2Oは、グラフベースの非線形エラー関数を最適化するためのオープンソースC ++フレームワークです。 G2Oは、広範囲の問題に簡単に拡張できるように設計されており、通常、新しい問題を数行のコードで指定できます。現在の実装は、SLAMおよびBAのいくつかのバリアントのソリューションを提供します。
ロボット工学とコンピュータービジョンの幅広い問題には、グラフとして表すことができる非線形エラー関数の最小化が含まれます。典型的なインスタンスは、同時ローカリゼーションとマッピング(SLAM)またはバンドル調整(BA)です。これらの問題の全体的な目標は、ガウスノイズの影響を受ける一連の測定値を最大限に説明するパラメーターまたは状態変数の構成を見つけることです。 G2Oは、このような非線形最小二乗問題のオープンソースC ++フレームワークです。 G2Oは、広範囲の問題に簡単に拡張できるように設計されており、通常、新しい問題を数行のコードで指定できます。現在の実装は、SLAMおよびBAのいくつかのバリアントのソリューションを提供します。 G2Oは、特定の問題に対する最先端のアプローチの実装に匹敵するパフォーマンスを提供します(2011年2月)。
Branch PymemにはPythonラッパーが含まれており、生のポインターの代わりにスマートポインターに切り替えます。現在は実験的ですが、PRSと改善はいつものように大歓迎です。
G2OのPython BindingsのPYPIリリースについては、G2O-Pythonを参照してください。
Rainer Kuemmerle、Giorgio Grisetti、Hauke Strasdat、Kurt Konolige、およびWolfram Burgard G2O:グラフ最適化の一般的なフレームワークIEEE国際ロボットと自動化に関する国際会議(ICRA)、2011年
ライブラリがどのように構造化されているか、どのように使用および拡張するかの詳細な説明は/doc/g2o.pdfで見つけることができます。APIドキュメントは、doc/doxygen/readme.txtで説明されているように生成できます。
G2Oは、BSDライセンスに基づいてライセンスされています。ただし、一部のライブラリは異なるライセンス条件で入手できます。以下を参照してください。
次の部品は、LGPL v2.1+の下でライセンスされています。
次の部品は、GPL3+の下でライセンスされています。
Cholmodのいくつかの機能(G2Oで使用される場合があり、以下のLibsuitesparseを参照)はGPLの下でライセンスされていることに注意してください。 GPLを回避するには、GPL機能を含めることなくCholmodを再コンパイルする必要がある場合があります。たとえば、UbuntuやDebianなどで配布されたCholmodライブラリには、GPL機能が含まれています。たとえば、GPLに基づいてライセンスされているスーパーノーダル因数分解は、利用可能な場合はG2Oによって考慮されます。
サブフォルダー内には、G2O自体への簡単な編集と統合を保証するために、当社が書いたソフトウェアを含めています。
CERES:BSD(G2O/AutoDiff/ライセンスを参照)ヘッダーを抽出して、自動分化を実行しました。
FreeGlut:X-Consortium(G2O/外部/FreeGlut/Copyingを参照)Copyright(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
Homebrewを使用する場合は、
brew install g2o
必要な依存関係と一緒にG2Oをインストールします。この場合、手動の編集は必要ありません。
VCPKGを使用する場合、
scriptinstall-deps-windows.bat
または完全な依存関係のインストール用
scriptinstall-additional-deps-windows.bat
依存関係を構築およびインストールします。 vcpkgと必要なトリプレットの位置は、それぞれCLI引数として渡すことができます。通常、VCPKGはトリプレットを自動検出することに注意してください。 OSのデフォルトビルドを使用していない場合にのみ設定します。
私たちの主要な開発プラットフォームはLinuxです。 Mac OS X、Android、Windows(MINGWまたはMSVC)の実験的サポート。以下のコマンドシーケンスで達成できるソースビルドからのいわゆるビルドをお勧めします。
mkdir build
cd build
cmake ../
make
バイナリは、Cmakeのビルドフォルダーの下にあるBinとLibのライブラリに配置されます。
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を介して設置可能です