I have been working on a reduced coordinate rigid body dynamics library written in C++ that might be of use for some people around here. Unlike bullet, which includes integrators and collision checking, this library focuses on the dynamics of rigid multi-body systems. It is a fairly efficient[1] implementation of some well know dynamics algorithms, such as:
- Recursive Newton Euler Algorithm for inverse dynamics
- Composite Rigid Body Algorithm to compute the joint space inertia matrix
- Articulated Body Algorithm (sometimes called "Featherstone Algorithm") for forward dynamics
The code is tested using ~90 automated tests and uses Eigen3 (http://eigen.tuxfamily.org/index.php?title=Main_Page) as a underlying math library, but different libraries could be incorporated instead. Currently I use this software in my daily scientific research to generate human and robot motions using optimal control methods.
It is available under the zlib license and the code is hosted by bitbucket.
Here are the links:
- https://rbdl.github.io/ webpage and documentation
- https://github.com/rbdl/rbdl/ source code repository
Martin
[1] some raw numbers concerning efficiency (system specs: i7 920 processor and a 64 bit Ubuntu Linux):
For a model with 31 degrees of freedom:
inverse dynamics: 0.79 * 1.0e-5 (s)
forward dynamics: 1.85 * 1.0e-5 (s)
The numbers represent the average time spent for each function that were obtained with the benchmark program that comes with the code and a sample count of 100.000 calls to each method.