aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
 
Loading...
Searching...
No Matches
aligator::ManifoldAbstractTpl< _Scalar > Struct Template Referenceabstract

Base class for manifolds, to use in cost funcs, solvers... More...

#include <aligator/core/manifold-base.hpp>

Inheritance diagram for aligator::ManifoldAbstractTpl< _Scalar >:
[legend]

Public Types

using Scalar = _Scalar
 
using TangentSpaceType = VectorSpaceTpl<Scalar, Eigen::Dynamic>
 Typedef for the tangent space, as a manifold.
 

Public Member Functions

 ALIGATOR_DYNAMIC_TYPEDEFS (Scalar)
 Scalar type.
 
virtual ~ManifoldAbstractTpl ()=default
 
virtual int nx () const =0
 Get manifold representation dimension.
 
virtual int ndx () const =0
 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.
 
virtual bool isNormalized (const ConstVectorRef &) const
 Check if the input vector x is a viable element of the manifold.
 
TangentSpaceType tangentSpace () const
 Return an object representing the tangent space as a manifold.
 
Operations
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
 
Allocated overloads.
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

virtual void integrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const =0
 Perform the manifold integration operation.
 
virtual void Jintegrate_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
 
virtual void JintegrateTransport_impl (const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
 
virtual void difference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const =0
 Implementation of the manifold retraction operation.
 
virtual void Jdifference_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const =0
 
virtual void interpolate_impl (const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
 Interpolation operation.
 
virtual void neutral_impl (VectorRef out) const
 
virtual void rand_impl (VectorRef out) const
 

Detailed Description

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

Base class for manifolds, to use in cost funcs, solvers...

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

Member Typedef Documentation

◆ Scalar

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

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

◆ TangentSpaceType

template<typename _Scalar>
using aligator::ManifoldAbstractTpl< _Scalar >::TangentSpaceType = VectorSpaceTpl<Scalar, Eigen::Dynamic>

Typedef for the tangent space, as a manifold.

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

Constructor & Destructor Documentation

◆ ~ManifoldAbstractTpl()

template<typename _Scalar>
virtual aligator::ManifoldAbstractTpl< _Scalar >::~ManifoldAbstractTpl ( )
virtualdefault

Member Function Documentation

◆ ALIGATOR_DYNAMIC_TYPEDEFS()

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

Scalar type.

◆ nx()

◆ ndx()

◆ neutral() [1/2]

template<typename _Scalar>
VectorXs aligator::ManifoldAbstractTpl< _Scalar >::neutral ( ) const
inline

Get the neutral element \(e \in M\) from the manifold (if this makes sense).

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

◆ neutral() [2/2]

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::neutral ( VectorRef out) const
inline

Get the neutral element \(e \in M\) from the manifold (if this makes sense).

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

◆ rand() [1/2]

template<typename _Scalar>
VectorXs aligator::ManifoldAbstractTpl< _Scalar >::rand ( ) const
inline

Sample a random point \(x \in M\) on the manifold.

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

◆ rand() [2/2]

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::rand ( VectorRef out) const
inline

Sample a random point \(x \in M\) on the manifold.

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

◆ isNormalized()

◆ tangentSpace()

template<typename _Scalar>
TangentSpaceType aligator::ManifoldAbstractTpl< _Scalar >::tangentSpace ( ) const
inline

Return an object representing the tangent space as a manifold.

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

◆ integrate() [1/2]

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::integrate ( const ConstVectorRef & x,
const ConstVectorRef & v,
VectorRef out ) const

Manifold integration operation \(x \oplus v\).

◆ Jintegrate()

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

Jacobian of the integation operation.

◆ JintegrateTransport()

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::JintegrateTransport ( const ConstVectorRef & x,
const ConstVectorRef & v,
MatrixRef Jout,
int arg ) const
inline

Perform the parallel transport operation.

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

◆ difference() [1/2]

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::difference ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
VectorRef out ) const

Manifold difference/retraction operation \(x_1 \ominus x_0\).

◆ Jdifference()

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

Jacobian of the retraction operation.

◆ interpolate() [1/2]

template<typename _Scalar>
void aligator::ManifoldAbstractTpl< _Scalar >::interpolate ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
const Scalar & u,
VectorRef out ) const

◆ integrate() [2/2]

template<typename _Scalar>
VectorXs aligator::ManifoldAbstractTpl< _Scalar >::integrate ( const ConstVectorRef & x,
const ConstVectorRef & v ) const
inline

Manifold integration operation \(x \oplus v\).

Out-of-place variant of integration operator.

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

◆ difference() [2/2]

template<typename _Scalar>
VectorXs aligator::ManifoldAbstractTpl< _Scalar >::difference ( const ConstVectorRef & x0,
const ConstVectorRef & x1 ) const
inline

Manifold difference/retraction operation \(x_1 \ominus x_0\).

Out-of-place version of diff operator.

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

◆ interpolate() [2/2]

template<typename _Scalar>
VectorXs aligator::ManifoldAbstractTpl< _Scalar >::interpolate ( const ConstVectorRef & x0,
const ConstVectorRef & x1,
const Scalar & u ) const
inline

Interpolation operation.

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

◆ integrate_impl()

◆ Jintegrate_impl()

◆ JintegrateTransport_impl()

◆ difference_impl()

◆ Jdifference_impl()

◆ interpolate_impl()

◆ neutral_impl()

◆ rand_impl()


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