Kindr
Kinematics and Dynamics for Robotics

This library defines an interface for quaternions to enable different implementations.
Note that these quaternions should not be used to represent rotations! Use a RotationQuaternion instead as explained on page Rotations.
The interfaces are declared in QuaternionBase.hpp.
The class kindr::QuaternionBase defines the interface for a Hamiltonian generic quaternion defined as:
The interface defines generic functions, such as:
The class kindr::UnitQuaternionBase defines the interface for a Hamiltonian unit quaternion defined as:
There are two reasons why there is an extra class for unit quaternions:
Eigen provides a Eigen::Quaternion, which is used as a primitive for a quaternion.
To use the quaternions based on Eigen, include the following header:
The class kindr::Quaternion implements a Hamiltonian generic quaternion.
The coefficients are defined as
The following two typedefs are provided for convenience:
Example code to create a quaternion:
The class kindr::UnitQuaternion implements a Hamiltonian unit quaternion.
The following two typedefs are provided for convenience:
The class only checks if the quaternion has unit length if the code is built with debugging symbols, i.e. #define NDEBUG exists. If the unit quaternion has not unit length, an exception will be thrown.
Conversion by constructor:
Conversion by assignment: