A general-purpose framework for planning on Riemannian manifolds
Project description
geodex
geodex is a general-purpose software framework for planning on Riemannian manifolds.
Unlike traditional algorithms that operate in Euclidean space, geodex works directly with the intrinsic geometry of the state space. Manifolds are defined via C++20 concepts (RiemannianManifold, HasMetric, HasGeodesic, etc.) so algorithms work generically over any conforming type with zero overhead. Metrics and retractions are injected as template policies, making it easy to swap between e.g. true exponential maps and cheaper approximations.
Key Features
- Generic Manifolds — Out-of-the-box support for Sⁿ, Rⁿ, Tⁿ, the Lie groups SO(2)/SO(3)/SE(2)/SE(3) with group-exponential geodesics, and product manifolds (e.g. Rⁿ × SE(2)), plus custom manifolds via template policies
- Performance First — C++20 core with zero-overhead generic algorithms, many built-in retractions, and anisotropic metrics
- Precompiled Robots — Built-in CRBA mass-matrix metrics for five manipulators (Panda, UR5, Fetch, Baxter, PR2), plus certified admissible heuristics for informed sampling
- Python Bindings — First-class Python support (
pip install pygeodex)
Roadmap
- OMPL and VAMP integrations (Planning on Riemannian manifolds with state-of-the-art sampling-based planners)
- Nav2 and MoveIt 2 plugins (Geometry-aware planning for ROS 2 mobile robots and manipulators)
Getting Started
All installation instructions, C++/Python tutorials, and API references are available at our documentation site:
Citation
geodex accompanies the WAFR'26 paper "Geometry-Aware Sampling-Based Motion Planning on Riemannian Manifolds":
@inproceedings{kyaw2026geometry,
address = {Oulu, Finland},
author = {Phone Thiha Kyaw and Jonathan Kelly},
booktitle = {Proceedings of the 17th World Symposium on the Algorithmic Foundations of Robotics {(WAFR)}},
date = {2026-06-15/2026-06-17},
month = {Jun. 15--17},
title = {Geometry-Aware Sampling-Based Motion Planning on {Riemannian} Manifolds},
url = {https://arxiv.org/abs/2602.00992},
year = {2026}
}
If you use matrix lower-bound heuristic in your research, please cite:
@article{kyaw2026direct,
title={Direct Informed Sampling on Riemannian Manifolds via Loewner Order Lower Bounds},
author = {Phone Thiha Kyaw and Jonathan Kelly},
journal={arXiv preprint arXiv:2606.02879},
url = {https://arxiv.org/abs/2606.02879},
year={2026}
}
If you use Greedy RRT* (G-RRT*) in your research, please cite:
@article{kyaw2025greedy,
title={Greedy heuristics for sampling-based motion planning in high-dimensional state spaces},
author={Kyaw, Phone Thiha and Le, Anh Vu and Elara, Mohan Rajesh and Kelly, Jonathan},
journal={arXiv preprint arXiv:2405.03411},
url = {https://arxiv.org/abs/2405.03411},
year={2025}
}
License
Copyright © 2026 Space and Terrestrial Autonomous Robotic Systems (STARS) Lab.
geodex is licensed under the Apache License 2.0.
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 Distributions
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 pygeodex-0.2.1.tar.gz.
File metadata
- Download URL: pygeodex-0.2.1.tar.gz
- Upload date:
- Size: 32.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
572d60565ef7e3fd58b736ed3b544d3d0447d8f06515316f0db3d83a062f4b60
|
|
| MD5 |
b425fe4d9b607212bb12909eebfd54db
|
|
| BLAKE2b-256 |
9ef03ed5eec2d1259b0affdb915dda531d8a6041b42518458417b9606d785b2e
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-win_amd64.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-win_amd64.whl
- Upload date:
- Size: 276.2 kB
- Tags: CPython 3.12+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
48ba28a3ccb8436c7de58b4046d29ff31de206f46e21dfacbc002b5f9e4d8dda
|
|
| MD5 |
02fe1bc99cd2491a1c86c3ac9c4fc70d
|
|
| BLAKE2b-256 |
d0af8dab17a3eb8681b67461059b3f8638af7b0ae79c3cd1f5e5914c29f99de3
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 751.2 kB
- Tags: CPython 3.12+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d01306ec512198a6b248258986b33819a57153594054307c6d2aa540b2344bbe
|
|
| MD5 |
0475883c890bf88510aae14c2868bdcd
|
|
| BLAKE2b-256 |
42aed8d9f5704a51cae462c937c5f9696de120c753d66cdbb98aa672b0e788db
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 728.1 kB
- Tags: CPython 3.12+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61aadb133bb409c0ee94af87b6ea866b32414b03f87901a75498b0accd7db2c7
|
|
| MD5 |
23cbf7a6a7ce7af8fc046175d6d7c263
|
|
| BLAKE2b-256 |
dbffbc80e03adeb1ad89ee8f2e61cf1efae42cf693c7be65e884fb101be6fd94
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 301.5 kB
- Tags: CPython 3.12+, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7b56fb2c59f2d2f59b5f25e7ce6120aebd734a57fdda15ac1d7a8606a2c8fd2
|
|
| MD5 |
b4796f2d556b6c62149a6117179ebefc
|
|
| BLAKE2b-256 |
8a09bbda2eee8c7250b6b31200204809d0c1ba41f9c1db6ccae0a50be5685bff
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
- Upload date:
- Size: 291.9 kB
- Tags: CPython 3.12+, manylinux: glibc 2.27+ ARM64, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d4d14adc9d4cbde721a7c365a2f7220447b55007f22e6db19a9106556262b4b
|
|
| MD5 |
f7bad517d4b5ea7d6f1b312096afaf92
|
|
| BLAKE2b-256 |
944aff0e68480b31087472dbf967fb4b3a0d61c0bc64837b0586bac5e07d607b
|
File details
Details for the file pygeodex-0.2.1-cp312-abi3-macosx_10_13_universal2.whl.
File metadata
- Download URL: pygeodex-0.2.1-cp312-abi3-macosx_10_13_universal2.whl
- Upload date:
- Size: 525.4 kB
- Tags: CPython 3.12+, macOS 10.13+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baaedf092054bb926fe6bae206409dfd9e56bbf552ea086b70e9a6b546bc8e37
|
|
| MD5 |
d20795e56358136b86224375fd8a9982
|
|
| BLAKE2b-256 |
ac0911cf927e6331cea0419650f2ca163d4b2d7b06f8bd5dba427d71d345a696
|