cyberknightX / lie-group-controllers

Header-only C++ libraries containing controllers designed for Lie Groups.

Home Page:https://ami-iit.github.io/lie-group-controllers/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lie-group-controllers

C++ Standard Size Size Size

Header-only C++ libraries containing controllers designed for Lie Groups.

Some theory behind the library

The aim of the library is to contain some controllers designed in lie groups. The library depends only on Eigen and manif.

All the controllers defined in lie-group-controllers have in common that they inherit from a templated base class (CRTP). It allows one to write generic code abstracting the controller details. This follows the structure of manif and Eigen.

The library implements two controllers:

  1. Proportional Controller (P controller)
  2. Proportional Derivative Controller (PD controller)

The controllers have the following form

Proportional Controller Proportional Derivative Controller
img-f6214bd2482f678b img-40c85670ed9bec65

where X and Xᵈ are elements of a Lie group. is the group operator. ψ represents an element in the Lie algebra of the Lie group whose coordinates are expressed in ℝⁿ.

At the moment, the controllers support all the group defined in manif. Namely:

  • ℝ(n): Euclidean space with addition.
  • SO(2): rotations in the plane.
  • SE(2): rigid motion (rotation and translation) in the plane.
  • SO(3): rotations in 3D space.
  • SE(3): rigid motion (rotation and translation) in 3D space.

Please you can find further information in

Modern Robotics: Mechanics, Planning, and Control,
Kevin M. Lynch and Frank C. Park,
Cambridge University Press, 2017,
ISBN 9781107156302

Dependeces

Build the library

git clone https://github.com/GiulioRomualdi/lie-group-controllers.git
cd lie-group-controllers
mkdir build && cd build
cmake ../
cmake --build .
[sudo] make install

If you want to enable tests set the BUILD_TESTING option to ON.

Use lie-group-controllers in your project

lie-group-controllers provides native CMake support which allows the library to be easily used in CMake projects. Please add in your CMakeLists.txt

project(foo)
find_package(LieGroupControllers REQUIRED)
add_executable(${PROJECT_NAME} src/foo.cpp)
target_link_libraries(${PROJECT_NAME} LieGroupControllers::LieGroupControllers)

Bug reports and support

All types of issues are welcome.

Note

The original version of the library can be found here.

About

Header-only C++ libraries containing controllers designed for Lie Groups.

https://ami-iit.github.io/lie-group-controllers/

License:GNU Lesser General Public License v2.1


Languages

Language:CMake 62.2%Language:C++ 37.8%