Linux/Mac:
G2O-это структура C ++ с открытым исходным кодом для оптимизации нелинейных функций ошибок на основе графиков. G2O был разработан, чтобы быть легко расширяемым до широкого спектра проблем, и новая проблема, как правило, может быть указана в нескольких строках кода. Текущая реализация предоставляет решения для нескольких вариантов Slam и BA.
Широкий спектр проблем в робототехнике, а также в компьютерном виде включает минимизацию нелинейной функции ошибки, которая может быть представлена в виде графика. Типичными случаями являются одновременная локализация и картирование (шлем) или регулировка пакета (BA). Общая цель в этих проблемах состоит в том, чтобы найти конфигурацию параметров или переменных состояния, которые максимально объясняют набор измерений, затронутых гауссовым шумом. G2O-это структура C ++ с открытым исходным кодом для таких нелинейных проблем с наименьшими квадратами. G2O был разработан, чтобы быть легко расширяемым до широкого спектра проблем, и новая проблема, как правило, может быть указана в нескольких строках кода. Текущая реализация предоставляет решения для нескольких вариантов Slam и BA. G2O предлагает производительность, сравнимую с реализациями современных подходов для конкретных проблем (02/2011).
Паймем ветви содержит обертку на питоне и переключается на умный указатель вместо необработанных указателей. В настоящее время это экспериментально, но PR и улучшения приветствуются - как всегда.
См. G2O-Python для выпуска PYPI привязки Python G2O.
Райнер Куммерле, Джорджо Грисетти, Хауке Страсдат, Курт Конолиге и Вольфрам Бургард G2O: общая структура для оптимизации графиков IEEE Международная конференция по робототехнике и автоматизации (ICRA), 2011
Подробное описание того, как структурирована библиотека и как использовать и расширить ее, можно найти в /док /г2O.PDF Документация API может быть сгенерирована, как описано в DOC/DOXYGEN/README.TXT
G2O лицензирован по лицензии BSD. Тем не менее, некоторые библиотеки доступны в различных условиях лицензии. См. ниже.
Следующие детали лицензированы в рамках LGPL v2.1+:
Следующие детали лицензированы в соответствии с GPL3+:
Обратите внимание, что некоторые функции Cholmod (которые могут использоваться G2O, см. Libsuitesparse ниже) лицензированы в GPL. Чтобы избежать GPL, вам, возможно, придется переадресаться чолмода, не включая его функции GPL. Библиотека Чолмода, распространенная, например, Ubuntu или Debian, включает функции GPL. Например, супернодальная факторизация, которая лицензирована в GPL, рассматривается G2O, если она доступна.
В субсолдеры мы включаем программное обеспечение, не написанное нами, чтобы гарантировать легкую компиляцию и интеграцию в сам G2O.
CERES: BSD (см. G2O/Autodiff/License) Извлеченные заголовки для выполнения автоматической дифференциации.
FreeGlut: X-Consortium (см. G2O/External/FreeGlut/Comping) 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 автоматически обнаруживает триплет. Установите его, только если вы не используете сборку по умолчанию для вашей ОС.
Наша основная платформа разработки - Linux. Экспериментальная поддержка Mac OS X, Android и Windows (Mingw или MSVC). Мы рекомендуем так называемую из исходной сборки, которая может быть достигнута с помощью следующей последовательности команды.
mkdir build
cd build
cmake ../
make
Двоирные файлы будут размещены в мусорном ведре и библиотеках в LIB, которые расположены под папкой сборки Cmake.
В Windows с vcpkg Следующие команды будут генерировать сценарии сборки (измените номер версии 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