All notable Changes to the Julia package LieGroups.jl
will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Everything denoted by “formerly” refers to the previous name in Manifolds.jl
.
LieAlgebra
LieGroup
(formerlyGroupManifold
) as well as the concrete groupsTranslationGroup
SpecialEuclideanGroup
(formerlySpecialEuclidean
) includingSpecialEuclideanMatrixPoint
andSpecialEuclideanMatrixTangentVector
when representing thepoints as affine (abstract) matricesSpecialEuclideanProductPoint
andSpecialEuclideanProductTangentVector
when representing them in a product structure, e.g. as anArrayPartition
fromRecursiveArrayTools
.- 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
(formerlySpecialOrthogonal
)SpecialUnitaryGroup
(formerlySpecialUnitary
)OrthogonalGroup
(formerlyOrthogonal
)UnitaryGroup
(formerlyUnitary
)GeneralLinearGroup
(formerlyGeneralLinear
)HeisenbergGroup
LeftSemidirectProductLieGroup
(formerlySemidirectProductGroup
)⋉
(alias forLeftSemidirectProductGroupOperation
when adefault_left_action(G,H)
is defined for the two groups)PowerLieGroup
(formerlyPowerGroup
)PowerGroupOperation
to internally avoid ambiguities. Since the constructor always expects a Lie group, this is only necessary internallyProductLieGroup
(formerlyProductGroup
)RightSemidirectProductLieGroup
⋊
(alias forRightSemidirectProductGroupOperation
when adefault_right_action(G,H)
is defined for the two groups)
AbstractGroupOperation
as well as its concrete subtypesAdditionGroupOperation
(formerlyAdditionOperation
)MatrixMultiplicationGroupOperation
(formerlyMultiplicationOperation
)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 theSemidirectProductGroup
)RightSemidirectProductGroupOperation
AbstractGroupActionType
with its 2 specific (new) abstract subtypesAbstractLeftGroupActionType
AbstractRightGroupActionType
- For the group operation actions there are now
LeftGroupOperationAction
(formerlyLeftForwardAction
)RightGroupOperationAction
(formerlyRightBackwardAction
)InverseLeftGroupOperationAction
(formerlyRightForwardAction
)InverseRightGroupOperationAction
(formerlyLeftBackwardAction
)
DefaultLieAlgebraOrthogonalBasis
(replacesVeeOrthogonalBasis
, which is still available inManifoldsBase.jl
)AbstractLieGroupPoint
andAbstractLieAlgebraTangentVector
as abstract types to introduce point and Lie algebra tangent vector representationsIdentity
apply
andapply!
base_manifold
to access the manifold within a Lie groupcompose
andcompose!
conjugate
andconjugate!
diff_apply
,diff_apply!
,diff_group_apply
, anddiff_group_apply!
(formerlyapply_diff_[group][!]
)diff_conjugate
anddiff_conjugate!
diff_left_compose
,diff_left_compose!
,diff_right_compose
,diff_right_compose!
(formerlytranslate_diff
with different sides)exp(G::LieGroup, g, X)
andexp!(G::LieGroup, h, g, X)
(formerlyexp_inv
andexp_inv!
)exp(G::LieGroup, X)
andexp!(G::LieGroup, h, X)
(formerlyexp_lie
andexp_lie!
)hat
andhat!
, with slightly different signatures, since the base point is omitted.identity_element
andidentity_element!
inv
andinv!
(inv(::AbstractGroupAction)
was formerlyswitch_direction
)inv_left_compose
,inv_left_compose!
andinv_right_compose
,inv_right_compose!
(these functions correspond toinverse_translate
with corresponding direction and side)is_identity
lie_bracket
andlie_bracket!
jacobian_conjugate
(formerlyadjoint_matrix
, which is now a special case of this)log(G::LieGroup, g, h)
andlog!(G::LieGroup, X, g, h)
(formerlylog_inv
andlog_inv!
)log(G::LieGroup, ::Identity, g)
andlog!(G::LieGroup, X, ::Identity, g)
(formerlylog_lie
andlog_lie!
)switch
(formerlyswitch_side
)vee
andvee!
, 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 usecompose
. 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 useapply(inv(A), g, p)
as a replacement.
- Finishes most of the work on the interface for the
LieGroup
type and the newLieAlgebra
type. - Finishes a generic implementation of a
SemiDirectProductGroupOperation
- All details will be detailed in the next release
Two previous releases where done by Yueh-Hua Tu in 2022 before he was so kind to transfer the development to the JuliaManifolds GitHub organisation.
All notable changes to this project will be documented in this file.
- 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