aligator  0.15.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
aligator::CartesianProductTpl< _Scalar > Struct Template Reference

The cartesian product of two or more manifolds. More...

#include <aligator/modelling/spaces/cartesian-product.hpp>

Inheritance diagram for aligator::CartesianProductTpl< _Scalar >:
[legend]
Collaboration diagram for aligator::CartesianProductTpl< _Scalar >:
[legend]

Public Types

using Scalar = _Scalar
 
using Base = ManifoldAbstractTpl<Scalar>
 
- Public Types inherited from aligator::ManifoldAbstractTpl< _Scalar >
using Scalar = _Scalar
 
using TangentSpaceType = VectorSpaceTpl<Scalar, Eigen::Dynamic>
 Typedef for the tangent space, as a manifold.
 

Public Member Functions

 ALIGATOR_DYNAMIC_TYPEDEFS (Scalar)
 
const BasegetComponent (std::size_t i) const
 
std::size_t numComponents () const
 
template<class Concrete>
void addComponent (const Concrete &c)
 
template<class Concrete>
void addComponent (Concrete &&c)
 
void addComponent (const CartesianProductTpl &other)
 
 CartesianProductTpl ()
 
 CartesianProductTpl (const CartesianProductTpl &)=default
 
CartesianProductTploperator= (const CartesianProductTpl &)=default
 
 CartesianProductTpl (CartesianProductTpl &&)=default
 
CartesianProductTploperator= (CartesianProductTpl &&)=default
 
 CartesianProductTpl (const std::vector< xyz::polymorphic< Base > > &components)
 
 CartesianProductTpl (std::vector< xyz::polymorphic< Base > > &&components)
 
 CartesianProductTpl (std::initializer_list< xyz::polymorphic< Base > > components)
 
 CartesianProductTpl (const xyz::polymorphic< Base > &left, const xyz::polymorphic< Base > &right)
 
bool isNormalized (const ConstVectorRef &x) const
 Check if the input vector x is a viable element of the manifold.
 
template<class VectorType, class U = std::remove_const_t<VectorType>>
std::vector< U > split_impl (VectorType &x) const
 
template<class VectorType, class U = std::remove_const_t<VectorType>>
std::vector< U > split_vector_impl (VectorType &v) const
 
std::vector< VectorRef > split (VectorRef x) const
 
std::vector< ConstVectorRef > split (const ConstVectorRef &x) const
 
std::vector< VectorRef > split_vector (VectorRef v) const
 
std::vector< ConstVectorRef > split_vector (const ConstVectorRef &v) const
 
VectorXs merge (const std::vector< VectorXs > &xs) const
 
VectorXs merge_vector (const std::vector< VectorXs > &vs) const
 
int ndx () const
 Get manifold tangent space dimension.
 
int nx () const
 Get manifold representation dimension.
 
- Public Member Functions inherited from aligator::ManifoldAbstractTpl< _Scalar >
 ALIGATOR_DYNAMIC_TYPEDEFS (Scalar)
 Scalar type.
 
 ManifoldAbstractTpl (int nx, int ndx)
 
virtual ~ManifoldAbstractTpl ()=default
 
int nx () const
 Get manifold representation dimension.
 
int ndx () const
 Get manifold tangent space dimension.
 
VectorXs neutral () const
 Get the neutral element \(e \in M\) from the manifold (if this makes sense).
 
void neutral (VectorRef out) const
 Get the neutral element \(e \in M\) from the manifold (if this makes sense).
 
VectorXs rand () const
 Sample a random point \(x \in M\) on the manifold.
 
void rand (VectorRef out) const
 Sample a random point \(x \in M\) on the manifold.
 
TangentSpaceType tangentSpace () const
 Return an object representing the tangent space as a manifold.
 
