All Projects → ami-iit → lie-group-controllers

ami-iit / lie-group-controllers

Licence: LGPL-2.1 License
Header-only C++ libraries containing controllers designed for Lie Groups.

Programming Languages

CMake
9771 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to lie-group-controllers

sensor-fusion
Filters: KF, EKF, UKF || Process Models: CV, CTRV || Measurement Models: Radar, Lidar
Stars: ✭ 96 (+269.23%)
Mutual labels:  eigen-library
EiCOS
A C++ Second Order Cone Solver based on Eigen
Stars: ✭ 12 (-53.85%)
Mutual labels:  eigen-library
PySophus
Python bindings for Sophus Lie Algebra C++ Library
Stars: ✭ 52 (+100%)
Mutual labels:  lie-groups
FormTracer
A Mathematica Tracing Package Using FORM
Stars: ✭ 16 (-38.46%)
Mutual labels:  lie-groups
psgd tf
Tensorflow implementation of preconditioned stochastic gradient descent
Stars: ✭ 33 (+26.92%)
Mutual labels:  lie-groups
cpp filter
Kalman filter using C++ and Manif
Stars: ✭ 19 (-26.92%)
Mutual labels:  lie-groups
TransformUtils.jl
Lie groups and algebra with some quaternions
Stars: ✭ 18 (-30.77%)
Mutual labels:  lie-groups
RcppEigen
Rcpp integration for the Eigen templated linear algebra library
Stars: ✭ 89 (+242.31%)
Mutual labels:  eigen-library
ASALI
Do you work with chemical reactors? Are you curious about them? ASALI is the open-source code that you are looking for. Chemical reactor models, transport/thermodynamic properties of gases, equilibrium calculations. ASALI couples all these features with an user friendly graphical interface. Modeling catalytic reactors has never been so easy.
Stars: ✭ 38 (+46.15%)
Mutual labels:  eigen-library
Cpp-Examples
Numerical C++ examples.
Stars: ✭ 38 (+46.15%)
Mutual labels:  eigen-library

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].