Dynotree - Dynamic Kd tree
Project description
dyn_kdtree
Dynamic Kd-Tree: Euclidean, SO(2), SO(3) and more! C++ with Python Bindings
Dynamic KD-Tree: Euclidean, SO(2), SO(3), and more! C++ with Python Bindings
The underlying KD-tree implementation is based on bucket-pr-kdtree, but dynotree supports non Euclidean spaces and custom componed spaces. State spaces can be defined at both compile (effiency) and runtime( flexibility).
Try it out!
PYTHON
pip3 install dynotree
A first example: rrt_free.py
A second example: rrt.py
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
DEV
Testing
Create wheels
for publishing in pypy
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/*
using 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 ...
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for dynotree-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ed1b05fcea15f8ed0ae1ce14e8f69654ca2a970d4f78206502d4826492129d9 |
|
MD5 | aa9f7092377ea82c61818fc6c55c4a74 |
|
BLAKE2b-256 | be085be24292bf31cea66bc10cc276ec5e74a3a80f2f41fe19dd7aa6b4c6f79c |
Hashes for dynotree-0.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84260cdcfa2b6c2e14e7e50b4f4b988484564a2b44b180c806f6c1138935e650 |
|
MD5 | a16be0059ae6e6863504ea4f9fd91dac |
|
BLAKE2b-256 | 5044a703632c30aeca1221b9ec639f2cd5ef1f9d78f8c4ede56642b9843e83f7 |
Hashes for dynotree-0.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2698c04b13951fda76d0f22c5caa80ea704b1a0350cb955af59e3531114c091 |
|
MD5 | d901df2c5fc6fce4f50da6d50561c4f1 |
|
BLAKE2b-256 | 9e7d0c2f8f51677784618b379aa5ab5506a19b6886f635a78b867c8f4baea733 |
Hashes for dynotree-0.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67e5e673d2ee7435786dcd48ff99211974711430fc685c105fb038896c32d07c |
|
MD5 | 84261046d8b279bd16d6b3b8aa95a2be |
|
BLAKE2b-256 | 34348c6a8c926feec99ec144d8744a80823a7a88785b5dc7d5c3e312ed91597b |