-
Notifications
You must be signed in to change notification settings - Fork 6
Home
edrumwri edited this page Apr 9, 2014
·
16 revisions
I developed Ravelin to provide the usability of Eigen's C++ matrix, vector, and linear algebra library without the drawbacks, which include slow compile times, incompatibility with STL/Boost algorithms, and difficulty of writing code that does not allocate memory in real-time. Though the problems above can be mitigated, there is one aspect of Eigen I cannot tolerate: the code is too new. Libraries for linear algebra require years to sort out the bugs (LAPACK was developed in the 70's and has remained fairly stable since then, and bugs still emerge).
Ravelin is a C++-based library geared toward robotics development with the following features:
- 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
- Rigid body kinematics and dynamics computation, including poses, velocities, accelerations, inertias (both rigid body and articulated body), momenta, and forces
- Frame checking: kinematic and dynamic quantities combined in different frames throw exceptions
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