smooth
A C++ library for Lie theory
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
GalileiBase< _Derived > Class Template Reference

Base class for Galielei Lie group types. More...

#include <galilei.hpp>

Inheritance diagram for GalileiBase< _Derived >:
Inheritance graph
[legend]

Public Member Functions

Map< SO3< Scalar > > so3 ()
 Access SO(3) part.
 
Map< const SO3< Scalar > > so3 () const
 Const access SO(3) part.
 
Eigen::Map< Eigen::Vector3< Scalar > > r3_v ()
 Access R3 velocity part.
 
Eigen::Map< const Eigen::Vector3< Scalar > > r3_v () const
 Const access R3 velocity part.
 
Eigen::Map< Eigen::Vector3< Scalar > > r3_p ()
 Access R3 position part.
 
Eigen::Map< const Eigen::Vector3< Scalar > > r3_p () const
 Const access R3 position part.
 
Eigen::Map< Eigen::Vector< Scalar, 1 > > r1_t ()
 Access R1 time part.
 
Eigen::Map< const Eigen::Vector< Scalar, 1 > > r1_t () const
 Const access R1 time part.
 
template<typename EigenDerived >
Eigen::Vector4< Scalaroperator* (const Eigen::MatrixBase< EigenDerived > &v) const
 Tranformation action on (x, y, z, t) space-time vector.
 
template<typename EigenDerived >
Eigen::Matrix< Scalar, 4, 10 > dr_action (const Eigen::MatrixBase< EigenDerived > &v) const
 Jacobian of rotation action w.r.t. group.
 
- Public Member Functions inherited from LieGroupBase< _Derived >
autocoeffs () const
 Access underlying storages.
 
const autocoeffs () const
 Const access underlying storages.
 
autodata () const
 Access raw pointer.
 
const autodata () const
 Const access raw pointer.
 
_Derivedoperator= (const LieGroupBase< OtherDerived > &o) noexcept
 
Eigen::Index dof () const noexcept
 Dynamic size (degrees of freedom).
 
void setIdentity () noexcept
 Set to group identity element.
 
void setRandom () noexcept
 Set to a random element.
 
Matrix matrix () const noexcept
 Return as matrix Lie group element in \( \mathbb{R}^{\mathtt{dim} \times \mathtt{dim}} \).
 
bool isApprox (const LieGroupBase< OtherDerived > &o, const Scalar &eps=Eigen::NumTraits< Scalar >::dummy_precision()) const noexcept
 Check if (approximately) equal to other element o.
 
CastT< NewScalarcast () const noexcept
 Cast to different scalar type.
 
PlainObject operator* (const LieGroupBase< OtherDerived > &o) const noexcept
 Group binary composition operation.
 
_Derivedoperator*= (const LieGroupBase< OtherDerived > &o) noexcept
 Inplace group binary composition operation.
 
PlainObject inverse () const noexcept
 Group inverse operation.
 
Tangent log () const noexcept
 Lie group logarithm.
 
TangentMap Ad () const noexcept
 Lie group adjoint.
 
PlainObject operator+ (const Eigen::MatrixBase< TangentDerived > &a) const noexcept
 Right-plus.
 
