GTSAM
驅動許多現代 SLAM 後端的因子圖最佳化函式庫
授權條款
BSD-2-Clause
概述
Georgia Tech Smoothing and Mapping:一個提供 Python 綁定的 C++ 函式庫,用於以因子圖為基礎的狀態估測與感測器融合。它提供 iSAM2 增量平滑器、一整套現成的因子,涵蓋慣性量測單元(IMU)預積分、GPS、視覺與測距量測,以及底層的李群工具。GTSAM 是許多現代 SLAM 系統內部的最佳化後端,包括 LIO-SAM、Kimera 與 GLIM。
GTSAM 將估測問題建模為因子圖:變數(位姿、地標、速度、偏差)由編碼量測的因子相互連接。它提供批次最佳化器(Levenberg-Marquardt、Gauss-Newton、dogleg)與 iSAM2 增量平滑器、依循 Forster 等人方法的慣性量測單元(IMU)預積分、用於視覺的智慧因子,以及對 SO(3)/SE(3) 的完整李群支援。Python 綁定開放完整的 API,並由一個活躍、採 BSD 授權的社群維護。
為何重要
因子圖已成為 SLAM 與多感測器融合的共通語言,而 GTSAM 是這個領域賴以發展的參考實作:它被廣泛引用,並內嵌於數個最常用的開放 SLAM 系統中。
解決的問題
將慣性量測單元(IMU)、光達(lidar)、攝影機與 GPS 量測融合為一致的狀態估計,是一個大型稀疏最佳化問題。GTSAM 將其表示為因子圖並利用其稀疏性,iSAM2 會在新量測到來時增量更新解,而不必從頭重新求解。
重點
- 因子圖將多感測器融合轉化為具有可重複使用結構的稀疏最佳化問題
- iSAM2 提供增量、即時的平滑,而非反覆進行批次求解
- 現成的慣性量測單元(IMU)、GPS、視覺與測距因子,涵蓋大多數機器人估測問題
- LIO-SAM、Kimera、GLIM 與許多研究系統首選的後端
- Python 綁定讓它在 C++ 程式碼庫之外也容易使用
適用對象
- 需要經過驗證之最佳化後端的 SLAM 系統開發者
- 製作新因子原型的狀態估測研究人員
- 在量產機器人中融合 IMU/GPS/視覺的工程師
- 親手學習估測理論的研究生
限制
- 學習曲線陡峭:要有效使用,必須先掌握因子圖建模與李群概念
- 在某些平台上,從原始碼連同 Python 包裝與 TBB 一起建置可能相當繁瑣