MichaelGrupp/evo

Python package for the evaluation of odometry and SLAM

evo – オドメトリ & SLAM 用評価ツール (Python)

概要

  • オドメトリまたはSLAMシステムによって生成された軌跡を読み込み、比較し、可視化するためのコマンドラインツールと小規模なライブラリを提供するPythonパッケージです。
  • Linux, macOS, Windowsで動作し、ROS 1/ROS 2のbagファイルから直接データを読み取ることができます。

導入のメリット

  • SLAM/オドメトリのパイプラインによって、出力される軌跡のフォーマットが多岐にわたります(TUM, KITTI, EuRoC, ROS topics, bag files)。evoはこれらのフォーマットを正規化し、並べて評価できるようにします。
  • 絶対ポーズ誤差(APE)や相対ポーズ誤差(RPE)などの一般的な誤差指標を実装しており、アライメント、スケール補正(単眼SLAMに有用)、軌跡の関連付けのオプションを備えています。
  • 出版レベルのプロット(2D, 3D, マップタイル付き, LaTeX対応)を生成し、結果をCSV/Excel形式の表としてエクスポートできます。
  • オプションの統合:
    • より豊かなGUIバックエンドのための PyQt6
    • 地理的なマップタイルを追加するための contextily
    • Rerunビジュアライザへのストリーミングのための rerun-sdk

主要コンポーネント

ツール 目的
evo_ape 参照軌跡と1つ以上の推定値の間の絶対ポーズ誤差を計算します。
evo_rpe 相対ポーズ誤差(一定の距離/角度におけるドリフト)を計算します。
evo_traj 軌跡のプロット、分析、またはエクスポートを行います。多くの出力形式とマップオーバーレイをサポートしています。
evo_res 複数の指標結果ファイルを集計し、要約統計量と比較プロットを生成します。
evo_config グローバル設定(例:プロットバックエンド)。
evo_ipython インタラクティブな探索のために、ライブラリがロードされた状態で起動するIPythonシェル。

インストール

# 推奨: 隔離された環境(venv, uv, pipxなど)にインストールしてください
pip install evo          # PyPIから – 最新の安定リリースを取得します
# または、開発用として:
git clone https://github.com/MichaelGrupp/evo.git
cd evo
pip install --editable.
  • Python 3.10+ が必要です。
  • オプションの依存関係(PyQt6, contextily, rerun-sdk, ROS)は、要求された場合に自動的にインストールされますが、コア機能はそれらなしでも動作します。

典型的なワークフロー(例)

  1. 軌跡のプロット
    cd test/data
    evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
    
    グランドトゥルースに対する2つのSLAM実行の並列プロットを生成します。
  2. 指標の実行
    mkdir results
    evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz \
            --save_results results/ORB.zip
    
    APEを計算し、プロットを表示し、後で集計するために詳細な出力を保存します。
  3. 複数の結果の比較
    evo_res results/*.zip -p --save_table results/table.csv
    
    要約統計量、バイオリン/ボックスプロット、およびCSVテーブルを生成します。

拡張性

  • このパッケージは、coreライブラリ(指標の実装、軌跡の処理)とtools(CLIラッパー)に分かれています。独自のPythonコードでライブラリをインポートして、カスタムの評価パイプラインを構築したり、他の研究フレームワークと統合したりすることができます。

ドキュメント & ヘルプ

  • 各コマンドの --help による完全なCLIリファレンス。
  • サポートされているフォーマット、プロットオプション、Rerun統合をカバーするGitHub上の詳細なWiki。
  • Jupyter notebook metrics_tutorial.ipynb がインタラクティブな使用方法を示しています。

ライセンス

  • GPL-3.0以降。学術研究でevoを使用する場合は、READMEに引用(BibTeXあり)が求められています。

要約すると、evoは成熟したテスト済みのツールボックスであり、ロボット研究者がカスタムパーサーやプロットコードを書くことなく、オドメトリ/SLAMの出力を迅速にベンチマークできるようにします。

関連

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