locusrobotics/fuse

The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications include state estimation, localization, mapping, and calibration.

解決的問題

提供一個通用的架構,用於在機器人上執行即時感測器融合,簡化狀態估計、定位、地圖建構與校準等任務。開發者可專注於建模機器人與感測器,而非耗費心力於將不同感測器模型串接成可執行程式碼所需的複雜整合工作。

工作原理

fuse 是一個使用非線性最小二乘最佳化(透過 Google 的 Ceres Solver)來決定機器人最可能狀態的 ROS 框架。它透過插件式系統運作:

  1. 感測器模型:接收原始資料並為最佳化器產生約束(數學誤差項)。
  2. 運動模型:在不同時間戳之間產生約束以連結狀態,特別適用於感測器異步運作的情況。
  3. 最佳化器:將約束與變數收集至圖中,並計算每個狀態變數的最優值。
  4. 發布者:取得最佳化後的狀態值,並將衍生量發布回 ROS 主題。

適用對象

需要一個彈性、可擴展的系統,以即時融合多個感測器(例如輪子編碼器、雷射)資料,來估計機器人位姿或校準系統參數的機器人開發者。

主要亮點

  • 插件式架構:感測器模型、運動模型與發布者皆為插件,方便替換或共用。
  • 異步支援:透過運動模型在約束圖中彌補不同頻率與時鐘的感測器之間的間隙,支援異步感測器。
  • 可擴展的狀態變數:支援自訂變數定義,超出標準的 2D/3D 位置、姿態與速度之外。
  • 線上校準:能與機器人位姿同時估計變化的系統參數(例如輪徑磨損)。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案