-
Notifications
You must be signed in to change notification settings - Fork 6
Home
Evan Drumwright edited this page Feb 26, 2016
·
16 revisions
[Installation instructions](Installation instructions)
Ravelin is a C++ library for rigid body and multi-rigid body kinematics and dynamics.
- 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 and multi-rigid body kinematics and dynamics computation, including poses, velocities, accelerations, inertias, momenta, forces, and Jacobians
- Both explicit and implicit joint constraints supported: dynamics computable in minimal coordinates and absolute coordinates
- Floating bases, tree-like kinematic topologies, and mechanisms with kinematic loops supported
- Frame checking: operations on kinematic and dynamic quantities defined in different frames throw exceptions
- Supports reading in multi-rigid body kinematics and dynamics from URDF
- Results from all dynamics algorithms have been verified against Featherstone's MATLAB-based code
Ravelin wraps BLAS and LAPACK in place of Eigen.
- Arithmetic with zero-dimensional matrices/vectors supported
- 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
You should use Ravelin if one or more of the following applies to you:
- You are computing robot kinematics or dynamics
- 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 programming for real-time systems (like control loops) and need to ensure that memory is not allocated during your real-time code
- Ravelin supports floating bases and kinematic loops (KDL does not)
- Ravelin's dynamics computations are complete (KDL's are not)
- KDL contains methods for trajectory formation (Ravelin does not)
- KDL contains various methods for inverse kinematics using resolved motion rate control (Ravelin does not implement IK, though it provides the Jacobians necessary to do so)
- KDL uses Eigen (Ravelin wraps BLAS/LAPACK)