skillfed

evo

Python package for the evaluation of odometry and SLAM

evo v1.37.0 251.5K downloads/30d#8,580 on PyPI4,297
Copyleft license GNU General Public License v3 (GPLv3) Active released

What it is and what it does

evo is a Python package for evaluating and benchmarking odometry and SLAM algorithm outputs. It reads trajectory data from multiple formats—TUM, KITTI, EuRoC, and ROS/ROS2 bag files—and provides a suite of CLI tools and a modular library for computing metrics (absolute and relative pose error), aligning trajectories, adjusting scale, and generating plots and statistical exports. The package is designed for researchers and roboticists who need to compare algorithm performance across standardized datasets or custom experiments.

The tool combines a command-line interface (evo_ape, evo_rpe, evo_traj, evo_res, evo_config) with a Python library for custom analysis. It depends on standard scientific Python stack components—numpy, scipy, pandas, matplotlib, seaborn—plus rosbags for ROS bag support and pillow for image handling. Installation is straightforward via pip into a virtual environment; optional PyQt6 improves the plotting GUI, and optional packages like contextily and rerun-sdk extend visualization capabilities.

Use it for:

  • Compute absolute and relative pose error metrics to benchmark SLAM or visual odometry algorithms against ground truth.
  • Plot and compare multiple estimated trajectories side-by-side to visualize algorithm differences.
  • Export trajectory statistics and error metrics to CSV or LaTeX tables for research papers.
  • Process ROS bag files containing pose or odometry messages without requiring a full ROS installation.
  • Align and scale-adjust monocular SLAM output to ground truth before metric calculation.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

evo evaluates and compares trajectory output from odometry and SLAM algorithms, supporting multiple formats (TUM, KITTI, EuRoC, ROS bags) and providing CLI tools for metrics, plotting, and export.

Yes. evo is actively maintained, has no known vulnerabilities, low install friction, and broad Python version support (3.10–3.14). The GPLv3 copyleft license is a constraint only if you plan to distribute proprietary derivatives. Install it if you need to evaluate odometry or SLAM trajectories; the CLI is straightforward and the library is modular for custom analysis.

Install

evo on PyPI

pip

pip install evo

uv

uv add evo

poetry

poetry add evo

Installing evo

Before you install

Low install friction with a pure-wheel distribution. Active maintenance (last commit 2026-08-14, release 27 days ago) and broad Python support (3.10–3.14). Requires Python 3.10+; 14 runtime dependencies including numpy, pandas, scipy, and matplotlib are automatically resolved.

License in practice

Licensed under GNU General Public License v3 (GPLv3), a copyleft license. Any derivative work or distribution must also be licensed under GPLv3 or later; proprietary use is not permitted.

Quickstart

pip install evo

# Plot trajectories
evo_traj kitti trajectory1.txt trajectory2.txt --ref=ground_truth.txt -p

# Calculate absolute pose error
evo_ape kitti ground_truth.txt estimated_trajectory.txt -va --plot

Requires Python 3.10 or later. Optional PyQt6 for enhanced GUI; otherwise uses TkAgg backend. ROS bag file reading works without ROS installation via rosbags, but reading /tf topics requires ROS.

Verify before relying

  • Whether the package's performance advantage over other Python-based tools remains current as of version 1.37.0.
  • Specific memory or computational limits when processing very large trajectory datasets.
  • Whether all optional dependencies (contextily, rerun-sdk) are automatically installed or require manual installation.

Package facts

License GNU General Public License v3 (GPLv3) (copyleft)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 14 — argcomplete, colorama, matplotlib, natsort, numexpr, numpy, packaging, pandas, pillow, pygments, pyyaml, rosbags, scipy, seaborn
Maintenance actively maintained — 27 days since the last release
Last repo commit
First released
Downloads 251,508/month — #8,580 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: evo-1.37.0-py3-none-any.whl

Keywords: SLAM, evaluation, laser, metric, odometry, robotics, trajectory, vision, visual

License :: OSI Approved :: GNU General Public License v3 (GPLv3)Programming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: Implementation :: CPythonTopic :: Scientific/Engineering

Tags

SLAM trajectory evaluationodometry benchmarkingpose error metricstrajectory comparison toolKITTI dataset analysisROS bag file processingvisual odometry evaluation
roboticsslam-evaluationtrajectory-analysis

More Scientific/Engineering packages

Further reading