RBDyn provides a set of classes and functions to model the dynamics of rigid body systems.
This implementation is based on Roy Featherstone Rigid Body Dynamics Algorithms book and other state of the art publications.
# Make sure you have required tools
sudo apt install apt-transport-https lsb-release
# Add our key
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key 892EA6EE273707C6495A6FB6220D644C64666806
# Add our repository (stable versions)
sudo sh -c 'echo "deb https://dl.bintray.com/gergondet/multi-contact-release $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/multi-contact.list'
# Use this to setup the HEAD version
# sudo sh -c 'echo "deb https://dl.bintray.com/gergondet/multi-contact-release $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/multi-contact.list'
# Update packages list
sudo apt update
# Install eigen-qld packages
sudo apt install librbdyn-dev python-rbdyn python3-rbdyn
Install the latest version using conan
conan remote add multi-contact https://api.bintray.com/conan/gergondet/multi-contact
# Install the latest release
conan install RBDyn/latest@multi-contact/stable
# Or install the latest development version
# conan install RBDyn/latest@multi-contact/dev
Install from the command line using Homebrew:
# install homebrew package manager
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install caskroom application manager
brew install caskroom/cask/brew-cask
# tap homebrew-science package repository
brew tap homebrew/science
# tap ahundt-robotics repository
brew tap ahundt/robotics
# install tasks and all its dependencies
brew install rbdyn
To compile you need the following tools:
- Git
- CMake >= 2.8
- pkg-config
- doxygen
- g++ >= 4.7 (for C++11 support)
- Boost >= 1.49
- Eigen >= 3.2
- SpaceVecAlg
For Python bindings:
- Cython >= 0.20
- Eigen3ToPython (to use the python binding)
git clone --recursive https://github.com/jrl-umi3218/RBDyn
cd RBDyn
mkdir _build
cd _build
cmake [options] ..
make && make intall
By default, the build will use the python
and pip
command to install the bindings for the default system version (this behaviour can be used to build the bindings in a given virtualenv). The following options allow to control this behaviour:
PYTHON_BINDING
Build the python binding (ON/OFF, default: ON)PYTHON_BINDING_FORCE_PYTHON2
: usepython2
andpip2
instead ofpython
andpip
PYTHON_BINDING_FORCE_PYTHON3
: usepython3
andpip3
instead ofpython
andpip
PYTHON_BINDING_BUILD_PYTHON2_AND_PYTHON3
: builds two sets of bindings one withpython2
andpip2
, the other withpython3
andpip3
BUILD_TESTING
Enable unit tests building (ON/OFF, default: ON)
You can use the following AUR package.
Features:
- Kinematics tree Kinematics and Dynamics algorithm C++11 implementation
- Use Eigen3 and SpaceVecAlg library
- Free, Spherical, Planar, Cylindrical, Revolute, Prismatic joint support
- Translation, Rotation, Vector, CoM, Momentum Jacobian computation
- Inverse Dynamics, Forward Dynamics
- Inverse Dynamic Identification Model (IDIM)
- Kinematics tree body merging/filtering
- Kinematics tree base selection
- Python binding
To make sure that RBDyn works as intended, unit tests are available for each algorithm. Besides, the library has been used extensively to control humanoid robots such as HOAP-3, HRP-2, HRP-4 and Atlas.
A short tutorial is available here.
The SpaceVecAlg and RBDyn tutorial is also a big ressource to understand how to use RBDyn by providing a lot of IPython Notebook that will present real use case.
A doxygen documentation is available online.