Base class for manifolds, to use in cost funcs, solvers... More...
#include <aligator/core/manifold-base.hpp>
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 |
Base class for manifolds, to use in cost funcs, solvers...
Definition at line 11 of file manifold-base.hpp.
using aligator::ManifoldAbstractTpl< _Scalar >::Scalar = _Scalar |
Definition at line 13 of file manifold-base.hpp.
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.
|
virtualdefault |
aligator::ManifoldAbstractTpl< _Scalar >::ALIGATOR_DYNAMIC_TYPEDEFS | ( | Scalar | ) |
Scalar type.
|
pure virtual |
Get manifold representation dimension.
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
pure virtual |
Get manifold tangent space dimension.
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
inline |
Get the neutral element \(e \in M\) from the manifold (if this makes sense).
Definition at line 27 of file manifold-base.hpp.
|
inline |
Get the neutral element \(e \in M\) from the manifold (if this makes sense).
Definition at line 34 of file manifold-base.hpp.
|
inline |
Sample a random point \(x \in M\) on the manifold.
Definition at line 37 of file manifold-base.hpp.
|
inline |
Sample a random point \(x \in M\) on the manifold.
Definition at line 44 of file manifold-base.hpp.
|
inlinevirtual |
Check if the input vector x
is a viable element of the manifold.
Reimplemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, and aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >.
Definition at line 48 of file manifold-base.hpp.
|
inline |
Return an object representing the tangent space as a manifold.
Definition at line 51 of file manifold-base.hpp.
void aligator::ManifoldAbstractTpl< _Scalar >::integrate | ( | const ConstVectorRef & | x, |
const ConstVectorRef & | v, | ||
VectorRef | out ) const |
Manifold integration operation \(x \oplus v\).
void aligator::ManifoldAbstractTpl< _Scalar >::Jintegrate | ( | const ConstVectorRef & | x, |
const ConstVectorRef & | v, | ||
MatrixRef | Jout, | ||
int | arg ) const |
Jacobian of the integation operation.
|
inline |
Perform the parallel transport operation.
Definition at line 67 of file manifold-base.hpp.
void aligator::ManifoldAbstractTpl< _Scalar >::difference | ( | const ConstVectorRef & | x0, |
const ConstVectorRef & | x1, | ||
VectorRef | out ) const |
Manifold difference/retraction operation \(x_1 \ominus x_0\).
void aligator::ManifoldAbstractTpl< _Scalar >::Jdifference | ( | const ConstVectorRef & | x0, |
const ConstVectorRef & | x1, | ||
MatrixRef | Jout, | ||
int | arg ) const |
Jacobian of the retraction operation.
void aligator::ManifoldAbstractTpl< _Scalar >::interpolate | ( | const ConstVectorRef & | x0, |
const ConstVectorRef & | x1, | ||
const Scalar & | u, | ||
VectorRef | out ) const |
|
inline |
Manifold integration operation \(x \oplus v\).
Out-of-place variant of integration operator.
Definition at line 90 of file manifold-base.hpp.
|
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.
|
inline |
Interpolation operation.
Definition at line 107 of file manifold-base.hpp.
|
protectedpure virtual |
Perform the manifold integration operation.
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
protectedpure virtual |
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
protectedpure virtual |
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
protectedpure virtual |
Implementation of the manifold retraction operation.
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
protectedpure virtual |
Implemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
|
inlineprotectedvirtual |
Interpolation operation.
Reimplemented in aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::TangentBundleTpl< Base >, aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >, aligator::VectorSpaceTpl< _Scalar, _Dim >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar >, aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >, and aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic >.
Definition at line 138 of file manifold-base.hpp.
|
inlineprotectedvirtual |
Reimplemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, and aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >.
Definition at line 145 of file manifold-base.hpp.
|
inlineprotectedvirtual |
Reimplemented in aligator::CartesianProductTpl< _Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::CartesianProductTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< _Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::compat::croc::StateWrapperTpl< Scalar >, aligator::MultibodyConfiguration< _Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::MultibodyConfiguration< Scalar >, aligator::PinocchioLieGroup< _LieGroup >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialEuclideanOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::PinocchioLieGroup< pin::SpecialOrthogonalOperationTpl< D, Scalar > >, aligator::TangentBundleTpl< Base >, and aligator::TangentBundleTpl< MultibodyConfiguration< Scalar > >.
Definition at line 150 of file manifold-base.hpp.