_Derivedoperator+= (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Inplace right-plus: \( \mathbf{x} \leftarrow \mathbf{x} \circ \exp(\mathbf{a}) \).
 
Tangent operator- (const LieGroupBase< OtherDerived > &xo) const noexcept
 Right-minus.
 

Public Attributes

 SMOOTH_INHERIT_TYPEDEFS
 

Additional Inherited Members

- Public Types inherited from LieGroupBase< _Derived >
using Scalar = typename traits::Scalar
 Scalar type.
 
using Matrix = Eigen::Matrix< Scalar, Dim, Dim >
 Lie group matrix type.
 
using Tangent = Eigen::Matrix< Scalar, Dof, 1 >
 Lie group parameterized tangent type.
 
using TangentMap = Eigen::Matrix< Scalar, Dof, Dof >
 Matrix representing map between tangent elements.
 
using Hessian = Eigen::Matrix< Scalar, Dof, Dof *Dof >
 Plain return type with different scalar.
 
using CastT = typename traits::template PlainObject< NewScalar >
 Plain return type with different scalar.
 
using PlainObject = CastT< Scalar >
 Plain return type.
 
- Static Public Member Functions inherited from LieGroupBase< _Derived >
static PlainObject Identity () noexcept
 Construct the identity element.
 
static PlainObject Random () noexcept
 Construct a random element.
 
static PlainObject exp (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Lie group exponential map.
 
static Matrix hat (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Lie algebra hat map.
 
static Tangent vee (const Eigen::MatrixBase< MatrixDerived > &A) noexcept
 Lie alebra vee map.
 
static TangentMap ad (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Lie algebra adjoint.
 
static Tangent lie_bracket (const Eigen::MatrixBase< TangentDerived1 > &a, const Eigen::MatrixBase< TangentDerived2 > &b) noexcept
 Lie algebra bracket.
 
static TangentMap dr_exp (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Right jacobian of the exponential map.
 
static TangentMap dr_expinv (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Inverse of right jacobian of the exponential map.
 
static TangentMap dl_exp (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Left jacobian of the exponential map.
 
static TangentMap dl_expinv (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Inverse of left jacobian of the exponential map.
 
static Hessian d2r_exp (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Right Hessian of the exponential map.
 
static Hessian d2r_expinv (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Right Hessian of the log map.
 
static Hessian d2l_exp (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Left Hessian of the exponential map.
 
static Hessian d2l_expinv (const Eigen::MatrixBase< TangentDerived > &a) noexcept
 Left Hessian of the log map.
 
- Static Public Attributes inherited from LieGroupBase< _Derived >
static constexpr int RepSize
 Number of scalars in internal representation.
 
static constexpr int Dof
 Degrees of freedom of manifold (equal to tangent space dimension).
 
static constexpr int Dim
 Side of Lie group matrix representation.
 
static constexpr bool IsCommutative
 Commutativity of group. A commutative group has a zero Lie bracket.
 
- Protected Types inherited from LieGroupBase< _Derived >
using traits = liebase_info< _Derived >
 CRTP traits.
 
using Impl = typename traits::Impl
 Group-specific Lie group implementation.
 
- Static Protected Attributes inherited from LieGroupBase< _Derived >
static constexpr bool is_mutable
 True if underlying storage supports modification.
 

Detailed Description

template<typename _Derived>
class GalileiBase< _Derived >

Base class for Galielei Lie group types.

Internally represented as \(\mathbb{S}^3 \times \mathbb{R}^3 \times \mathbb{R}^3 \times \mathbb{R} \).

Memory layout

Constraints

Lie group matrix form

\[ \mathbf{X} = \begin{bmatrix} R & v & p \\ 0 & 1 & t \\ 0 & 0 & 1 \end{bmatrix} \in \mathbb{R}^{5 \times 5} \]

where \(R\) is a 3x3 rotation matrix.

Lie algebra matrix form

\[ \mathbf{a}^\wedge = \begin{bmatrix} 0 & -\omega_z & \omega_y & b_x & t_x\\ \omega_z & 0 & -\omega_x & b_y & t_y\\ -\omega_y & \omega_x & 0 & b_y & t_y\\ 0 & 0 & 0 & 0 & s\\ 0 & 0 & 0 & 0 & 1\\ \end{bmatrix} \in \mathbb{R}^{5 \times 5} \]

Definition at line 63 of file galilei.hpp.

Member Function Documentation

◆ dr_action()

template<typename _Derived >
template<typename EigenDerived >
Eigen::Matrix< Scalar, 4, 10 > GalileiBase< _Derived >::dr_action ( const Eigen::MatrixBase< EigenDerived > &  v) const
inline

Jacobian of rotation action w.r.t. group.

\[ \mathrm{d}^r (X v)_X \]

Definition at line 160 of file galilei.hpp.

◆ operator*()

template<typename _Derived >
template<typename EigenDerived >
Eigen::Vector4< Scalar > GalileiBase< _Derived >::operator* ( const Eigen::MatrixBase< EigenDerived > &  v) const
inline

Tranformation action on (x, y, z, t) space-time vector.

(x, t) -> (R x + v t + p, t + tau)

Definition at line 144 of file galilei.hpp.

◆ r1_t() [1/2]

template<typename _Derived >
Eigen::Map< Eigen::Vector< Scalar, 1 > > GalileiBase< _Derived >::r1_t ( )
inline

Access R1 time part.

Definition at line 124 of file galilei.hpp.

◆ r1_t() [2/2]

template<typename _Derived >
Eigen::Map< const Eigen::Vector< Scalar, 1 > > GalileiBase< _Derived >::r1_t ( ) const
inline

Const access R1 time part.

Definition at line 133 of file galilei.hpp.

◆ r3_p() [1/2]

template<typename _Derived >
Eigen::Map< Eigen::Vector3< Scalar > > GalileiBase< _Derived >::r3_p ( )
inline

Access R3 position part.

Definition at line 107 of file galilei.hpp.

◆ r3_p() [2/2]

template<typename _Derived >
Eigen::Map< const Eigen::Vector3< Scalar > > GalileiBase< _Derived >::r3_p ( ) const
inline

Const access R3 position part.

Definition at line 116 of file galilei.hpp.

◆ r3_v() [1/2]

template<typename _Derived >
Eigen::Map< Eigen::Vector3< Scalar > > GalileiBase< _Derived >::r3_v ( )
inline

Access R3 velocity part.

Definition at line 90 of file galilei.hpp.

◆ r3_v() [2/2]

template<typename _Derived >
Eigen::Map< const Eigen::Vector3< Scalar > > GalileiBase< _Derived >::r3_v ( ) const
inline

Const access R3 velocity part.

Definition at line 99 of file galilei.hpp.

◆ so3() [1/2]

template<typename _Derived >
Map< SO3< Scalar > > GalileiBase< _Derived >::so3 ( )
inline

Access SO(3) part.

Definition at line 76 of file galilei.hpp.

◆ so3() [2/2]

template<typename _Derived >
Map< const SO3< Scalar > > GalileiBase< _Derived >::so3 ( ) const
inline

Const access SO(3) part.

Definition at line 85 of file galilei.hpp.

Member Data Documentation

◆ SMOOTH_INHERIT_TYPEDEFS

template<typename _Derived >
GalileiBase< _Derived >::SMOOTH_INHERIT_TYPEDEFS

Definition at line 71 of file galilei.hpp.


The documentation for this class was generated from the following file: