Header-only C++ libraries containing controllers designed for Lie Groups.
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:
- Proportional Controller (
P controller
) - Proportional Derivative Controller (
PD controller
)
The controllers have the following form
Proportional Controller | Proportional Derivative Controller |
---|---|
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
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
.
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)
All types of issues are welcome.
The original version of the library can be found here.