Linux/Mac:
G2O ist ein Open-Source-C ++-Framework zur Optimierung von nichtlinearen Fehlerfunktionen von Graphen. G2O wurde so konzipiert, dass sie leicht zu einer Vielzahl von Problemen ausgeht, und ein neues Problem kann normalerweise in einigen Codezeilen angegeben werden. Die aktuelle Implementierung liefert Lösungen für mehrere Varianten von Slam und BA.
Eine breite Palette von Problemen in der Robotik sowie in der Computervision beinhaltet die Minimierung einer nichtlinearen Fehlerfunktion, die als Diagramm dargestellt werden kann. Typische Fälle sind die gleichzeitige Lokalisierung und Kartierung (SLAM) oder Bündelanpassung (BA). Das Gesamtziel dieser Probleme ist es, die Konfiguration von Parametern oder Zustandsvariablen zu ermitteln, die einen Satz von Messungen, die durch Gaußschen Rauschen beeinflusst werden, maximal erklären. G2O ist ein Open-Source-C ++-Framework für solche nichtlinearen Probleme mit der kleinsten Quadrate. G2O wurde so konzipiert, dass sie leicht zu einer Vielzahl von Problemen ausgeht, und ein neues Problem kann normalerweise in einigen Codezeilen angegeben werden. Die aktuelle Implementierung liefert Lösungen für mehrere Varianten von Slam und BA. G2O bietet eine Leistung, die mit Implementierungen hochmoderner Ansätze für die spezifischen Probleme vergleichbar ist (02.02.2011).
Der Zweig Pymem enthält eine Python -Wrapper und schaltet sich an Smart Zeiger anstelle von Rohzeigern. Es ist derzeit experimentell, aber PRs und Verbesserungen sind wie immer willkommen.
Siehe G2O-Python für die PYPI-Freisetzung von G2O-Python-Bindungen.
Rainer Kuemmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige und Wolfram Burgard G2O: Ein allgemeiner Rahmen für die IEEE International Conference für Robotik und Automatisierung von Graphoptimierung (ICRA), 2011
Eine detaillierte Beschreibung, wie die Bibliothek strukturiert ist und wie sie verwendet und erweitert werden kann, kann sie in /doc/g2o.pdf gefunden werden
G2O ist unter der BSD -Lizenz lizenziert. Einige Bibliotheken sind jedoch unter verschiedenen Lizenzbedingungen verfügbar. Siehe unten.
Die folgenden Teile sind unter LGPL v2.1+lizenziert:
Die folgenden Teile sind unter GPL3+lizenziert:
Bitte beachten Sie, dass einige Merkmale von Cholmod (die von G2O verwendet werden können, siehe libuitessparse unten) unter der GPL lizenziert sind. Um die GPL zu vermeiden, müssen Sie möglicherweise Cholmod erneut kompilieren, ohne seine GPL-Funktionen einzubeziehen. Die Cholmod -Bibliothek, die beispielsweise Ubuntu oder Debian verteilt ist, enthält die GPL -Funktionen. Beispielsweise wird die unter GPL lizenzierte Supernodalfaktorisierung von G2O berücksichtigt, wenn sie verfügbar ist.
Innerhalb von Unterbeordnungen haben wir Software, die nicht von uns geschrieben wurden, eine einfache Zusammenstellung und Integration in G2O selbst gewährleistet.
Ceres: BSD (siehe G2O/Autodiff/Lizenz) extrahierte Header, um eine automatische Differenzierung durchzuführen.
FREEGLUT: X-CONSORTIUM (siehe G2O/Externe/FreeGlut/Copying) Copyright (C) 1999-2000 Pawel W. olszta Wir verwenden eine abgespeckte Version zum Zeichnen von Text in OpenGL.
Der vollständige Text der Lizenzen finden Sie im DOC -Ordner.
G2O wird in der Hoffnung verteilt, dass es nützlich sein wird, aber ohne Garantie; Ohne die implizite Garantie für Handelsfähigkeit oder Eignung für einen bestimmten Zweck. Weitere Informationen finden Sie in den Lizenzen.
Auf Ubuntu / Debian werden diese Abhängigkeiten durch Installieren der folgenden Pakete gelöst.
Auf Ubuntu / Debian werden diese Abhängigkeiten durch Installieren der folgenden Pakete gelöst.
Sie können diese Pakete mit dem folgenden Befehl installieren
sudo apt install libeigen3-dev libspdlog-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5
Wenn Sie Homebrew verwenden, dann
brew install g2o
installiert G2O zusammen mit seinen erforderlichen Abhängigkeiten. In diesem Fall ist keine manuelle Zusammenstellung erforderlich.
Wenn Sie VCPKG verwenden, dann
scriptinstall-deps-windows.bat
oder für die Installation der vollständigen Abhängigkeiten
scriptinstall-additional-deps-windows.bat
Erstellt und installiert die Abhängigkeiten. Der Standort von vcpkg und das erforderliche Triplett können als CLI -Argumente übergeben werden. Beachten Sie, dass VCPKG normalerweise das Triplett automatisch erfasst. Stellen Sie es nur ein, wenn Sie das Standard -Build für Ihr Betriebssystem nicht verwenden.
Unsere primäre Entwicklungsplattform ist Linux. Experimentelle Unterstützung für Mac OS X, Android und Windows (Mingw oder MSVC). Wir empfehlen einen sogenannten Quellbau, der durch die folgende Befehlssequenz erreicht werden kann.
mkdir build
cd build
cmake ../
make
Die Binärdateien werden in Bin und die Bibliotheken in LIB platziert, die sich beide im Build -Ordner von Cmake befinden.
Unter Windows mit vcpkg generieren die folgenden Befehle Build -Skripte (bitte ändern Sie die Visual Studio -Versionsnummer in Übereinstimmung mit Ihrem System):
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
Wenn Sie unter Windows kompilieren und aus einigen Gründen keine vcpkg verwenden, laden Sie uns bitte herunter und extrahieren Sie es. Setzen Sie innerhalb von CMake-GUI die variable Eigen3_include_dir in dieses Verzeichnis.
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 .
Wir danken den folgenden Mitwirkenden für die Bereitstellung von Patches:
pip installierbar ist