evo

MichaelGruppGPL-3.0活跃维护

用 Python 评估里程计和 SLAM 轨迹精度,支持 EuRoC、KITTI 等数据集,输出 ATE、RPE 等指标并可视化对比。

Python package for the evaluation of odometry and SLAM

暂无版本4,363star +2 / 7 天807fork同步于 2026-11-10 11:38 UTC

怎么上手

由 README 提炼,执行前请确认
pip install evo
硬件要求按 README 说明

README 未说明硬件要求,纯 Python 计算,无需 GPU 或显存。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

评估里程计与 SLAM 轨迹的 Python 工具,统一处理多种格式并计算 APE/RPE 指标

用 Python 评估里程计和 SLAM 轨迹精度,支持 EuRoC、KITTI 等数据集,输出 ATE、RPE 等指标并可视化对比。

核心能力

  • 支持 TUM、KITTI、EuRoC 及 ROS/ROS2 bag 轨迹格式
  • 用 evo_ape 和 evo_rpe 计算绝对与相对位姿误差
  • 提供关联、对齐与单目尺度调整等算法选项
  • 用 evo_traj 绘图、导出并可视化多条轨迹
  • 用 evo_res 汇总多个结果文件并生成表格与统计图

容易踩的坑

需 Python 3.11+,且不要用 pip install --user 或 --break-system-packages;读取 /tf 话题仍需本地 ROS 安装;地图瓦片需另装 contextily,rerun 可视化需另装 rerun-sdk。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

0 个版本

