Rigid Body Dynamics Library
This is the documentation of RBDL, the Rigid Body Dynamics Library. The library contains highly efficient code for both forward and inverse dynamics for kinematic chains and branched models. It includes:
Furthermore it contains code for forward and inverse kinematics, computations of Jacobians, contact handling. Models can be loaded from Lua scripts or URDF files.
The code is developed by Martin Felis email@example.com at the research group Optimization in Robotics and Biomechanics (ORB) of the Interdisciplinary Center for Scientific Computing (IWR) at Heidelberg University. The code is heavily inspired by the pseudo code of the book "Rigid Body Dynamics Algorithms" of Roy Featherstone.
The code has no external dependencies but for optimal performance it is advised to use version 3 of the Eigen math library. More information about it can be found here: http://eigen.tuxfamily.org/. The Eigen3 library must be obtained and installed separately.
You can download the most recent stable version as zip file from here:
All development takes place on Bitbucket and you can follow RBDL's development here:
See API Changes for a complete version history.
A simple example for creation of a model and computation of the forward dynamics using the C++ API can be found here.
An example of the Python wrapper can be found at Python Example.
The page API Changes contains information about incompatibilities of the existing versions and how to migrate.
The library is published under the very permissive zlib free software license which should allow you to use the software wherever you need. Here is the full license text:
RBDL - Rigid Body Dynamics Library Copyright (c) 2011-2014 Martin Felis <firstname.lastname@example.org> This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.
Work on this library was funded by the Heidelberg Graduate School of Mathematical and Computational Methods for the Sciences (HGS) and the European FP7 projects ECHORD (grant number 231143) and Koroibot (grant number 611909).