template<typename G, typename H>
class gtsam::ProductLieGroup< G, H >
Direct product Lie group G × H.
Operations are componentwise and tangent vectors concatenate the G and H coordinates. Use SemidirectLieGroup when the first factor acts on the second, and TangentLieGroup for the adjoint-action tangent construction. Standard Lie-group operations and their Jacobians are inherited from LieGroup; this class supplies the direct-product law, component charts, adjoints, and exponential/logarithmic kernels.
|
|
typedef multiplicative_group_tag | group_flavor |
|
ProductLieGroup | operator* (const ProductLieGroup &other) const |
| | Group multiplication.
|
|
ProductLieGroup | inverse () const |
| | Group inverse.
|
|
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
|
|
static ProductLieGroup | Identity () |
| | Identity element.
|
|
|
Jacobian | AdjointMap () const |
| | Adjoint map.
|
|
static ProductLieGroup | Expmap (const TangentVector &v, ChartJacobian Hv={}) |
| | Exponential map.
|
|
static ProductLieGroup | Expmap (const Eigen::Ref< const typename traits< G >::TangentVector > &v1, const Eigen::Ref< const typename traits< H >::TangentVector > &v2, OptionalJacobian< Eigen::Dynamic, Eigen::Dynamic > H1={}, OptionalJacobian< Eigen::Dynamic, Eigen::Dynamic > H2={}) |
| | Exponential map from subgroup tangent vectors.
|
|
static TangentVector | Logmap (const ProductLieGroup &p, ChartJacobian Hp={}) |
| | Logarithmic map.
|
|
static TangentVector | LocalCoordinates (const ProductLieGroup &p, ChartJacobian Hp={}) |
| | Local coordinates (same as Logmap).
|
| static Jacobian | adjointMap (const TangentVector &xi) |
| | Static Lie-algebra adjoint ad_xi.
|
|
|
| ProductLieGroup () |
| | Default constructor yields identity.
|
|
| ProductLieGroup (const G &g, const H &h) |
| | Construct from two subgroup elements.
|
|
| ProductLieGroup (const Base &base) |
| | Construct from base pair.
|
|
size_t | dim () const |
| | Return manifold dimension.
|
|
ProductLieGroup | retract (const TangentVector &v, ChartJacobian H1={}, ChartJacobian H2={}) const |
| | Retract to manifold.
|
|
TangentVector | localCoordinates (const ProductLieGroup &g, ChartJacobian H1={}, ChartJacobian H2={}) const |
| | Local coordinates on manifold.
|
|
void | print (const std::string &s="") const |
|
bool | equals (const ProductLieGroup &other, double tol=1e-9) const |
|
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 ProductLieGroup< G, H > & | derived () const |
|
ProductLieGroup< G, H > | inverse (ChartJacobian H) const |
|
ProductLieGroup< G, H > | expmap (const TangentVector &v) const |
| | expmap as required by manifold concept Applies exponential map to v and composes with *this
|
|
TangentVector | logmap (const ProductLieGroup< G, H > &g) const |
| | logmap as required by manifold concept Applies logarithmic map to group element that takes *this to g
|
|
ProductLieGroup< G, H > | retract (const TangentVector &v) const |
| | retract as required by manifold concept: applies v at *this
|
|
TangentVector | localCoordinates (const ProductLieGroup< G, H > &g) const |
| | localCoordinates as required by manifold concept: finds tangent vector between *this and g
|
|
|
using | This = ProductLieGroup<G, H> |
|
using | Base = std::pair<G, H> |
| | Base pair type.
|
| using | LieBase |
|
using | TangentVector = typename LieBase::TangentVector |
|
using | ChartJacobian = typename LieBase::ChartJacobian |
|
using | Jacobian = typename LieBase::Jacobian |
|
using | Jacobian1 = typename traits<G>::Jacobian |
|
using | Jacobian2 = typename traits<H>::Jacobian |
|
typedef OptionalJacobian< N, N > | ChartJacobian |
|
typedef Eigen::Matrix< double, N, N > | Jacobian |
|
typedef Eigen::Matrix< double, N, 1 > | TangentVector |
|
|
template<typename T> |
| static T | defaultIdentity () |
| | Return default identity for fixed-size factors and a placeholder for dynamic ones.
|
|
template<typename T, int ComponentDimension = traits<T>::dimension> |
| static traits< T >::TangentVector | tangentSegment (const TangentVector &v, size_t start, size_t d) |
| | Extract a tangent segment for one factor.
|
|
template<typename T> |
| static traits< T >::Jacobian | componentAdjointMap (const typename traits< T >::TangentVector &xi) |
| | Compute one factor's static algebra adjoint, including vector spaces.
|
|
static TangentVector | makeTangentVector (const typename traits< G >::TangentVector &v1, const typename traits< H >::TangentVector &v2, size_t d1, size_t d2) |
| | Concatenate subgroup tangent vectors into the product tangent.
|
|
static Jacobian | zeroJacobian (size_t d) |
| | Create a zero Jacobian with the requested runtime size.
|