Dynotree
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
- bucket-pr-kdtree
- OMPL
- Nigh
- ...
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)
| File | Reset | |||
|---|---|---|---|---|
| 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.