Kindr
Kinematics and Dynamics for Robotics

This library defines an interface for time derivatives of rotations to enable different representations of the time derivative (angular velocity, time derivatives of Euler angles, time derivative of quaternion, etc.). The section Interface describes the functionalities, whereas the section Parameterization shows some examples.
The class kindr::RotationDiffBase serves as an interface for the time derivative of a rotation. All types of representations of a time derivative of a rotation, such as angular velocity and time derivatives of Euler angles, are derived from this base class.
The type of a rotation is defined by
The default constructor always initializes all derivatives with zero.
All derivatives can be set to zero by the function setZero().
Addition and subtraction of the time derivatives are provided by the kindr::RotationDiffBase::operator+ and kindr::RotationDiffBase::operator, respectively.
There are three kinds of conversions:
The following methods allow to convert between different representations of a rotation:
Not yet supported.
The following representations are currently provided by the library:
The class kindr::LocalAngularVelocity implements the local angular velocity in 3DSpace. The angular velocity expressed in bodyfixed frame can be stated as:
It stores the three coordinates of the angular velocity in Eigen::Matrix<PrimType, 3, 1>.
The following two typedefs are provided for convenience:
An angular velocity can be created as follows:
The coordinates can be obtained as follows:
Operations with angular velocities:
The class kindr::RotationQuaternionDiff implements the time derivative of a Hamiltonian unit quaternion representation of a rotation:
The class kindr::RotationMatrixDiff implements the time derivative of a 3x3 rotation matrix representation of a rotation:
The class kindr::EulerAnglesZyxDiff implements the time derivatives of the Euler angles with the ZYX convention:
where is the time derivative of the yaw angle, is the time derivative of the pitch angle, and is the time derivative of the roll angle.
The class kindr::EulerAnglesXyzDiff implements the time derivatives of the Euler angles with the XYZ convention:
where is the time derivative of the yaw angle, is the time derivative of the pitch angle, and is the time derivative of the roll angle.