borglab/gtsam
요약
GTSAM은 로보틱스 및 비전 분야의 스무딩과 매핑(SAM)을 위해 인수 그래프(Factor Graphs)와 베이즈 네트워크를 사용하는 C++ 라이브러리입니다. 최신 버전은 C++17 전환 및 Boost 의존성 완화를 특징으로 하며, C++ 외에도 MATLAB 및 Python 래퍼를 지원합니다.
핵심 포인트
- 인수 그래프와 베이즈 네트워크를 기반으로 한 로보틱스/비전용 최적화 라이브러리
- C++17 전환 및 Boost 의존성 선택적 사용 가능 (GTSAM_USE_BOOST_FEATURES 플래그로 제어)
- C++, Python, MATLAB 환경을 모두 지원하는 멀티 언어 래퍼 제공
- TBB 및 Intel MKL을 통한 성능 최적화 지원
- GTSAM 4 버전에서 Expressions, Python 툴박스, traits 기술 도입
중요 참고 사항
develop 브랜치는 공식적으로 "Pre 4.3" 모드입니다. C++17으로 전환하고 boost에서 벗어남에 따라 여러 API 파괴적 변경(API-breaking changes)이 있을 것으로 예상합니다.
또한, 4.2 버전에서 사용 중단(deprecated)된 기능들은 제거될 예정입니다. 해당 기능들이 필요하다면 안정적인 4.2 릴리스를 사용해 주세요. 다만, 대부분은 쉽게 변환이 가능하며, cmake 플래그인 GTSAM_ALLOW_DEPRECATED_SINCE_V42를 비활성화함으로써 (4.2 버전에서) 추적할 수 있습니다.
GTSAM은 희소 행렬(sparse matrices) 대신 인수 그래프(Factor Graphs)와 베이즈 네트워크(Bayes Networks)를 기본 계산 패러다임으로 사용하여 로보틱스(robotics) 및 비전(vision) 분야의 스무딩 및 매핑(smoothing and mapping, SAM)을 구현하는 C++ 라이브러리입니다.
| CI 상태 | 플랫폼 | 컴파일러 |
|---|---|---|
| Ubuntu 22.04, MacOS 13-14, Windows | gcc/clang, MSVC | |
| ... |
C++ 라이브러리 외에도 GTSAM은 MATLAB 및 Python용 래퍼(wrappers)를 포함하고 있습니다.
C++ API 문서: https://gtsam.org/doxygen/
Python API 문서: https://borglab.github.io/gtsam/
라이브러리 루트 폴더에서 다음을 실행하십시오:
#!bash
mkdir build
cd build
...
선행 요구 사항:
-
최신 컴파일러:
- Mac: 최소 xcode-14.2
- Linux: 최소 clang-11 또는 gcc-9
- Windows: 최소 msvc-14.2
-
CMake >= 3.9
-
Ubuntu:
sudo apt-get install cmake -
Ubuntu:
선택적 Boost 선행 요구 사항:
Boost는 이제 선택 사항입니다. 두 가지 cmake 플래그가 그 동작을 제어합니다:
GTSAM_USE_BOOST_FEATURES = ON|OFF
: 테스트의 일부 타이머 및 컨셉 확인(concept checking)은 여전히 boost에 의존합니다.
GTSAM_ENABLE_BOOST_SERIALIZATION = ON|OFF
: 인수 그래프(factor graphs), 인수(factors) 등의 직렬화(serialization)는 여전히 boost를 사용하여 수행됩니다.
만약 이 플래그 중 하나 또는 둘 모두가 ON인 경우, Boost >= 1.70을 설치해야 합니다.
- Mac:
brew install boost - Ubuntu:
sudo apt-get install libboost-all-dev - Windows: vcpkg 패키지 매니저 사용을 강력히 권장합니다. 다른 설치 방법이나 문제 해결을 위해서는 cmake/HandleBoost.cmake 스크립트의 안내를 참조하십시오.
선택적 선행 요구 사항 - CMake가 찾을 수 있는 경우 자동으로 사용됨:
- Intel Threaded Building Blocks (TBB) (Ubuntu:
sudo apt-get install libtbb-dev)
) - Intel Math Kernel Library (MKL) (Ubuntu: APT를 사용하여 설치)
- 더 자세한 설치 정보는 INSTALL.md를 참조하세요.
- MKL이 모든 경우에 속도 향상을 제공하지 않을 수도 있음에 유의하십시오. MKL 사용 여부에 따라 문제를 벤치마크(Benchmark)하여 확인하시기 바랍니다.
GTSAM 4는 여러 가지 새로운 기능, 특히 Expressions와 Python 툴박스를 도입했습니다. 또한 non-GTSAM 타입으로 최적화할 수 있게 해주는 C++ 기술인 traits를 도입했습니다. 이를 통해 Point2 및 Point3와 같은 기하학적 타입(Geometric types)을 순수 Eigen 타입으로 대체할 수 있는 길이 열렸으며, 실제로 그렇게 수행하고 있습니다. 컴파일 에러를 발생시키지는 않지만 중요한 변경 사항은 Point2 및 Point3의 zero-initialization(0으로 초기화)이 deprecated(사용 중단 예정)되었다는 점입니다. 따라서 기본 생성자(Default constructor)를 사용하는 함수들이 부정확해질 수 있음을 인지하시기 바랍니다.
4.3 릴리스 이후 새롭게 deprecated된 메서드들을 위해 GTSAM_ALLOW_DEPRECATED_SINCE_V43 플래그가 존재합니다. 이 플래그는 기본적으로 On 상태이며, 이를 통해 누구나 버전 4.3을 가져와 바로 컴파일할 수 있습니다.
우리는 GTSAM에 대한 MATLAB 및 Python 래퍼(Wrappers) 지원을 제공합니다. 자세한 내용은 연결된 문서를 참조하십시오.
학술 연구를 위해 GTSAM을 사용하는 경우, 다음 인용문을 사용해 주세요:
@software{gtsam,
author = {Frank Dellaert and GTSAM Contributors},
title = {borglab/gtsam},
...
Factor Graphs for Robot Perception 도서를 인용하려면 다음을 사용하십시오:
@book{factor_graphs_for_robot_perception,
author={Frank Dellaert and Michael Kaess},
year={2017},
...
IMU preintegration(IMU 사전 적분) 방식을 사용하는 경우, 다음을 인용하십시오:
@book{imu_preintegration,
author={Christian Forster and Luca Carlone and Frank Dellaert and Davide Scaramuzza},
title={IMU preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation},
...
GTSAM은 다음을 기반으로 한 최첨단 IMU 처리 방식을 포함하고 있습니다:
- Todd Lupton and Salah Sukkarieh,
"Visual-Inertial-Aided Navigation for High-Dynamic Motion in Built Environments Without Initial Conditions", TRO, 28(1):61-76, 2012. [link]
저희의 구현은 다음 논문에서 상세히 다루는 매니폴드(manifold) 상에서의 적분을 사용하여 이를 개선했습니다.
- Luca Carlone, Zsolt Kira, Chris Beall, Vadim Indelman, and Frank Dellaert,
"Eliminating conditionally independent sets in factor graphs: a unifying perspective based on smart factors", Int. Conf. on Robotics and Automation (ICRA), 2014. [link] - Christian Forster, Luca Carlone, Frank Dellaert, and Davide Scaramuzza,
"IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation", Robotics: Science and Systems (RSS), 2015. [link]
학술적인 작업에서 이 요소를 사용하려면 위에 언급된 논문들을 인용해 주십시오.
GTSAM 4에서는 NavState 접선 공간(tangent space)에서의 적분을 기반으로 하며, 본 문서에 상세히 설명된 새로운 더 효율적인 구현이 기본적으로 활성화됩니다. RSS 2015 버전을 사용하려면 GTSAM_TANGENT_PREINTEGRATION 플래그를 OFF로 설정하십시오.
일반적인 논의를 위한 GTSAM 사용자 Google 그룹이 있습니다.
여기에서 중요한 GTSAM 개념에 대해 읽어보십시오. (초고속) 자동 미분(automatic differentiation)을 지원하는 GTSAM 표현식(Expressions)에 대한 입문서는 BitBucket의 GTSAM 위키에서 찾을 수 있습니다.
더 자세한 설치 지침은 INSTALL 파일을 참조하십시오. 저희 CI/CD 프로세스는 workflows.md에 상세히 설명되어 있습니다.
GTSAM은 BSD 라이선스 하에 오픈 소스로 제공되며, LICENSE 및 LICENSE.BSD 파일을 참고하십시오.
GTSAM 사용 예제는 examples/ 디렉터리와 USAGE 파일을 참조하십시오.
GTSAM은 Georgia Institute of Technology의 Frank Dellaert 연구실에서 수년 동안 많은 기여자들의 도움을 받아 개발되었으며, THANKS를 참고해 주십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Jupyter Notebook (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기