21 virtual int nx()
const = 0;
23 virtual int ndx()
const = 0;
48 virtual bool isNormalized(
const ConstVectorRef & )
const {
return true; }
58 void integrate(
const ConstVectorRef &x,
const ConstVectorRef &v,
62 void Jintegrate(
const ConstVectorRef &x,
const ConstVectorRef &v,
63 MatrixRef Jout,
int arg)
const;
68 MatrixRef Jout,
int arg)
const {
69 assert(Jout.rows() == v.size());
74 void difference(
const ConstVectorRef &x0,
const ConstVectorRef &x1,
78 void Jdifference(
const ConstVectorRef &x0,
const ConstVectorRef &x1,
79 MatrixRef Jout,
int arg)
const;
81 void interpolate(
const ConstVectorRef &x0,
const ConstVectorRef &x1,
82 const Scalar &u, VectorRef out)
const;
90 VectorXs
integrate(
const ConstVectorRef &x,
const ConstVectorRef &v)
const {
100 const ConstVectorRef &x1)
const {
107 VectorXs
interpolate(
const ConstVectorRef &x0,
const ConstVectorRef &x1,
119 VectorRef out)
const = 0;
122 MatrixRef Jout,
int arg)
const = 0;
125 const ConstVectorRef &v, MatrixRef Jout,
130 const ConstVectorRef &x1,
131 VectorRef out)
const = 0;
134 const ConstVectorRef &x1, MatrixRef Jout,
139 const ConstVectorRef &x1,
const Scalar &u,
140 VectorRef out)
const {
146 assert(out.size() ==
nx());
151 assert(out.size() ==
nx());
158#include "aligator/core/manifold-base.hxx"
Base class for manifolds, to use in cost funcs, solvers...
VectorSpaceTpl< Scalar, Eigen::Dynamic > TangentSpaceType
virtual void Jdifference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const =0
VectorXs rand() const
Sample a random point on the manifold.
void neutral(VectorRef out) const
Get the neutral element from the manifold (if this makes sense).
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Scalar type.
void difference(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const
Manifold difference/retraction operation .
virtual void JintegrateTransport_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
void Jintegrate(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
Jacobian of the integation operation.
virtual void rand_impl(VectorRef out) const
void interpolate(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
void rand(VectorRef out) const
Sample a random point on the manifold.
virtual ~ManifoldAbstractTpl()=default
virtual void interpolate_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u, VectorRef out) const
Interpolation operation.
virtual int nx() const =0
Get manifold representation dimension.
void integrate(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const
Manifold integration operation .
VectorXs neutral() const
Get the neutral element from the manifold (if this makes sense).
VectorXs integrate(const ConstVectorRef &x, const ConstVectorRef &v) const
Manifold integration operation .
void JintegrateTransport(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const
Perform the parallel transport operation.
VectorXs interpolate(const ConstVectorRef &x0, const ConstVectorRef &x1, const Scalar &u) const
Interpolation operation.
TangentSpaceType tangentSpace() const
Return an object representing the tangent space as a manifold.
virtual void difference_impl(const ConstVectorRef &x0, const ConstVectorRef &x1, VectorRef out) const =0
Implementation of the manifold retraction operation.
virtual void integrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, VectorRef out) const =0
Perform the manifold integration operation.
void Jdifference(const ConstVectorRef &x0, const ConstVectorRef &x1, MatrixRef Jout, int arg) const
Jacobian of the retraction operation.
virtual void Jintegrate_impl(const ConstVectorRef &x, const ConstVectorRef &v, MatrixRef Jout, int arg) const =0
virtual void neutral_impl(VectorRef out) const
virtual int ndx() const =0
Get manifold tangent space dimension.
VectorXs difference(const ConstVectorRef &x0, const ConstVectorRef &x1) const
Manifold difference/retraction operation .
virtual bool isNormalized(const ConstVectorRef &) const
Check if the input vector x is a viable element of the manifold.
Standard Euclidean vector space.