暂无 release 数据(可能没有发版,或尚未同步)。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    evo

    Python package for the evaluation of odometry and SLAM

    Linux / macOS / Windows / ROS / ROS2
    CI

    This package provides executables and a small library for handling, evaluating and comparing the trajectory output of odometry and SLAM algorithms.

    Supported trajectory formats:

    • 'TUM' trajectory files
    • 'KITTI' pose files
    • 'EuRoC MAV' (.csv groundtruth and TUM trajectory file)
    • ROS and ROS2 bagfile with geometry_msgs/PoseStamped, geometry_msgs/TransformStamped, geometry_msgs/PoseWithCovarianceStamped, geometry_msgs/PointStamped or nav_msgs/Odometry topics or TF messages

    See here for more infos about the formats.


    Why?

    evo has several advantages over other public benchmarking tools:

    • common tools for different formats
    • algorithmic options for association, alignment, scale adjustment for monocular SLAM etc.
    • flexible options for output, plotting, visualization or export (e.g. LaTeX plots or Excel tables)
    • a powerful, configurable CLI that can cover many use cases
    • modular core and tools libraries for custom extensions
    • faster than other established Python-based tools (see here)

    What it's not: a 1-to-1 re-implementation of a particular evaluation protocol tailored to a specific dataset.


    Installation / Upgrade

    Installation is easy-peasy if you're familiar with this: https://xkcd.com/1987/#

    The latest version of evo supports Python 3.11+.

    Please use pip only in a proper environment (e.g. uv/uvx, pipx, venv, Pixi or a classic virtual environment).

    ⚠️ ☠️☠️☠️ ⚠️

    Whatever you do, don't use: pip install --user / anything with --break-system-packages / or worst: sudo pip install

    From PyPi

    If you just want to use the executables of the latest release version, the easiest way is to run:

    pip install evo
    

    This will download the package and its dependencies from PyPI and install or upgrade them. If you want, you can subscribe to new releases via https://libraries.io/pypi/evo.

    To upgrade to a newer version: pip install --upgrade evo

    From Source

    Run this in the repository's base folder:

    pip install --editable .
    

    Pixi

    Pixi is an easy-to-use alternative if you want to have an isolated development environment. Run pixi add evo if you have an existing environment, or clone this repository and run pixi shell to open a dev shell.

    Tab completion

    Tab completion is supported via the argcomplete package. Run activate-global-python-argcomplete after the installation to use it.

    Dependencies

    Python packages

    evo has some required dependencies that are automatically resolved during installation with pip. See the pyproject.toml file for all details.

    PyQt6 (optional)

    PyQt6 will give you the enhanced GUI for plot figures from the "qtagg" matplotlib backend (otherwise: "TkAgg"). If PyQt6 is already installed when installing this package, it will be used as a default (see evo_config show). To change the plot backend afterwards, run evo_config set plot_backend qtagg.

    If you run into issues with installing tkinter, trying PyQt6 is a good idea.

    ROS (optional)

    Some ROS-related features require a ROS installation, see here. We are testing this package with ROS Lyrical.

    Reading ROS bag files works also without a ROS installation thanks to the great rosbags package that is installed together with evo. This allows you also to read ROS 1 & 2 bags even if you don't have one of those ROS distros installed. (except for reading /tf topics, because there we need the buffer implementation from ROS)

    contextily (optional)

    contextily is required for adding map tiles to plots of geo-referenced data.

    Rerun (optional)

    You can send data also to the rerun viewer. Just pip install rerun-sdk and add --rerun to your command. See the related Wiki page for more details.


    Command Line Interface

    After installation with pip, the following executables can be called globally from your command-line:

    Metrics:

    • evo_ape - absolute pose error
    • evo_rpe - relative pose error

    Tools:

    • evo_traj - tool for analyzing, plotting or exporting one or more trajectories
    • evo_res - tool for comparing one or multiple result files from evo_ape or evo_rpe
    • evo_config - tool for global settings and config file manipulation

    Call the commands with --help to see the options, e.g. evo_ape --help. Tab-completion of command line parameters is available on UNIX-like systems.

    More documentation Check out the Wiki on GitHub.


    Example Workflow

    There are some example trajectories in the source folder in test/data.

    1.) Plot multiple trajectories

    Here, we plot two KITTI pose files and the ground truth using evo_traj:

    cd test/data
    evo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plot_mode=xz
    

    2.) Run a metric on trajectories

    For example, here we calculate the absolute pose error for two trajectories from ORB-SLAM and S-PTAM using evo_ape (KITTI_00_gt.txt is the reference (ground truth)) and plot and save the individual results to .zip files for evo_res:

    First trajectory (ORB Stereo):

    mkdir results
    evo_ape kitti KITTI_00_gt.txt KITTI_00_ORB.txt -va --plot --plot_mode xz --save_results results/ORB.zip
    

    Second trajectory (S-PTAM):

    evo_ape kitti KITTI_00_gt.txt KITTI_00_SPTAM.txt -va --plot --plot_mode xz --save_results results/SPTAM.zip
    

    3.) Process multiple results from a metric

    evo_res can be used to compare multiple result files from the metrics, i.e.:

    • print infos and statistics (default)
    • plot the results
    • save the statistics in a table

    Here, we use the results from above to generate a plot and a table:

    evo_res results/*.zip -p --save_table results/table.csv
    

    IPython / Jupyter Resources

    For an interactive source code documentation, open the Jupyter notebook metrics_tutorial.ipynb in the notebooks folder of the repository. More infos on Jupyter notebooks: see here

    If you have IPython installed, you can launch an IPython shell with a custom evo profile with the command evo_ipython.


    Contributing Utilities

    A few "inoffical" scripts for special use-cases are collected in the contrib/ directory of the repository. They are inofficial in the sense that they don't ship with the package distribution and thus aren't regularly tested in continuous integration.


    Trouble

    "😱, this piece of 💩 software doesn't do what I want!!1!1!!"

    First aid:


    Contributing

    Patches are welcome, preferably as pull requests.

    License

    GPL-3.0 or later

    If you use this package for your research, a footnote with the link to this repository is appreciated: github.com/MichaelGrupp/evo.

    ...or, for citation with BibTeX:

    @misc{grupp2017evo,
      title={evo: Python package for the evaluation of odometry and SLAM.},
      author={Grupp, Michael},
      howpublished={\url{https://github.com/MichaelGrupp/evo}},
      year={2017}
    }