Skip to main content

Dynotree

pre-commit C/C++ CI PyPI version

Dynamic Kd-Tree in C++ and Python: Euclidean, SO(2), SO(3) and more!

The underlying KD-tree implementation is based on bucket-pr-kdtree, but dynotree supports non-Euclidean spaces and custom compound spaces. State spaces can be defined at both compile and runtime for both efficiency and flexibility.

The C++ library is header-only, with Eigen as single dependency, and we provide Python bindings for fast development and prototyping.

Try it out!

PYTHON

PIP Package

pip3 install dynotree

A first example: rrt_free.py

A second example: rrt.py

Python from source

C++

Test and examples are in main.cpp

git clone --recurse-submodules https://github.com/quimortiz/dyn_kdtree
cd dyn_kdtree
mkdir build
cd build
cmake ..
make
./main

use

./main --run_test=NAME_OF_TEST

to run only one example or test

Development

Create Python Package (locally)

Create wheels

CMAKE_ARGS="-DBUILD_PYTHON_BINDINGS=1" python3 -m build

Wheels will be in dist/ directory. Install the wheels with (adjust package and python version accordingly)

pip3 install dist/dynotree-0.0.4-cp38-cp38-linux_x86_64.whl 

Create Python Package and Upload to PYPI (locally)

Create wheels

for publishing in pypi

docker pull quay.io/pypa/manylinux2014_x86_64
docker run -it -v $(pwd):/io quay.io/pypa/manylinux2014_x86_64 /io/build-wheels.sh
python3 -m twine upload wheelhouse/*

upload to testpypi

python3 -m twine upload --repository testpypi wheelhouse/*

for creating local package:

TODO

Why dyn_kdtree?

  • Faster than OMPL and simpler than NIGH
  • Dynamic: Add points one by one -- Ideal for Motion Planning
  • Support Euclidean, SO(2), SO(3) and any combination
  • Performant and flexible C++ code based on Eigen.
  • Single Header File
  • Python Bindings for easy integration
  • Extendable with custom spaces!

Python Bindings

Option 1

Option 2

Option 3

Dependencies

Python: No dependencies

C++ Code: Eigen

Develop: Eigen and Boost Testing

Interface

See this for examples.

Benchmark

Check this repo for benchmark against

Roadmap

Code is Stable, currently used in ...

Metadata

Release files for dynotree 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for dynotree 0.0.5
File
dynotree-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
dynotree-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
dynotree-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
dynotree-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details

Total release size: 973.9 kB

Release files / dynotree-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dynotree-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 244.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b27b34435861c4f3e50c6403d81e44c3cdde1a877e0362222a05b283d8aa2854
BLAKE2b-256 checksum
How to use checksums
00e7c84ba6e6c9e636ed2e841a2f3c46f6c4b90492d068bb25a4bf5415cb52d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / dynotree-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dynotree-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 242.8 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5856abc036ecec35f55c24114a8e3b95d4f412eea0826304c7f04944c3d0e0d9
BLAKE2b-256 checksum
How to use checksums
4eb8e8b1aa28d6968bb611117f05b4bdbf1276c3ebeee9356dad3eb06d67290b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / dynotree-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dynotree-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 243.5 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ee921dacfbde2bd82722a8d39553ef91799c15461eb01044b8040224b53adab2
BLAKE2b-256 checksum
How to use checksums
936592023de73152d2eb9779228903892cff514d60e1911bd009e844625e4b5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / dynotree-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dynotree-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 243.3 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2ad0de63a922a712b30a4fcf358a2127c1faa9f1a32277bff2920fe6cca85434
BLAKE2b-256 checksum
How to use checksums
fecf84dfc0c97b1a4f5650b7c7a9eceb44fa4fd48f8e7894f08cf0dc3c14bc3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Security for dynotree 0.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page