Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ANYbotics/kindr
Kinematics and Dynamics for Robotics
https://github.com/ANYbotics/kindr
Last synced: 3 months ago
JSON representation
Kinematics and Dynamics for Robotics
- Host: GitHub
- URL: https://github.com/ANYbotics/kindr
- Owner: ANYbotics
- License: bsd-3-clause
- Created: 2014-03-19T11:31:51.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-01-20T17:53:49.000Z (about 1 year ago)
- Last Synced: 2024-01-25T20:09:19.243Z (about 1 year ago)
- Language: C++
- Size: 4.38 MB
- Stars: 506
- Watchers: 65
- Forks: 191
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-SLAM - Kindr
README
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, [email protected]
Affiliation: [ANYbotics](https://www.anybotics.com/)**This projected was initially developed at ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab).
This work is conducted as part of [ANYmal Research](https://www.anymal-research.org/), a community to advance legged robotics.
The source code is released under a [BSD 3-Clause license](LICENSE).
## Documentation
[Online](https://opensource.docs.anymal.com/doxygen/kindr/master/index.html)
Impatient individuals can directly download the [cheat sheet](https://opensource.docs.anymal.com/doxygen/kindr/master/cheatsheet_latest.pdf).
See also section 'Building the documentation' below.
## Changelog
### Kindr 1.0.0
* Simplified header include `#include ` 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](https://opensource.docs.anymal.com/doxygen/kindr/master/cheatsheet_latest.pdf) 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](https://github.com/anybotics/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.## Requirements
* [Eigen 3.2.0](http://eigen.tuxfamily.org) (Older versions might also work)
* GCC 4.7 is required at the minimum.
* CMake 2.8.3 is required at the minimum.## Building
### Building with cmake
Install the library with [CMake](www.cmake.org):
```bash
mkdir build
cd build
cmake .. -DUSE_CMAKE=true
sudo make install
```Note that `USE_CMAKE` defaults to `true` if catkin is not installed.
Uninstall the library with:
```bash
cd build
sudo make uninstall
```Kindr can be included in your cmake project.
Add the following to your *CmakeLists.txt*:```
find_package(kindr)
include_directories(${kindr_INCLUDE_DIRS})
```### Building with catkin
Build kindr with [catkin](wiki.ros.org/catkin):
```bash
cd ~/catkin_ws/src
git clone [email protected]:anybotics/kindr.git
catkin_make_isolated -C ~/catkin_ws
```or with [catkin command line tools](http://catkin-tools.readthedocs.org):
```bash
cd ~/catkin_ws/src
git clone [email protected]:anybotics/kindr.git
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)
include_directories(${catkin_INCLUDE_DIRS})
```And to your *package.xml*:
```xml
kindr
```
### Building the documentation
Build the documentation with [Doxygen](https://www.doxygen.nl/):
```bash
mkdir build
cd build
cmake ..
make kindr_doc
```The doxygen documentation can be found here:
```
build/doc/html/index.html
```### Building unit tests with gtest
[GTests](https://code.google.com/p/googletest/) are only built if the folder *gtest* exists in the root folder.
Download and use GTest:
```bash
wget https://github.com/google/googletest/archive/release-1.7.0.zip
unzip release-1.7.0.zip
ln -s googletest-release-1.7.0 gtest
mkdir build
cd build
cmake .. -DUSE_CMAKE=true -DBUILD_TEST=true
make
```Note that `USE_CMAKE` defaults to `true` if catkin is not installed.