BenjaminNavarro / RBDyn

RBDyn provides a set of classes and functions to model the dynamics of rigid body systems.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RBDyn

License Download CI Documentation

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.

Installing

Ubuntu LTS (16.04, 18.04, 20.04)

# 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

Conan

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

Homebrew OS X install

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

Manually build from source

Dependencies

To compile you need the following tools:

For Python bindings:

Building

git clone --recursive https://github.com/jrl-umi3218/RBDyn
cd RBDyn
mkdir _build
cd _build
cmake [options] ..
make && make intall

CMake options

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: use python2 and pip2 instead of python and pip
  • PYTHON_BINDING_FORCE_PYTHON3: use python3 and pip3 instead of python and pip
  • PYTHON_BINDING_BUILD_PYTHON2_AND_PYTHON3: builds two sets of bindings one with python2 and pip2, the other with python3 and pip3
  • BUILD_TESTING Enable unit tests building (ON/OFF, default: ON)

Arch Linux

You can use the following AUR package.

Documentation

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.

About

RBDyn provides a set of classes and functions to model the dynamics of rigid body systems.

License:BSD 2-Clause "Simplified" License


Languages

Language:C++ 70.3%Language:CMake 16.7%Language:Python 12.6%Language:C 0.3%Language:Shell 0.1%Language:Ruby 0.0%