MichaelGrupp/evo
Python package for the evaluation of odometry and SLAM
evo – 里程計與 SLAM 評估工具 (Python)
功能簡介
- 一個 Python 套件,提供命令列工具與小型函式庫,用於載入、比較與視覺化里程計或 SLAM 系統產生的軌跡。
- 適用於 Linux、macOS、Windows,可以直接從 ROS 1/ROS 2 bag 檔案中讀取數據。
為什麼需要它
- 不同的 SLAM/里程計流水線會以多種格式輸出軌跡(TUM、KITTI、EuRoC、ROS topics、bag 檔案)。
evo可以規範這些格式,以便您可以進行並排評估。 - 實現了常見的誤差指標,如絕對位姿誤差 (APE) 與相對位姿誤差 (RPE),並提供對齊、尺度校正(對單目 SLAM 非常有用)與軌跡關聯的選項。
- 產生出版等級的圖表(2D、3D、地圖瓦片、相容 LaTeX)並可以將結果匯出為 CSV/Excel 表格。
- 選配整合:
- 用於更豐富 GUI 後端的 PyQt6。
- 用於新增地理地圖瓦片的 contextily。
- 用於將結果串流至 Rerun 可視化工具的 rerun-sdk。
核心組件
| 工具 | 用途 |
|---|---|
evo_ape |
計算參考軌跡與一個或多個估計值之間的絕對位姿誤差。 |
evo_rpe |
計算相對位姿誤差(固定距離/角度內的漂移)。 |
evo_traj |
繪製、分析或匯出軌跡;支援多種輸出格式與地圖疊加層。 |
evo_res |
聚合多個指標結果檔案,產生摘要統計與對比圖表。 |
evo_config |
全域設定(例如,繪圖後端)。 |
evo_ipython |
啟動預載入該函式庫的 IPython Shell,用於互動式探索。 |
安裝
# 建議:安裝到隔離環境 (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)會自動安裝,但核心功能在沒有它們的情況下也可以運作。
典型工作流程(範例)
- 繪製軌跡
產生兩個 SLAM 執行結果相對於真值 (ground truth) 的並排圖表。cd test/data evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz - 執行指標
計算 APE,顯示圖表,並儲存詳細輸出以便後續聚合。mkdir results evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz \ --save_results results/ORB.zip - 比較多個結果
產生摘要統計、小提琴圖/箱線圖以及 CSV 表格。evo_res results/*.zip -p --save_table results/table.csv
可擴展性
- 該套件分為
core函式庫(指標實作、軌跡處理)與tools(CLI 封裝)。您可以在自己的 Python 程式碼中匯入該函式庫,以建構自定義的評估流水線或與其他研究框架整合。
文件與幫助
- 每個命令透過
--help提供完整的 CLI 參考。 - GitHub 上的詳細 Wiki 涵蓋了支援的格式、繪圖選項與 Rerun 整合。
- Jupyter notebook
metrics_tutorial.ipynb展示了互動式用法。
授權
- GPL-3.0 或更高版本。如果您在學術工作中使用
evo,README 要求進行引用(提供 BibTeX)。
簡而言之,evo 是一個成熟且經過充分測試的工具箱,讓機器人研究人員無需編寫自定義解析器或繪圖程式碼,即可快速對里程計/SLAM 輸出進行基準測試。
相關
- 專案
- 專案
- 專案
- 專案
- 專案