This software provides robot dynamics algorithms. It uses a combination of a specific representation of robot models and C++ templates, such that each algorithm remains model-independant, yet is optimized for a particular robot at compile-time. It makes use of R. Featherstone's Spatial Algebra to describe forces, motions and inertias (cf. Rigid Body Dynamics Algorithms, Roy Featherstone).
include/metapod/spatial: header-only spatial algebra library.
include/metapod: header-only library of robot dynamics algorithms. Algorithms consist of the combination of compile-time traversal algorithms and visitors. They can be applied to a robot model which is a class with a specific structure.
robotbuilder: a library to help generating the source code of robot model classes.
embedfile: an utility executable used to embed templates in the robotbuilder library.
metapodfromurdf: an utility executable based on robotbuilder and liburdf which generates the the source code of robot model classes from an URDF description.
binarytreemodel: an utility executable based on robotbuilder which generates the source code of robot model classes with a binary kinematic tree. Those models are named sample_[1-4]and are used for benckmarks.
data: URDF definition of the simple_arm and simple_humanoid models which are used for examples, tests and benchmarks.
tests: some tests for metapod and metapod::Spatial
timer: a portable timer library used for the benchmarks.
benchmark: some benchmarks
doc: some doc.
The package depends on several packages which have to be available on your machine.
- System tools:
- CMake (>=2.6)
- usual compilation tools (GCC/G++, make, etc.)
- Eigen (>=3.0.0)
- Boost (>=1.40.0) Boost Test is used in the test suite
- optionally, liburdfdom or liburdf (as provided by ROS)
To compile this package, it is recommended to create a separate build directory:
mkdir _build cd _build cmake -DBUILD_METAPODFROMURDF=OFF .. make install
Please note that CMake produces a
CMakeCache.txt file which should
be deleted to reconfigure a package from scratch.
In order to build the urdf converter, you'll need to install liburdfdom or liburdf. There are several options:
Install urdfdom alone
git clone git://github.com/ros/console_bridge.git && cd console_bridge git checkout 0.1.5 mkdir build && cd build cmake .. make sudo make install git clone git://github.com/ros/urdfdom_headers && cd urdfdom_headers git checkout 0.2.2 mkdir build && cd build cmake .. make sudo make install git clone git://github.com/ros/urdfdom && cd urdfdom git checkout 0.2.7 mkdir build && cd build cmake .. make sudo make install
Or install ROS groovy using the ubuntu packages and just do
before running cmake.
Or install ROS fuerte using the ubuntu packages and just do
before running cmake.
Development branch documentation is available online.
- Benchmark times different with different combination of outer and inner loop.
Please do not use benchmark/benchmark to make performances comparisons. The programs benchmark/benchmark_metapod_simple_humanoid_CRBA and benchmark/benchmark_metapod_simple_humanoid_RNEA are more coherent.
- NP is mandatory
Benjamin Chretien pointed out that a dummy root link is necessary as a Galilean Frame for the urdf file parser of metapod.