Open Source Robotics

精選高品質的開源機器人專案、工具與軟體,推動機器人社群向前發展。

Factor Graph

  • 類別: State estimation & navigation › Localisation
  • 標籤: state-estimation, slam, probabilistic-inference, optimization, sensor-fusion

一種二分圖,將機率分布表示為因子的乘積,把姿態與地標等未知變數,連結到約束它們的量測與先驗。

定義

因子圖(Factor graph)有兩種節點。變數節點代表待估測的未知量,例如機器人姿態、速度、感測器偏差或地標位置。因子節點代表關於這些未知量的資訊,例如一個先驗、兩個姿態之間的一次里程計量測,或一次相機對地標的觀測,而每個因子只連接到它所涉及的變數。這張圖描述一個聯合分布,等於所有因子的乘積,因此能把問題的結構明確呈現:哪些未知量彼此相連,哪些量測是稀疏的局部約束。

因子圖由 Kschischang、Frey 與 Loeliger(2001)提出,作為推論的通用框架,並在機器人學中廣為採用,這主要歸功於 Dellaert 與 Kaess 在平滑與建圖方面的研究。在高斯雜訊模型下,給定所有因子求所有變數最可能的值,是一個非線性最小平方問題:每個因子貢獻一個以其資訊矩陣加權的殘差。求解器會將殘差線性化,利用圖的稀疏性有效率地分解所得的線性系統,並以 Gauss-Newton 或 Levenberg-Marquardt 法迭代。iSAM2 等增量式求解器會在新因子加入時更新解,而不必從頭重新求解。GTSAM 直接實作了因子圖,g2o 與 Ceres 等通用最小平方函式庫也用於同類問題。

它在實務上最主要的吸引力是模組化。新的感測器就成為一種新的因子類型,有自己的殘差與雜訊模型,因此 IMU 預積分、GPS、輪式里程計、光達掃描匹配、迴圈閉合以及學習而得的量測模型,都能放在同一個估測器中。姿態圖最佳化是一個特例,其中每個變數都是姿態,每個因子都是相對姿態約束;一般的因子圖還能容納地標、速度、偏差與校正參數。固定延遲平滑器會把舊變數邊緣化以限制運算量,代價是凍結部分線性化點。錯誤的迴圈閉合等離群值需要強健成本函數或可切換約束,因為單一個錯誤因子就可能把一般的最小平方解拉偏很遠。

為何重要

因子圖是現代 SLAM 與多感測器狀態估測的共同語言。它讓工程師不必重新設計估測器,就能加入感測器、先驗與約束,並明確呈現每個量測所帶有的雜訊假設與獨立性假設。

主要應用

  • 光達、視覺與視覺慣性系統的 SLAM 後端
  • IMU、GPS、輪式里程計與視覺的多感測器融合
  • 相機、光達與 IMU 外部參數的校正
  • 運動回復結構與光束法平差
  • 以機率推論形式表述的軌跡最佳化
  • 具有共享約束的多機器人建圖

實際應用

一輛地面車輛使用透地雷達(GPR),對照一張事先記錄的地下地圖進行定位。每個時間步驟加入一個姿態變數;慣性或輪式里程計在相鄰姿態之間加入一個因子;雷達與先驗地圖的匹配則在目前姿態上加入一個因子。量測因子不必為雷達手寫感測器模型,而可以從資料學習,就像關於用於 GPR 定位之學習式因子圖模型的研究那樣。團隊執行增量式平滑器,讓最新的姿態能即時取得,並在每次測試行駛後檢查因子殘差,找出雜訊模型設得過緊或過鬆的量測類型。

常見誤解

  • 因子圖是一種求解器 — 它是問題的表示方式;求解器(例如批次 Gauss-Newton 或增量式平滑)是另外的選擇
  • 因子圖只能描述姿態圖 — 它可以容納地標、速度、偏差、校正參數與任意量測模型
  • 加入更多因子一定會改善估測 — 除非使用強健成本,否則雜訊模型錯誤的因子或離群量測可能破壞整個解

誰需要了解

  • SLAM 與狀態估測工程師
  • 感測器融合與導航開發者
  • 研究機器人學中機率推論的研究人員
  • 自駕車定位團隊

相關技術

  • GTSAM
  • iSAM2
  • g2o
  • Ceres Solver
  • 光束法平差(Bundle Adjustment)
  • Levenberg-Marquardt 演算法

相關術語

  • Pose Graph Optimization
  • SLAM
  • IMU Preintegration
  • Loop Closure
  • Sensor Fusion
  • Tightly Coupled Sensor Fusion

相關專案

  • LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
  • oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
  • evo: De-facto standard tool for evaluating and plotting odometry/SLAM trajectories

影片

  • Factor Graph - 5 Minutes with Cyrill: Cyrill Stachniss
  • MIT Robotics - Frank Dellaert - Factor Graphs for Perception and Action: MIT Robotics

本網站需要 JavaScript 才能正常運作。請啟用 JavaScript 以瀏覽我們的開源機器人專案。