Skip to content
edrumwri edited this page Oct 4, 2015 · 16 revisions

A Ravelin

[Installation instructions](Installation instructions)

Examples

Documentation

What is Ravelin?

Ravelin is a C++ library for rigid body and multi-rigid body kinematics and dynamics.

Kinematics and dynamics specifics

  • Reference points for rigid bodies need not be collocated with centers-of-mass
  • Composite Rigid Body Algorithm and Featherstone Articulated Body Algorithm implementations
  • Rigid body kinematics and dynamics computation, including poses, velocities, accelerations, inertias, momenta, and forces
  • Computes Jacobians and generalized forces, velocities, and inertias
  • Both explicit and implicit joint constraints supported: dynamics computable in minimal coordinates, absolute coordinates, or both (useful for mechanisms with kinematic loops)
  • Frame checking: operations on kinematic and dynamic quantities defined in different frames throw exceptions
  • Results from all dynamics algorithms have been verified against Featherstone's MATLAB-based code

Matrix/vector arithmetic and linear algebra specifics

Ravelin wraps BLAS and LAPACK in place of Eigen.

  • Matrix/vector arithmetic and linear algebra through very reliable BLAS and LAPACK libraries
  • Efficient block operations on matrices and vectors (similar to Eigen's segment() and block() functions)
  • Minimum templated C++ code for fast compilation
  • Iterators, which provides compatibility with STL and Boost algorithms
  • Straightforward semantics on memory allocation toward programming for real-time systems

Why should you use Ravelin?

You should use Ravelin if one or more of the following applies to you:

  • You want to reduce programming errors by catching frame (pose) mismatches
  • You want to use the most robust matrix/vector arithmetic and linear algebraic implementation available
  • You are computing robot kinematics or dynamics
  • You are programming for real-time systems (like control loops) and need to ensure that memory is not allocated during your real-time code