Skip to content

Latest commit

 

History

History
54 lines (39 loc) · 3.02 KB

File metadata and controls

54 lines (39 loc) · 3.02 KB

liegroups-python

liegroups-python is a Lie theory library that implements transformations outlined in A micro Lie theory for state estimation in robotics.

Summary

This library is created to aid my understanding of Lie groups through implementation, for a more performant solution, consider using the excellent manif library. This library is also heavily inspired by manif.

This library currently implements the following Lie groups with the following parametrizations

Group Description Parametrization
liegroups.SO2 Rotation in 2D (theta) angle of rotation
liegroups.SO3 Rotation in 3D (w1, w2, w3) where norm(w) is the angle of rotation around w / norm(w) axis
liegroups.SE2 Rigid Motion in 2D (x, y, theta) translation + rotation
liegroups.SE3 Rigid Motion in 3D (x, y, z, w1, w2, w3) translation + rotation

For each group, the following operations are supported

Operation LaTex Code
Inverse inverse X.inverse()
Composition composition X.compose(Y)
X @ Y
Group Action act X.act(v)
X * v
Exponential Map exp G.exp(w)
Logarithm Map log X.log()
Adjoint adj X.adjoint()
Right plus rplus X.plus(w)
X + w
Right minus rminus X.minus(Y)
X - Y
Left plus lplus X.lplus(w)
w + X
  • X, Y represents an instance of the group or a group element.
  • w represents a group element as Lie algebra expressed in a vector format.
  • G represents a Lie group.
  • v represents any vector.

All operations come with their respective analytical Jacobian matrices. To learn more about the Jacobian implemented here, read this.

Installation

To install, git clone the repository and run the following commands

cd liegroups-python
pip install .

Testing

To test the package, ensure that pytest is installed. See the installation guide for more information, and run the following in the repository directory.

pytest