lie-group-controllers
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:
- 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
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.