Trajectopy - Trajectory Evaluation in Python
Trajectopy is a Python package with an optional graphical user interface for empirical trajectory evaluation.
Installation
Windows app: download Trajectopy-<version>-setup.exe from the latest release and run it. No Python installation or administrator rights are needed; .traj files can then be opened by double-click, and the app reports new versions (Help → Check for Updates).
Python package (Python 3.10 or newer):
| Command | Contents |
|---|---|
pip install "trajectopy[gui]" |
Python package and GUI (recommended) |
pip install "trajectopy[plot]" |
Python package with plotting, without the GUI |
pip install trajectopy |
Python package only |
Loading large trajectory files (millions of poses) is several times faster with the fast extra, which can be combined with the others: pip install "trajectopy[gui,fast]".
Quick Start
import trajectopy as tpy
reference = tpy.Trajectory.from_file("./example_data/KITTI_gt.traj")
estimate = tpy.Trajectory.from_file("./example_data/KITTI_ORB.traj")
ate_result = tpy.ate(trajectory=estimate, other=reference) # aligns the estimate first
print(f"Position ATE: {ate_result.pos_ate:.3f} m")
Or start the GUI with trajectopy (or from the Start menu), drop trajectory files onto it, right-click the ground truth → Set as Reference, then right-click another trajectory → Compare with Reference.
Documentation
https://gereon-t.github.io/trajectopy/
Key Features
- Interactive GUI: Load, plot, align and compare trajectories without writing code. Every action explains itself in the context menus, and trajectories can be aligned interactively if an automatic alignment is not possible.
- Alignment: A spatio-temporal least squares alignment that can be tailored to the application: similarity transformation, leverarm and time shift, each of them optional.
- Comparison: Absolute and relative trajectory error (ATE and RPE), computed with various pose-matching methods.
- Data Import/Export: ASCII files with configurable columns, time formats and coordinate systems (any EPSG code), and ROS bags.
- Fast, Interactive Visualization: Powered by pyqtgraph, the same plots are available in the GUI and in Python scripts, stay fluid for large trajectories, and can be exported to PNG, JPG or SVG. Georeferenced trajectories and ATE results can be exported to Google Earth, colored by speed, height or deviations, on the terrain or at their own heights, with playback.
Web Application (Docker)
A simple web application is available at gereon-t/trajectopy-web that allows you to use the core functionality of Trajectopy using Docker.
Citation
If you use this library for any academic work, please cite our original paper.
@article{Tombrink2024,
url = {https://doi.org/10.1515/jag-2024-0040},
title = {Spatio-temporal trajectory alignment for trajectory evaluation},
author = {Gereon Tombrink and Ansgar Dreier and Lasse Klingbeil and Heiner Kuhlmann},
journal = {Journal of Applied Geodesy},
doi = {doi:10.1515/jag-2024-0040},
year = {2024},
codeurl = {https://github.com/gereon-t/trajectopy},
}
Metadata
Release files for trajectopy 5.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| trajectopy-5.1.1.tar.gz | 3.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| trajectopy-5.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.6 MB
Release files / trajectopy-5.1.1.tar.gz
| Download URL | trajectopy-5.1.1.tar.gz |
|---|---|
| Size | 3.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c95aa665fdf6ef233d9762585168c3767b7be97c8792476a56bec9a2a08bf38b
|
|
BLAKE2b-256 checksum How to use checksums |
bc1ca4b6966889f420c84b9ad4ac4017fc64fe59c26819bdf549bf2271ec0176
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / trajectopy-5.1.1-py3-none-any.whl
| Download URL | trajectopy-5.1.1-py3-none-any.whl |
|---|---|
| Size | 444.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9aedb0efa66d4d8ec7cd35dfe79124180db6415514bfe6d29ab96dfff73f91c1
|
|
BLAKE2b-256 checksum How to use checksums |
6126bb73007385bce3f1d8c8a5811668aea1caf2aebda4afe0ed546150283a6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|