Skip to content
Kinematics and Dynamics for Robotics
Branch: master
Clone or download
remod and hogabrie Merge branch 'feature/cleanup_licenses' into 'master'
Clean up license files.

See merge request anybotics/anybotics!61

GitOrigin-RevId: 2939d27bf2be0b5e0dceb0315f963071321d31c9
Latest commit c9098de Jun 4, 2019

Kindr - Kinematics and Dynamics for Robotics

Authors: Christian Gehring, C. Dario Bellicoso, Michael Bloesch, Remo Diethelm, Peter Fankhauser, Paul Furgale, Michael Neunert, Hannes Sommer
Maintainer: Remo Diethelm,
Affiliation: ANYbotics

This projected was initially developed at ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab).

This work is conducted as part of ANYmal Research, a community to advance legged robotics.

The source code is released under a BSD 3-Clause license.

Build Status



Impatient individuals can directly download the cheat sheet.

See also section 'Building the documentation' below.


Kindr 1.0.0

  • Simplified header include #include <kindr/Core> is provided.
  • Kindr is now strongly dependent on Eigen.
  • All sub namespaces have been removed. (e.g. kindr::rotations::eigen_impl -> kindr::)
  • The implementations of rotations and time derivatives have been simplified (Passive, Hamiltonian).
    • Active typedefs (e.g. RotationQuaternionAD) have been removed and simpler ones (e.g. RotationQuaternionD) have been introduced.
    • Note that the functionality of some operators changed! Please check the cheat sheet to understand what is implemented.
    • Some hints on what needs to be changed from kindr 0.0.1:
      • rotation.setFromVectors(v1, v2) -> rotation.setFromVectors(v2, v1)
      • C_BI.boxPlus(dt * B_w_IB) -> C_BI.boxPlus(dt * C_IB * B_w_IB)
      • C_BI.boxMinus(dt * B_w_IB) -> -C_BI.boxMinus(dt * B_w_IB)
      • Euler angles probably have to be negated.
  • Conversion methods between ROS and kindr have been moved to the package kindr_ros.
  • Concatenation of Homogeneous Transformation is now implemented.
  • Short typedefs are provided for Homogeneous Transformation: HomTransformQuatD, HomTransformMatrixD.
  • Jacobian of exponential map is implemented.
  • Unit tests based on gtest are provided to test the convention of other software packages.
    • Gazebo (gazebo::math::Quaternion) uses the same convention as kindr.
    • ROS TF (tf::Quaternion and tf::Matrix3x3) uses the same convention as kindr.
    • RBDL's RigidBodyDynamics::Math::SpatialTransform uses the same convention as kindr, whereas RBDL's RigidBodyDynamics::Math::Quaternion concatenates differently and its conversion to a rotation matrix is inverted.


  • Eigen 3.2.0 (Older versions might also work)
  • GCC 4.7 is required at the minimum.
  • CMake 2.8.3 is required at the minimum.


Building with cmake

Install the library with CMake:

mkdir build
cd build
cmake ..
sudo make install

Uninstall the library with:

cd build
sudo make uninstall

Kindr can be included in your cmake project. Add the following to your CmakeLists.txt:


Building with catkin

Build kindr with catkin:

cd ~/catkin_ws/src
git clone
catkin_make_isolated -C ~/catkin_ws

or with catkin command line tools:

cd ~/catkin_ws/src
git clone
catkin build -w ~/catkin_ws kindr

Kindr can be included in your catkin project with: Add the following to your CMakeLists.txt:

find_package(catkin COMPONENTS kindr) 

And to your package.xml:


Building the documentation

Build the documentation with Doxygen:

mkdir build
cd build
cmake ..
make kindr_doc

The doxygen documentation can be found here:


Building unit tests with gtest

GTests are only built if the folder gtest exists in the root folder.

Download and use GTest:

ln -s googletest-release-1.7.0 gtest
mkdir build
cd build
cmake .. -DBUILD_TEST=true
You can’t perform that action at this time.