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 演算法
相關術語
相關專案
- 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