Trajectory alignment and evaluation toolkit
Project description
EPICA: Epic Trajectory Alignment and Evaluation Toolkit
EPICA is a trajectory alignment and evaluation toolkit.
It provides:
- 3-step alignment pipeline (time offset, extrinsic, world alignment)
- a set of CLI tools (
traj,ape,rpe,res,config) - OpenVINS compatibility entrypoints
- optional plotting and rerun-based visualization
Installation
Create and activate a virtual environment first (recommended):
conda create -n epa python=3.10 -y
conda activate epa
Then install:
pip install epica
Optional extras:
pip install "epica[rerun]" # rerun visualization
pip install "epica[ros]" # bag / bag2 / mcap support
pip install "epica[geo]" # map-related tools
Quick Start
Run one trajectory pair:
epa <gt_file> <est_file>
Example:
epa ./example_data/example_groundtruth.csv ./example_data/example_estimation.txt
Run a multi-case benchmark:
epa_bench /path/to/cases_root
epa detects trajectory formats automatically, writes plots by default, caps post-time-alignment solve/evaluation to 100 Hz, and exports compact metrics. Step-1 time alignment still uses the full input trajectory. epa_bench discovers cases, runs them in parallel by default, and removes temporary prepared files unless --keep-prepared is set.
Input Formats
For one-pair runs, epa <gt_file> <est_file> uses format auto-detection by default.
Supported trajectory inputs:
csv/euroc: header-based pose CSV with timestamp, position, and quaternion columnstum: text rows int tx ty tz qx qy qz qwkitti: text rows with a 3x4 pose matrixbag,bag2,mcap: ROS log inputs; pass--gt-topicand--est-topic
For benchmarks, the cases root should contain benchmark/ and GT/:
cases_root/
├── benchmark/<dataset>/pose/<method>/<sequence>/*_poses.txt
├── benchmark/<dataset>/<method>/<sequence>/trajectory.txt
├── benchmark/<dataset>/<method>/<sequence>_poses.txt
└── GT/**/<sequence>.txt
One <method> directory can contain many sequences, either as sequence files or sequence subdirectories.
GT files can use .txt, .tum, or .csv. The pose/ directory is optional.
Outputs
Single epa run:
- creates one
outputs/run_YYYYMMDD_HHMMSS/folder - typical files inside:
plots/metrics.jsonmetrics_summary.csvreport_en.mdreport_zh.md
Multi-case benchmark with epa_bench:
- creates
outputs/<cases_root_name>_bench/run_YYYYMMDD_HHMMSS/ - typical files and folders inside:
summary.csvsummary.mdpaper_tables/cases/logs/epa_runs/unresolved_cases.csvif some GT mappings cannot be resolved
metrics.json is compact by default. Use --save-full-metrics for full per-sample APE/RPE arrays. Use --no-downsample only when you need full-rate solve/evaluation. Benchmark prepared_tum/ files are removed by default; use --keep-prepared when you need them for later case reruns.
Analysis Notebook
For exploratory benchmark analysis, install the analysis extra and open the notebook:
pip install "epica[analysis]"
jupyter notebook notebooks/benchmark_analysis.ipynb
The notebook reads an existing summary.csv, summarizes datasets and methods, ranks suspicious cases, and shows the plots already generated by the benchmark workflow.
Common CLI Toolchain
epa/epica: run the main 3-step EPA pipeline for one GT/EST pairepa_bench: run the multi-case benchmark harness over a cases rootepa_ape: compute APE for one trajectory pairepa_rpe: compute RPE for one trajectory pairepa_traj: inspect, align, sync, and visualize trajectoriesepa_benchall: run the extended multi-case workflow, including summary plotsepa_all: run the extended single-case workflowepa_openvins: run EPA on one or multiple OpenVINS case folders
Documentation Link
For more commands and detailed usage, see the docs:
Maintenance and Contact
This project is still actively maintained.
If you run into any issues, please open an issue at:
Or contact:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file epica-0.1.7.tar.gz.
File metadata
- Download URL: epica-0.1.7.tar.gz
- Upload date:
- Size: 133.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9eab3d65ec4e7aea1da8580b22b2972770649f2f100e9a9452101d43fab22d7
|
|
| MD5 |
0676ba0b46844cdd4e9cf277118d06b3
|
|
| BLAKE2b-256 |
90243ab62cdd877b7f1466c820e4b224093e88e3db2f47465566adb4ffb25072
|
File details
Details for the file epica-0.1.7-py3-none-any.whl.
File metadata
- Download URL: epica-0.1.7-py3-none-any.whl
- Upload date:
- Size: 148.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ef4dbe3e77a18c47b5f829610401a1ba86e0a1841bfe9d4080ba80249e2d17a
|
|
| MD5 |
f89144b7acd2ba126c25c2033a0109a0
|
|
| BLAKE2b-256 |
dd1376c976fd67ec9b217a2845f3b8417246c047d1cd76eefea452a5832e8df5
|