void integrate (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
 Manifold integration operation \(x \oplus v\).
 
void Jintegrate (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 Jacobian of the integation operation.
 
void JintegrateTransport (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 Perform the parallel transport operation.
 
void difference (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
 Manifold difference/retraction operation \(x_1 \ominus x_0\).
 
void Jdifference (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
 Jacobian of the retraction operation.
 
void interpolate (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 
VectorXs integrate (const ConstVectorRef &x, const ConstVectorRef &v) const
 Manifold integration operation \(x \oplus v\).
 
VectorXs difference (const ConstVectorRef &x0, const ConstVectorRef &x1) const
 Manifold difference/retraction operation \(x_1 \ominus x_0\).
 
VectorXs interpolate (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u) const
 Interpolation operation.
 

Protected Member Functions

void _calc_dims ()
 
void neutral_impl (VectorRef out) const
 
void rand_impl (VectorRef out) const
 
void integrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
 Perform the manifold integration operation.
 
void difference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
 Implementation of the manifold retraction operation.
 
void Jintegrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 
void JintegrateTransport_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
 
void Jdifference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
 
- Protected Member Functions inherited from aligator::ManifoldAbstractTpl< _Scalar >
virtual void interpolate_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 Interpolation operation.
 

Static Protected Member Functions

template<class Concrete>
static int _get_nx (const Concrete &c)
 
template<class Concrete>
static int _get_ndx (const Concrete &c)
 
static int _get_nx (const xyz::polymorphic< Base > &c)
 
static int _get_ndx (const xyz::polymorphic< Base > &c)
 

Protected Attributes

std::vector< xyz::polymorphic< Base > > m_components
 
- Protected Attributes inherited from aligator::ManifoldAbstractTpl< _Scalar >
int nx_
 
int ndx_
 

Detailed Description

template<typename _Scalar>
struct aligator::CartesianProductTpl< _Scalar >

The cartesian product of two or more manifolds.

Definition at line 13 of file cartesian-product.hpp.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar>
using aligator::CartesianProductTpl< _Scalar >::Scalar = _Scalar

Definition at line 15 of file cartesian-product.hpp.

◆ Base

template<typename _Scalar>
using aligator::CartesianProductTpl< _Scalar >::Base = ManifoldAbstractTpl<Scalar>

Definition at line 17 of file cartesian-product.hpp.

Constructor & Destructor Documentation

◆ CartesianProductTpl() [1/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( )
inlineexplicit

Definition at line 54 of file cartesian-product.hpp.

◆ CartesianProductTpl() [2/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const CartesianProductTpl< _Scalar > & )
default

◆ CartesianProductTpl() [3/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( CartesianProductTpl< _Scalar > && )
default

◆ CartesianProductTpl() [4/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const std::vector< xyz::polymorphic< Base > > & components)
inline

Definition at line 62 of file cartesian-product.hpp.

◆ CartesianProductTpl() [5/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( std::vector< xyz::polymorphic< Base > > && components)
inline

Definition at line 68 of file cartesian-product.hpp.

◆ CartesianProductTpl() [6/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( std::initializer_list< xyz::polymorphic< Base > > components)
inline

Definition at line 74 of file cartesian-product.hpp.

◆ CartesianProductTpl() [7/7]

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::CartesianProductTpl ( const xyz::polymorphic< Base > & left,
const xyz::polymorphic< Base > & right )
inline

Definition at line 80 of file cartesian-product.hpp.

Member Function Documentation

◆ ALIGATOR_DYNAMIC_TYPEDEFS()

template<typename _Scalar>
aligator::CartesianProductTpl< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS ( Scalar )

◆ getComponent()

template<typename _Scalar>
const Base & aligator::CartesianProductTpl< _Scalar >::getComponent ( std::size_t i) const
inline

Definition at line 22 of file cartesian-product.hpp.

◆ numComponents()

template<typename _Scalar>
std::size_t aligator::CartesianProductTpl< _Scalar >::numComponents ( ) const
inline

Definition at line 24 of file cartesian-product.hpp.

◆ addComponent() [1/3]

template<typename _Scalar>
template<class Concrete>
void aligator::CartesianProductTpl< _Scalar >::addComponent ( const Concrete & c)
inline

Definition at line 26 of file cartesian-product.hpp.

◆ addComponent() [2/3]

template<typename _Scalar>
template<class Concrete>
void aligator::CartesianProductTpl< _Scalar >::addComponent ( Concrete && c)
inline

Definition at line 37 of file cartesian-product.hpp.

◆ addComponent() [3/3]

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::addComponent ( const CartesianProductTpl< _Scalar > & other)
inline

Definition at line 48 of file cartesian-product.hpp.

◆ operator=() [1/2]

template<typename _Scalar>
CartesianProductTpl & aligator::CartesianProductTpl< _Scalar >::operator= ( const CartesianProductTpl< _Scalar > & )
default

◆ operator=() [2/2]

template<typename _Scalar>
CartesianProductTpl & aligator::CartesianProductTpl< _Scalar >::operator= ( CartesianProductTpl< _Scalar > && )
default

◆ isNormalized()

template<typename _Scalar>
bool aligator::CartesianProductTpl< _Scalar >::isNormalized ( const ConstVectorRef & ) const
virtual

Check if the input vector x is a viable element of the manifold.

Reimplemented from aligator::ManifoldAbstractTpl< _Scalar >.

◆ split_impl()

template<typename _Scalar>
template<class VectorType, class U = std::remove_const_t<VectorType>>
std::vector< U > aligator::CartesianProductTpl< _Scalar >::split_impl ( VectorType & x) const

◆ split_vector_impl()

template<typename _Scalar>
template<class VectorType, class U = std::remove_const_t<VectorType>>
std::vector< U > aligator::CartesianProductTpl< _Scalar >::split_vector_impl ( VectorType & v) const

◆ split() [1/2]

template<typename _Scalar>
std::vector< VectorRef > aligator::CartesianProductTpl< _Scalar >::split ( VectorRef x) const
inlinenodiscard

Definition at line 93 of file cartesian-product.hpp.

◆ split() [2/2]

template<typename _Scalar>
std::vector< ConstVectorRef > aligator::CartesianProductTpl< _Scalar >::split ( const ConstVectorRef & x) const
inlinenodiscard

Definition at line 98 of file cartesian-product.hpp.

◆ split_vector() [1/2]

template<typename _Scalar>
std::vector< VectorRef > aligator::CartesianProductTpl< _Scalar >::split_vector ( VectorRef v) const
inlinenodiscard

Definition at line 102 of file cartesian-product.hpp.

◆ split_vector() [2/2]

template<typename _Scalar>
std::vector< ConstVectorRef > aligator::CartesianProductTpl< _Scalar >::split_vector ( const ConstVectorRef & v) const
inlinenodiscard

Definition at line 107 of file cartesian-product.hpp.

◆ merge()

template<typename _Scalar>
VectorXs aligator::CartesianProductTpl< _Scalar >::merge ( const std::vector< VectorXs > & xs) const
nodiscard

◆ merge_vector()

template<typename _Scalar>
VectorXs aligator::CartesianProductTpl< _Scalar >::merge_vector ( const std::vector< VectorXs > & vs) const
nodiscard

◆ _calc_dims()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::_calc_dims ( )
inlineprotected

Definition at line 118 of file cartesian-product.hpp.

◆ _get_nx() [1/2]

template<typename _Scalar>
template<class Concrete>
static int aligator::CartesianProductTpl< _Scalar >::_get_nx ( const Concrete & c)
inlinestaticprotected

Definition at line 127 of file cartesian-product.hpp.

◆ _get_ndx() [1/2]

template<typename _Scalar>
template<class Concrete>
static int aligator::CartesianProductTpl< _Scalar >::_get_ndx ( const Concrete & c)
inlinestaticprotected

Definition at line 130 of file cartesian-product.hpp.

◆ _get_nx() [2/2]

template<typename _Scalar>
static int aligator::CartesianProductTpl< _Scalar >::_get_nx ( const xyz::polymorphic< Base > & c)
inlinestaticprotected

Definition at line 133 of file cartesian-product.hpp.

◆ _get_ndx() [2/2]

template<typename _Scalar>
static int aligator::CartesianProductTpl< _Scalar >::_get_ndx ( const xyz::polymorphic< Base > & c)
inlinestaticprotected

Definition at line 134 of file cartesian-product.hpp.

◆ neutral_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::neutral_impl ( VectorRef out) const
protectedvirtual

◆ rand_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::rand_impl ( VectorRef out) const
protectedvirtual

◆ integrate_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::integrate_impl ( const ConstVectorRef & x,
const ConstVectorRef & v,
VectorRef out ) const
protectedvirtual

Perform the manifold integration operation.

Implements aligator::ManifoldAbstractTpl< _Scalar >.

◆ difference_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::difference_impl ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
VectorRef out ) const
protectedvirtual

Implementation of the manifold retraction operation.

Implements aligator::ManifoldAbstractTpl< _Scalar >.

◆ Jintegrate_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::Jintegrate_impl ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const
protectedvirtual

◆ JintegrateTransport_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::JintegrateTransport_impl ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const
protectedvirtual

◆ Jdifference_impl()

template<typename _Scalar>
void aligator::CartesianProductTpl< _Scalar >::Jdifference_impl ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
MatrixRef Jout,
int arg ) const
protectedvirtual

◆ ndx()

template<typename _Scalar>
int aligator::ManifoldAbstractTpl< Scalar >::ndx ( ) const
inline

Get manifold tangent space dimension.

Definition at line 27 of file manifold-base.hpp.

◆ nx()

template<typename _Scalar>
int aligator::ManifoldAbstractTpl< Scalar >::nx ( ) const
inline

Get manifold representation dimension.

Definition at line 25 of file manifold-base.hpp.

Member Data Documentation

◆ m_components

template<typename _Scalar>
std::vector<xyz::polymorphic<Base> > aligator::CartesianProductTpl< _Scalar >::m_components
protected

Definition at line 116 of file cartesian-product.hpp.


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