The special Galilean group
LieGroups.RotationBoostAction
โ TypeRotationBoostAction
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!
.
LieGroups.SpecialGalileanGroup
โ MethodSpecialGalileanGroup(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))$.
The ArrayPartition (default) implementation requires RecursiveArrayTools.jl
to be loaded. The matrix representation is not implemented yet.
[Kel25]
Base.exp
โ MethodLieGroups.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
.
Base.log
โ MethodLieGroups.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
.
Manifolds.apply!
โ MethodLieGroups.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].
ManifoldsBase.exp!
โ MethodLieGroups.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
.
ManifoldsBase.hat!
โ MethodX = 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
.
ManifoldsBase.hat
โ MethodX = 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
.
ManifoldsBase.log!
โ MethodLieGroups.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
.
ManifoldsBase.vee!
โ Methodc = 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
.
ManifoldsBase.vee
โ Methodc = 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
.