Recent Releases of LieGroups

LieGroups - v0.1.3

LieGroups v0.1.3

Diff since v0.1.2

Added

  • introduce push_forward_tangent and pull_back_tangent to combine the differential of left compose and its inverse to “move” from the Lie algebra to a certain tangent space and back, but also takes care of adapting the representation, for the case where the representation on the manifold is different from the one on the Lie group / Lie algebra.
  • introduce a BaseManifoldRetraction to be able to use retractions on the underlying manifold also as a retraction on the Lie group, cf. (#43) and (#47). This feature assumes that the representation of points and tangent vectors on Lie group and the underlying manifold are the same (so it doesn't work with special Euclidean group with homogeneous coordinates).

Changed

  • Switch to using Runic.jl as code formatter

Fixed

  • Fixed a typo, where within was misspelled as widthin which caused errors in a few places.
  • fix default_basis for LieGroup to return a DefaultLieAlgebraOrthogonalBasis also when providing a point type. That way get_vector falls back to the manifold when called with a Lie group and a point, though this is mere a historical format and the Lie algebra approach is the recommended one.
  • mention get_coordinates, get_vector, hat, and vee in the transition documentation since it moved to using the LieAlgebra instead of the Lie group and a point.
  • Fixed RightGroupOperationAction to be a subtype of AbstractRightGroupActionType
  • Add lie_bracket for the SpecialEuclideanGroup.
  • For the CircleGroup(ℝ), fixed compose StackOverflowError and a bug where result could be outside [-π,π), see (#62) for detail.

Merged pull requests: - Use retractions, inverse retractions or vector transports on the base manifold (#47) (@kellertuer) - Fix a typo (#55) (@kellertuer) - hat/vee and getvector improvements (#56) (@kellertuer) - Add the liebracket for the SpecialEuclideanGroup (#58) (@Affie) - Fix RightGroupOperationAction bug (#59) (@Affie) - Switch Code formatter to using Runic.jl (#61) (@kellertuer) - Fix compose in CircleGroup(ℝ) (#62) (@Affie)

Closed issues: - Using retractions on the underlying manifold (#43) - ValidationLieGroup Method errors: possible typo and submanifoldcomponents (#54) - `liebracket` possibly not implemented for semidirect products: throws method error for SE(n) (#57)

- Julia
Published by github-actions[bot] 9 months ago

LieGroups - v0.1.2

LieGroups v0.1.2

Diff since v0.1.1

Added

  • is_flat for SpecialEuclideanGroup
  • inner and norm for LieAlgebra to compute the inner product and norm on the Lie algebra.
  • a test suite function for identity_element.
  • New StaticArrays.jl specializations for multiple functions, including:
    • exp and log on the orthogonal and special orthogonal group in 2 and 3 dimensions.
    • get_coordinates and get_vector on the orthogonal and special orthogonal group in 2 and 3 dimensions, for LieAlgebraOrthogonalBasis.
  • More generic implementation of non-mutating get_vector_lie on AbstractProductGroupOperation groups.

Changed

  • identity_element on UnitaryGroup(1, ℍ) now returns by default a 1x1 Matrix instead of a number to be consistent with higher-dimensional unitary quaternionic groups. Use identity_element(UnitaryGroup(1, ℍ), QuaternionF64) to get a number corresponding to the identity.

Fixed

  • get_vector on SpecialEuclideanGroup with ArrayPartition point type.
  • identity_element and zero_vector are now all using a type as second argument and respect this type more thoroughly.
  • fixes (#44) (accuracy of log on SE(2) and SE(3) for small angles).

Merged pull requests: - SE(n) improvements (#37) (@mateuszbaran) - Add inner on the Lie algebra (#41) (@kellertuer) - Towards consistent return types (#42) (@kellertuer) - Fix #44 (#48) (@mateuszbaran) - StaticArrays.jl specializations (#49) (@mateuszbaran) - Add a identity_element test to the Test suite (#50) (@kellertuer) - Slightly improve news.html (#51) (@kellertuer)

Closed issues: - Possibly missing dispatch on log/exp with arg Identity (#38) - Inconsistent return type for rand on SE2 (#39) - MethodError: no method matching inner for SE2 (#40) - Numerical issue with exp/log on SE with small angle (#44) - Add tests for identity_element (#46)

- Julia
Published by github-actions[bot] 11 months ago

LieGroups - v0.1.1

LieGroups v0.1.1

Diff since v0.1.0

Added

  • identity_element on TranslationGroup supports now StaticArrays.jl types.
  • introduce get_vector in legacy form to work on Lie groups, but they pass on to their Lie algebra.
  • adapt to the new default_basis from ManifoldsBase.jl 1.1.

Changed

Fixed

  • identity_element on TranslationGroup no longer accepts a number as a second argument (it accepts number type instead).

Merged pull requests: - Fix SU math representation (#32) (@MasonProtter) - Adapt to default_basis and pass onwards get_coordinates/get_vector (#34) (@kellertuer) - Fix identity_element on TranslationGroup with StaticArrays types (#35) (@mateuszbaran) - Switch Quarto rendering in the docs to JuliaNotebookRunner (#36) (@kellertuer)

Closed issues: - missing dispatches for cov, e.g. getcoordinatesorthonormal (#33)

- Julia
Published by github-actions[bot] about 1 year ago

LieGroups - v0.1.0

LieGroups v0.1.0

Diff since v0.0.3

Everything denoted by “formerly” refers to the previous name in Manifolds.jl. Several structs have been changed from the pre-release, so these are breaking.

Added

  • LieAlgebra
  • LieGroup (formerly GroupManifold) as well as the concrete groups
    • TranslationGroup
    • SpecialEuclideanGroup (formerly SpecialEuclidean) including
    • SpecialEuclideanMatrixPoint and SpecialEuclideanMatrixTangentVector when representing the points as affine (abstract) matrices
    • SpecialEuclideanProductPoint and SpecialEuclideanProductTangentVector when representing them in a product structure, that is as an ArrayPartition from RecursiveArrayTools.
    • neither of those types is necessary, besides for conversion between both. The product representation differs for the left and right semidirect product, while the affine matrix variant does not.
    • SpecialOrthogonalGroup (formerly SpecialOrthogonal)
    • SpecialUnitaryGroup (formerly SpecialUnitary)
    • OrthogonalGroup (formerly Orthogonal)
    • UnitaryGroup (formerly Unitary) also for quaternions.
    • GeneralLinearGroup (formerly GeneralLinear)
    • HeisenbergGroup
    • LeftSemidirectProductLieGroup (formerly SemidirectProductGroup)
    • (alias for LeftSemidirectProductGroupOperation when a default_left_action(G,H) is defined for the two groups)
    • PowerLieGroup (formerly PowerGroup)
    • PowerGroupOperation to internally avoid ambiguities. Since the constructor always expects a Lie group, this is only necessary internally
    • ProductLieGroup (formerly ProductGroup)
    • RightSemidirectProductLieGroup
    • SpecialLinearGroup (formerly SpecialLinear)
    • SymplecticGroup
    • CircleGroup now with even three representations: Real line (mod 2π), Complex and plane circle
    • (alias for RightSemidirectProductGroupOperation when a default_right_action(G,H) is defined for the two groups)
    • a ValidationLieGroup verifying input and output of all interface functions, similar to the ValidationManifold which can also be used internally.
  • AbstractGroupOperation as well as its concrete subtypes
    • AdditionGroupOperation (formerly AdditionOperation)
    • MatrixMultiplicationGroupOperation (formerly MultiplicationOperation)
    • PowerGroupOperation (formerly the Lie group was stored inside a power manifold)
    • ProductGroupOperation (formerly the Lie groups were stored inside a product manifold)
    • LeftSemidirectProductGroupOperation (this was formerly only implicitly stored in the SemidirectProductGroup)
    • RightSemidirectProductGroupOperation
  • AbstractGroupActionType with its 2 specific (new) abstract subtypes
    • AbstractLeftGroupActionType
    • AbstractRightGroupActionType
  • For the group operation actions there are now
    • LeftGroupOperationAction (formerly LeftForwardAction)
    • RightGroupOperationAction (formerly RightBackwardAction)
    • InverseLeftGroupOperationAction (formerly RightForwardAction)
    • InverseRightGroupOperationAction (formerly LeftBackwardAction)
  • DefaultLieAlgebraOrthogonalBasis (replaces VeeOrthogonalBasis, which is still available in ManifoldsBase.jl)
  • AbstractLieGroupPoint and AbstractLieAlgebraTangentVector as abstract types to introduce point and Lie algebra tangent vector representations
  • Identity
  • applyand apply!
  • base_manifold to access the manifold within a Lie group
  • compose and compose!
  • conjugate and conjugate!
  • diff_apply, diff_apply!, diff_group_apply, and diff_group_apply! (formerly apply_diff_[group][!])
  • diff_conjugate and diff_conjugate!
  • diff_left_compose, diff_left_compose!, diff_right_compose, diff_right_compose! (formerly translate_diff with different sides)
  • exp(G::LieGroup, g, X) and exp!(G::LieGroup, h, g, X) (formerly exp_inv and exp_inv!)
  • exp(G::LieGroup, X) and exp!(G::LieGroup, h, X) (formerly exp_lie and exp_lie!)
  • hat and hat!, with slightly different signatures, since the base point is omitted.
  • identity_element and identity_element!
  • inv and inv! (inv(::AbstractGroupAction) was formerly switch_direction)
  • inv_left_compose, inv_left_compose! and inv_right_compose, inv_right_compose! (these functions correspond to inverse_translate with corresponding direction and side)
  • is_identity
  • lie_bracket and lie_bracket!
  • jacobian_conjugate (formerly adjoint_matrix, which is now a special case of this)
  • log(G::LieGroup, g, h) and log!(G::LieGroup, X, g, h) (formerly log_inv and log_inv!)
  • log(G::LieGroup, ::Identity, g) and log!(G::LieGroup, X, ::Identity, g) (formerly log_lie and log_lie!)
  • switch (formerly switch_side)
  • vee and vee!, with slightly different signatures, since the base point is omitted.

Compared to Manifolds.jl * all translate functions are not implemented here, since you can just use compose. The differentials are implemented as listed above with respect to both left and right argument of compose * all inverse_apply functions are not implemented here, since it is recommended to use apply(inv(A), g, p) as a replacement.

Merged pull requests: - Add a ValidationLieGroup (#22) (@kellertuer) - Implement a default for jacobian_conjugate (#23) (@kellertuer) - A get-started tutorial (#24) (@kellertuer) - Add symplectic group (#28) (@kellertuer) - Port remaining groups (part 1/3): Quaternion Unitary (#29) (@kellertuer) - Port remaining groups (part 2/3): Special Linear (#30) (@kellertuer) - Port remaining groups (Part 3/3): The Circle group (#31) (@kellertuer)

Closed issues: - Add action of the special orthogonal group on more manifolds. (#25) - Add symplectic group (#26) - Implement generic jacobian_conjugate (#20)

- Julia
Published by github-actions[bot] about 1 year ago

LieGroups - v0.0.3

LieGroups v0.0.3

Diff since v0.0.2

This is a first small breaking release towards integrating a new LieGroups package into the JuliaManifolds ecosystem

Merged pull requests: - A first Lie group! (#8) (@kellertuer) - Fix roadmap link in readme (#9) (@lgoettgens) - Update Logo (#10) (@kellertuer) - Introduce the general linear group and the multiplication group operation. (#12) (@kellertuer) - Power, Product, and semidirect product manifolds (#14) (@kellertuer) - (Special) Orthogonal / Unitary / Euclidean groups (#17) (@kellertuer) - Improve docs of group exp and log, mention left-invariance (#18) (@kellertuer) - add Heisenberg group (#19) (@mateuszbaran)

Closed issues: - Transitioning from Manifolds.jl (#7) - Still actively developed? We would like to continue! (#4) - Keep point/vector representations In mind. (#15) - Improve exp and log documentation strings (#16)

- Julia
Published by github-actions[bot] about 1 year ago

LieGroups - v0.0.2

LieGroups v0.0.2

Diff since v0.0.1

  • fix SE{3} and add jacobian
  • define dof and dim for Lie algebra and jacobian of inv
  • add action for SE{N}
  • add se3_location example

Merged pull requests: - Update (#2) (@yuehhua) - Add se3_location example (#3) (@yuehhua)

- Julia
Published by github-actions[bot] almost 4 years ago

LieGroups - v0.0.1

LieGroups v0.0.1

- Julia
Published by github-actions[bot] almost 4 years ago