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位置、姿勢、速度以外のカスタム変数定義をサポートします。
  • オンラインキャリブレーション:ロボットのポーズとともに、変化するシステムパラメータ(例:ホイール直径の摩耗)を推定可能です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト