The special Galilean group

LieGroups.RotationBoostAction โ€” Type
RotationBoostAction

The group action of the semidirect product of spatial rotations and velocity boosts ($(R, v) \in SO(n) โ‹‰ โ„โฟ$) on the space of events (position, time) ($(p, t) \in โ„โฟ ร— โ„$). See [Kel25, section 4.1] and apply!.

source
LieGroups.SpecialGalileanGroup โ€” Method
SpecialGalileanGroup(n::Int)

Construct the special Galilean group SGal(n) as a nested semidirect product: $(SO(n) โ‹‰ โ„โฟ) โ‹‰ (โ„โฟ ร— โ„)$ where $R โˆˆ SO(n)$ are spatial rotations, $v โˆˆ โ„โฟ$ are velocity boosts, and $(p, t) โˆˆ (โ„โฟ ร— โ„)$ are the (position, time) events. The affine representation of the group is given by the matrix:

\[\mathrm{SGal}(3) = \begin{bmatrix} R & v & p \\ 0 & 1 & t \\ 0 & 0 & 1 \end{bmatrix} \subset \mathbb{R}^{5\times 5}\]

And the ArrayPartition representation as: $((R, v), (p, t))$

The group operation (compose) is given by:

\[((R_1, v_1), (p_1, t_1)) \circ ((R_2, v_2), (p_2, t_2)) = ((R_1 R_2, v_1 + R_1 v_2), (p_1 + v_1 t_2 + R_1 p_2, t_1 + t_2))\]

and the identity element (identity_element) is $((I_n, \mathbf{0}), (\mathbf{0}, 0))$.

Technical Detail

The ArrayPartition (default) implementation requires RecursiveArrayTools.jl to be loaded. The matrix representation is not implemented yet.

[Kel25]

source
Base.exp โ€” Method
LieGroups.exp(M::SpecialGalileanGroup, X)
LieGroups.exp!(M::SpecialGalileanGroup, h, X)

Compute the Lie group exponential function on the SpecialGalileanGroup(3), where X is an element of the Lie algebra.

The closed-form expression for the matrix exponential from [Kel25, section 6] is used.

\[\exp X = \exp{\begin{bmatrix} \boldsymbol{\phi}^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix}} = \begin{bmatrix} C & Dฮฝ & Dฯ + Eฮฝฮน \\ 0 & 1 & ฮน \\ 0 & 0 & 1 \end{bmatrix},\]

where

\[C = I_3 + \sin(\phi)\, \mathbf{u}^{\wedge} + \bigl(1 - \cos(\phi)\bigr)\, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}, \\ D = I_3 + \frac{1 - \cos(\phi)}{\phi} \, \mathbf{u}^{\wedge} + \frac{\phi - \sin(\phi)}{\phi} \, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}, \\ E = \tfrac12 I_3 + \frac{\phi - \sin(\phi)}{\phi^2} \, \mathbf{u}^{\wedge} + \frac{\phi^2 + 2\cos(\phi) - 2}{2\phi^2} \, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}.\]

$\boldsymbol{\phi}=\phi \mathbf{u}$ is the angle-axis rotation parameterization with $\phi = \|\boldsymbol{\phi}\|$ and $\mathbf{u} = \boldsymbol{\phi}/\phi$.

The computation can be done in-place of h.

source
Base.log โ€” Method
LieGroups.log(M::SpecialGalileanGroup, g)
LieGroups.log!(M::SpecialGalileanGroup, X, g)

Compute the Lie group logarithm function on the SpecialGalileanGroup(3), where g is a group element.

The closed-form expression from [Kel25, section 6] is used.

The computation can be done in-place of X.

source
Manifolds.apply! โ€” Method
LieGroups.apply!(A::GroupAction{RotationBoostAction}, k, g, h)

Apply the action of the rotation-boost semidirect product group (SO(n) โ‹‰ โ„โฟ) on an event $(p, t)$. Given group element $g = (R, v)$ and event $h = (p, t)$, computes the transformed event $k = (Rp + vt, t)$. See [Kel25, section 4.1].

source
ManifoldsBase.exp! โ€” Method
LieGroups.exp(M::SpecialGalileanGroup, X)
LieGroups.exp!(M::SpecialGalileanGroup, h, X)

Compute the Lie group exponential function on the SpecialGalileanGroup(3), where X is an element of the Lie algebra.

The closed-form expression for the matrix exponential from [Kel25, section 6] is used.

\[\exp X = \exp{\begin{bmatrix} \boldsymbol{\phi}^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix}} = \begin{bmatrix} C & Dฮฝ & Dฯ + Eฮฝฮน \\ 0 & 1 & ฮน \\ 0 & 0 & 1 \end{bmatrix},\]

where

\[C = I_3 + \sin(\phi)\, \mathbf{u}^{\wedge} + \bigl(1 - \cos(\phi)\bigr)\, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}, \\ D = I_3 + \frac{1 - \cos(\phi)}{\phi} \, \mathbf{u}^{\wedge} + \frac{\phi - \sin(\phi)}{\phi} \, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}, \\ E = \tfrac12 I_3 + \frac{\phi - \sin(\phi)}{\phi^2} \, \mathbf{u}^{\wedge} + \frac{\phi^2 + 2\cos(\phi) - 2}{2\phi^2} \, \mathbf{u}^{\wedge}\mathbf{u}^{\wedge}.\]

$\boldsymbol{\phi}=\phi \mathbf{u}$ is the angle-axis rotation parameterization with $\phi = \|\boldsymbol{\phi}\|$ and $\mathbf{u} = \boldsymbol{\phi}/\phi$.

The computation can be done in-place of h.

source
ManifoldsBase.hat! โ€” Method
X = hat(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, c)
hat!(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, X, c)

Compute the hat map $(โ‹…)^{\wedge} : โ„^{10} โ†’ ๐”ค$ that turns a vector of coordinates c into a tangent vector in the Lie algebra.

\[\begin{bmatrix} \rho \\ \nu \\ \phi \\ \iota \end{bmatrix}^\wedge = \begin{bmatrix} \phi^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix} \in \mathbb{R}^{5\times 5}\]

The basis is defined in eq 14 of [Kel25].

This can be computed in-place of X.

source
ManifoldsBase.hat โ€” Method
X = hat(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, c)
hat!(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, X, c)

Compute the hat map $(โ‹…)^{\wedge} : โ„^{10} โ†’ ๐”ค$ that turns a vector of coordinates c into a tangent vector in the Lie algebra.

\[\begin{bmatrix} \rho \\ \nu \\ \phi \\ \iota \end{bmatrix}^\wedge = \begin{bmatrix} \phi^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix} \in \mathbb{R}^{5\times 5}\]

The basis is defined in eq 14 of [Kel25].

This can be computed in-place of X.

source
ManifoldsBase.log! โ€” Method
LieGroups.log(M::SpecialGalileanGroup, g)
LieGroups.log!(M::SpecialGalileanGroup, X, g)

Compute the Lie group logarithm function on the SpecialGalileanGroup(3), where g is a group element.

The closed-form expression from [Kel25, section 6] is used.

The computation can be done in-place of X.

source
ManifoldsBase.vee! โ€” Method
c = vee(๐”ค::LieAlgebra{โ„,<:LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, X)
vee!(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, c, X)

Compute the vee map $(โ‹…)^{\vee}: \mathfrak g โ†’ โ„^{10}$ that maps a tangent vector from the Lie algebra to a vector of coordinates c.

\[\begin{bmatrix} \phi^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix}^\vee = \begin{bmatrix} \rho \\ \nu \\ \phi \\ \iota \end{bmatrix} \in \mathbb{R}^{10}\]

The basis is defined in eq 14 of [Kel25].

This can be computed in-place of c.

source
ManifoldsBase.vee โ€” Method
c = vee(๐”ค::LieAlgebra{โ„,<:LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, X)
vee!(๐”ค::LieAlgebra{โ„,LeftSpecialGalileanGroupOperation,<:SpecialGalileanGroup}, c, X)

Compute the vee map $(โ‹…)^{\vee}: \mathfrak g โ†’ โ„^{10}$ that maps a tangent vector from the Lie algebra to a vector of coordinates c.

\[\begin{bmatrix} \phi^\wedge & \nu & \rho \\ 0 & 0 & \iota \\ 0 & 0 & 0 \end{bmatrix}^\vee = \begin{bmatrix} \rho \\ \nu \\ \phi \\ \iota \end{bmatrix} \in \mathbb{R}^{10}\]

The basis is defined in eq 14 of [Kel25].

This can be computed in-place of c.

source