Recent Releases of LieGroups
LieGroups - v0.1.3
LieGroups v0.1.3
Added
- introduce
push_forward_tangentandpull_back_tangentto 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
BaseManifoldRetractionto 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
withinwas misspelled aswidthinwhich caused errors in a few places. - fix
default_basisforLieGroupto return aDefaultLieAlgebraOrthogonalBasisalso when providing a point type. That wayget_vectorfalls 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, andveein the transition documentation since it moved to using theLieAlgebrainstead of the Lie group and a point. - Fixed
RightGroupOperationActionto be a subtype ofAbstractRightGroupActionType - Add
lie_bracketfor 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
Added
is_flatforSpecialEuclideanGroupinnerandnormforLieAlgebrato 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:
expandlogon the orthogonal and special orthogonal group in 2 and 3 dimensions.get_coordinatesandget_vectoron the orthogonal and special orthogonal group in 2 and 3 dimensions, forLieAlgebraOrthogonalBasis.
- More generic implementation of non-mutating
get_vector_lieonAbstractProductGroupOperationgroups.
Changed
identity_elementonUnitaryGroup(1, ℍ)now returns by default a 1x1Matrixinstead of a number to be consistent with higher-dimensional unitary quaternionic groups. Useidentity_element(UnitaryGroup(1, ℍ), QuaternionF64)to get a number corresponding to the identity.
Fixed
get_vectoronSpecialEuclideanGroupwithArrayPartitionpoint type.identity_elementandzero_vectorare now all using a type as second argument and respect this type more thoroughly.- fixes (#44) (accuracy of
logon 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
Added
identity_elementonTranslationGroupsupports nowStaticArrays.jltypes.- introduce
get_vectorin legacy form to work on Lie groups, but they pass on to their Lie algebra. - adapt to the new
default_basisfrom ManifoldsBase.jl 1.1.
Changed
- the tutorials are now rendered with
quartousing theQuartoNotebookRunner.jland are hence purely julia based.
Fixed
identity_elementonTranslationGroupno 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
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
LieAlgebraLieGroup(formerlyGroupManifold) as well as the concrete groupsTranslationGroupSpecialEuclideanGroup(formerlySpecialEuclidean) includingSpecialEuclideanMatrixPointandSpecialEuclideanMatrixTangentVectorwhen representing the points as affine (abstract) matricesSpecialEuclideanProductPointandSpecialEuclideanProductTangentVectorwhen representing them in a product structure, that is as anArrayPartitionfromRecursiveArrayTools.- 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) also for quaternions.GeneralLinearGroup(formerlyGeneralLinear)HeisenbergGroupLeftSemidirectProductLieGroup(formerlySemidirectProductGroup)⋉(alias forLeftSemidirectProductGroupOperationwhen adefault_left_action(G,H)is defined for the two groups)PowerLieGroup(formerlyPowerGroup)PowerGroupOperationto internally avoid ambiguities. Since the constructor always expects a Lie group, this is only necessary internallyProductLieGroup(formerlyProductGroup)RightSemidirectProductLieGroupSpecialLinearGroup(formerlySpecialLinear)SymplecticGroupCircleGroupnow with even three representations: Real line (mod 2π), Complex and plane circle⋊(alias forRightSemidirectProductGroupOperationwhen adefault_right_action(G,H)is defined for the two groups)- a
ValidationLieGroupverifying input and output of all interface functions, similar to theValidationManifoldwhich can also be used internally.
AbstractGroupOperationas 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
AbstractGroupActionTypewith its 2 specific (new) abstract subtypesAbstractLeftGroupActionTypeAbstractRightGroupActionType
- For the group operation actions there are now
LeftGroupOperationAction(formerlyLeftForwardAction)RightGroupOperationAction(formerlyRightBackwardAction)InverseLeftGroupOperationAction(formerlyRightForwardAction)InverseRightGroupOperationAction(formerlyLeftBackwardAction)
DefaultLieAlgebraOrthogonalBasis(replacesVeeOrthogonalBasis, which is still available inManifoldsBase.jl)AbstractLieGroupPointandAbstractLieAlgebraTangentVectoras abstract types to introduce point and Lie algebra tangent vector representationsIdentityapplyandapply!base_manifoldto access the manifold within a Lie groupcomposeandcompose!conjugateandconjugate!diff_apply,diff_apply!,diff_group_apply, anddiff_group_apply!(formerlyapply_diff_[group][!])diff_conjugateanddiff_conjugate!diff_left_compose,diff_left_compose!,diff_right_compose,diff_right_compose!(formerlytranslate_diffwith different sides)exp(G::LieGroup, g, X)andexp!(G::LieGroup, h, g, X)(formerlyexp_invandexp_inv!)exp(G::LieGroup, X)andexp!(G::LieGroup, h, X)(formerlyexp_lieandexp_lie!)hatandhat!, with slightly different signatures, since the base point is omitted.identity_elementandidentity_element!invandinv!(inv(::AbstractGroupAction)was formerlyswitch_direction)inv_left_compose,inv_left_compose!andinv_right_compose,inv_right_compose!(these functions correspond toinverse_translatewith corresponding direction and side)is_identitylie_bracketandlie_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_invandlog_inv!)log(G::LieGroup, ::Identity, g)andlog!(G::LieGroup, X, ::Identity, g)(formerlylog_lieandlog_lie!)switch(formerlyswitch_side)veeandvee!, 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
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
- fix
SE{3}and addjacobian - define
dofanddimfor Lie algebra andjacobianofinv - 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