Skip to main content

A general-purpose framework for planning on Riemannian manifolds

Project description

geodex

CI docs codecov PyPI Python

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:

👉 Read the Documentation

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygeodex-0.2.1.tar.gz (32.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pygeodex-0.2.1-cp312-abi3-win_amd64.whl (276.2 kB view details)

Uploaded CPython 3.12+Windows x86-64

pygeodex-0.2.1-cp312-abi3-musllinux_1_2_x86_64.whl (751.2 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

pygeodex-0.2.1-cp312-abi3-musllinux_1_2_aarch64.whl (728.1 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ ARM64

pygeodex-0.2.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (301.5 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pygeodex-0.2.1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (291.9 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

pygeodex-0.2.1-cp312-abi3-macosx_10_13_universal2.whl (525.4 kB view details)

Uploaded CPython 3.12+macOS 10.13+ universal2 (ARM64, x86-64)

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

Hashes for pygeodex-0.2.1.tar.gz
Algorithm Hash digest
SHA256 572d60565ef7e3fd58b736ed3b544d3d0447d8f06515316f0db3d83a062f4b60
MD5 b425fe4d9b607212bb12909eebfd54db
BLAKE2b-256 9ef03ed5eec2d1259b0affdb915dda531d8a6041b42518458417b9606d785b2e

See more details on using hashes here.

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

Hashes for pygeodex-0.2.1-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 48ba28a3ccb8436c7de58b4046d29ff31de206f46e21dfacbc002b5f9e4d8dda
MD5 02fe1bc99cd2491a1c86c3ac9c4fc70d
BLAKE2b-256 d0af8dab17a3eb8681b67461059b3f8638af7b0ae79c3cd1f5e5914c29f99de3

See more details on using hashes here.

File details

Details for the file pygeodex-0.2.1-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pygeodex-0.2.1-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d01306ec512198a6b248258986b33819a57153594054307c6d2aa540b2344bbe
MD5 0475883c890bf88510aae14c2868bdcd
BLAKE2b-256 42aed8d9f5704a51cae462c937c5f9696de120c753d66cdbb98aa672b0e788db

See more details on using hashes here.

File details

Details for the file pygeodex-0.2.1-cp312-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pygeodex-0.2.1-cp312-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 61aadb133bb409c0ee94af87b6ea866b32414b03f87901a75498b0accd7db2c7
MD5 23cbf7a6a7ce7af8fc046175d6d7c263
BLAKE2b-256 dbffbc80e03adeb1ad89ee8f2e61cf1efae42cf693c7be65e884fb101be6fd94

See more details on using hashes here.

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

File hashes

Hashes for pygeodex-0.2.1-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7b56fb2c59f2d2f59b5f25e7ce6120aebd734a57fdda15ac1d7a8606a2c8fd2
MD5 b4796f2d556b6c62149a6117179ebefc
BLAKE2b-256 8a09bbda2eee8c7250b6b31200204809d0c1ba41f9c1db6ccae0a50be5685bff

See more details on using hashes here.

File details

Details for the file pygeodex-0.2.1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pygeodex-0.2.1-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5d4d14adc9d4cbde721a7c365a2f7220447b55007f22e6db19a9106556262b4b
MD5 f7bad517d4b5ea7d6f1b312096afaf92
BLAKE2b-256 944aff0e68480b31087472dbf967fb4b3a0d61c0bc64837b0586bac5e07d607b

See more details on using hashes here.

File details

Details for the file pygeodex-0.2.1-cp312-abi3-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for pygeodex-0.2.1-cp312-abi3-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 baaedf092054bb926fe6bae206409dfd9e56bbf552ea086b70e9a6b546bc8e37
MD5 d20795e56358136b86224375fd8a9982
BLAKE2b-256 ac0911cf927e6331cea0419650f2ca163d4b2d7b06f8bd5dba427d71d345a696

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page