A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.
To do so, tools are provided to:
Several type of formulation are provided:
The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, ...
You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares.
It greatly simplifies the release of new versions along with the management of their dependencies.
You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves
.
If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt-get update
sudo apt install robotpkg-py3\*-ndcurves # for Python 3
sudo apt install robotpkg-py27-ndcurves # for Python 2
Finally you will need to configure your environment variables, e.g.:
export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH
To handle this with cmake, use the recursive option to clone the repository. For instance, using http:
git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR
Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:
cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test
Switch the BUILD_PYTHON argument to OFF if you don't want to use the python bindings of the package.
If everything went fine you should obtain the following output:
100% tests passed, 0 tests failed out of 3
To install the Python bindings first enable the BUILD_PYTHON_INTERFACE
option:
cmake -DBUILD_PYTHON_INTERFACE=ON ..
Then rebuild the library:
cd ${NDCURVES_DIR}/build
make && make test
To see example of use, you can refer to the test file which is rather self explanatory:
In spite of an exhaustive documentation, please refer to the C++ documentation, which mostly applies to python.
For the C++ / Python detailed documentation, you can consult this pdf available in the doc folder
For a python tutorial, you can refer to the jupyter notebook. The test file is more exhaustive and rather self explanatory.
If you wish to cite this work please use the bibtex below:
@software{ndcurves,
author = {Tonneau, Steve and Chemin, Jason and Fernbach, Pierre and Saurel, Guilhem},
title = {ndcurves},
url = {https://github.com/loco-3d/ndcurves},
year = {2013}
}