gtsam
Loading...
Searching...
No Matches
gtsam::SemidirectLieGroup< G, H, Action > Class Template Reference

Detailed Description

template<typename G, typename H, typename Action>
class gtsam::SemidirectLieGroup< G, H, Action >

Left semidirect product G ⋉ H induced by Action.

The group law is (g1,h1)(g2,h2) = (g1 g2, h1 Action(g1,h2)). H must be a fixed-size Eigen vector, and Action must be a default- constructible left GroupAction with an infinitesimal generator. Standard Lie-group operations and their Jacobians are inherited from LieGroup; this class supplies the semidirect law, action-specific charts, adjoints, and augmented-matrix exponential/logarithmic kernels.

Inheritance diagram for gtsam::SemidirectLieGroup< G, H, Action >:

Public Member Functions

 SemidirectLieGroup (const G &g, const H &h)
 SemidirectLieGroup (const Base &base)
size_t dim () const
SemidirectLieGroup operator* (const SemidirectLieGroup &other) const
SemidirectLieGroup inverse () const
SemidirectLieGroup retract (const TangentVector &v, ChartJacobian H1={}, ChartJacobian H2={}) const
TangentVector localCoordinates (const SemidirectLieGroup &other, ChartJacobian H1={}, ChartJacobian H2={}) const
Jacobian AdjointMap () const
void print (const std::string &s="") const
bool equals (const SemidirectLieGroup &other, double tol=1e-9) const
Class between (const Class &g) const
Class between (const Class &g, ChartJacobian H1, ChartJacobian H2={}) const
SOn between (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
Class compose (const Class &g) const
Class compose (const Class &g, ChartJacobian H1, ChartJacobian H2={}) const
SOn compose (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
Class expmap (const TangentVector &v) const
 expmap as required by manifold concept Applies exponential map to v and composes with *this
template<class C = Class, class = internal::ExpmapWithJacobian<C, TangentVector, ChartJacobian>>
Class expmap (const TangentVector &v, ChartJacobian H1, ChartJacobian H2={}) const
 expmap with optional derivatives, when the class provides them
Class inverse (ChartJacobian H) const
TangentVector logmap (const Class &g) const
 logmap as required by manifold concept Applies logarithmic map to group element that takes *this to g
template<class C = Class, class = internal::LogmapWithJacobian<C, ChartJacobian>>
TangentVector logmap (const Class &g, ChartJacobian H1, ChartJacobian H2={}) const
 logmap with optional derivatives, when the class provides them
Public Member Functions inherited from gtsam::LieGroup< SemidirectLieGroup< G, H, Action >, internal::dimensionSum(traits< G >::dimension, traits< H >::dimension)>
SOn compose (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
SOn between (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
GTSAM_EXPORT SOn compose (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
GTSAM_EXPORT SOn between (const SOn &g, DynamicJacobian H1, DynamicJacobian H2) const
std::enable_if_t< M !=Eigen::Dynamic, int > dim () const
 Provided fixed dimension in dim() if needed.
const SemidirectLieGroup< G, H, Action > & derived () const
SemidirectLieGroup< G, H, Action > inverse (ChartJacobian H) const
SemidirectLieGroup< G, H, Action > expmap (const TangentVector &v) const
 expmap as required by manifold concept Applies exponential map to v and composes with *this
TangentVector logmap (const SemidirectLieGroup< G, H, Action > &g) const
 logmap as required by manifold concept Applies logarithmic map to group element that takes *this to g
SemidirectLieGroup< G, H, Action > retract (const TangentVector &v) const
 retract as required by manifold concept: applies v at *this
TangentVector localCoordinates (const SemidirectLieGroup< G, H, Action > &g) const
 localCoordinates as required by manifold concept: finds tangent vector between *this and g

Static Public Member Functions

static SemidirectLieGroup Identity ()
static SemidirectLieGroup Expmap (const TangentVector &xi, ChartJacobian D={})
static SemidirectLieGroup Expmap (const Eigen::Ref< const typename traits< G >::TangentVector > &u, const Eigen::Ref< const typename traits< H >::TangentVector > &v, OptionalJacobian< Eigen::Dynamic, Eigen::Dynamic > H1={}, OptionalJacobian< Eigen::Dynamic, Eigen::Dynamic > H2={})
static TangentVector Logmap (const SemidirectLieGroup &p, ChartJacobian D={})
static TangentVector LocalCoordinates (const SemidirectLieGroup &p, ChartJacobian D={})
static Jacobian adjointMap (const TangentVector &xi)
static constexpr int Dim ()
 Static method to get the dimension (compile-time or dynamic).
Static Public Member Functions inherited from gtsam::LieGroup< SemidirectLieGroup< G, H, Action >, internal::dimensionSum(traits< G >::dimension, traits< H >::dimension)>
static constexpr int Dim ()
 Static method to get the dimension (compile-time or dynamic).
static SemidirectLieGroup< G, H, Action > Retract (const TangentVector &v)
 Retract at origin: possible in Lie group because it has an identity.
static TangentVector LocalCoordinates (const SemidirectLieGroup< G, H, Action > &g)
 LocalCoordinates at origin: possible in Lie group because it has an identity.

Static Public Attributes

static constexpr auto dimension
Static Public Attributes inherited from gtsam::LieGroup< SemidirectLieGroup< G, H, Action >, internal::dimensionSum(traits< G >::dimension, traits< H >::dimension)>
static constexpr auto dimension

Public Types

using This = SemidirectLieGroup<G, H, Action>
using Base = std::pair<G, H>
using LieBase
using TangentVector = typename LieBase::TangentVector
using ChartJacobian = typename LieBase::ChartJacobian
using Jacobian = typename LieBase::Jacobian
using ChartAtOrigin = internal::ChartAtIdentity<This, dimension>
using Jacobian1 = typename traits<G>::Jacobian
using Jacobian2 = typename traits<H>::Jacobian
using ActionJacobianG
using group_flavor = multiplicative_group_tag
Public Types inherited from gtsam::LieGroup< SemidirectLieGroup< G, H, Action >, internal::dimensionSum(traits< G >::dimension, traits< H >::dimension)>
typedef OptionalJacobian< N, N > ChartJacobian
typedef Eigen::Matrix< double, N, N > Jacobian
typedef Eigen::Matrix< double, N, 1 > TangentVector

Static Protected Attributes

static constexpr int n = traits<G>::dimension
static constexpr int m = traits<H>::dimension
static constexpr bool firstDynamic = n == Eigen::Dynamic

Member Typedef Documentation

◆ ActionJacobianG

template<typename G, typename H, typename Action>
using gtsam::SemidirectLieGroup< G, H, Action >::ActionJacobianG
Initial value:
std::conditional_t<firstDynamic, Matrix, Eigen::Matrix<double, m, n>>

◆ LieBase

template<typename G, typename H, typename Action>
using gtsam::SemidirectLieGroup< G, H, Action >::LieBase
Initial value:
constexpr int dimensionSum(int n, int m)
Sum compile-time dimensions, propagating Eigen::Dynamic.
Definition Lie.h:46
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
A CRTP helper class that implements Lie group methods Prerequisites: methods operator*,...
Definition Lie.h:114

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