16template <
typename _Scalar,
unsigned int arg>
20template <
typename _Scalar>
34 const ConstVectorRef &target)
35 :
Base(xspace->ndx(),
nu, xspace->ndx())
41 template <
typename U,
typename std::enable_if_t<
44 const ConstVectorRef &target)
45 :
Base(xspace.ndx(),
nu, xspace.ndx())
46 ,
space_{std::forward<U>(xspace)}
51 void evaluate(
const ConstVectorRef &x,
Data &data)
const override {
63 "Target parameter invalid (not a viable element of state manifold.)");
68template <
typename _Scalar,
unsigned int arg>
70 static_assert(arg == 1,
"arg value must be 1");
84 typename = std::enable_if_t<!is_polymorphic_of_v<Manifold, U>>>
86 const ConstVectorRef &target)
87 :
Base(ndx, uspace.nx(), uspace.ndx())
88 ,
space_(std::forward<U>(uspace))
95 const ConstVectorRef &target)
96 :
Base(ndx, uspace->nx(), uspace->ndx())
114 void evaluate(
const ConstVectorRef &,
const ConstVectorRef &u,
115 Data &data)
const override {
126 Data &data)
const override {
140 "Target parameter invalid (not a viable element of state manifold.)");
151template <
typename Scalar>
157template <
typename Scalar>
166#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
167#include "aligator/modelling/state-error.txx"
#define ALIGATOR_RUNTIME_ERROR(...)
Base definitions for ternary functions.
constexpr bool is_polymorphic_of_v
detail::StateOrControlErrorResidual< Scalar, 1 > Base
Base class for manifolds, to use in cost funcs, solvers...
Base struct for function data.
const int nu
Control dimension.
StageFunctionTpl(const int ndx, const int nu, const int nr)
detail::StateOrControlErrorResidual< Scalar, 0 > Base
Represents unary functions of the form , with no control (or next-state) arguments.
Standard Euclidean vector space.
StateOrControlErrorResidual(const PolyManifold &xspace, const int nu, const ConstVectorRef &target)
void computeJacobians(const ConstVectorRef &x, Data &data) const override
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
ManifoldAbstractTpl< Scalar > Manifold
void evaluate(const ConstVectorRef &x, Data &data) const override
xyz::polymorphic< Manifold > PolyManifold
ALIGATOR_UNARY_FUNCTION_INTERFACE(Scalar)
StateOrControlErrorResidual(U &&xspace, const int nu, const ConstVectorRef &target)
StageFunctionDataTpl< Scalar > Data
VectorSpaceTpl< Scalar, Eigen::Dynamic > VectorSpace
ManifoldAbstractTpl< Scalar > Manifold
VectorSpaceTpl< Scalar, Eigen::Dynamic > VectorSpace
StateOrControlErrorResidual(const int ndx, const xyz::polymorphic< Manifold > &uspace, const ConstVectorRef &target)
StateOrControlErrorResidual(const int ndx, const ConstVectorRef &target)
Constructor using state space and control space dimensions, the control space is assumed to be Euclid...
StageFunctionTpl< Scalar > Base
StateOrControlErrorResidual(const int ndx, U &&uspace, const ConstVectorRef &target)
Constructor using the state space dimension, control manifold and control target.
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &u, Data &data) const override
Compute Jacobians of this function.
void evaluate(const ConstVectorRef &, const ConstVectorRef &u, Data &data) const override
Evaluate the function.
StateOrControlErrorResidual(const int ndx, const int nu)
StageFunctionDataTpl< Scalar > Data
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
xyz::polymorphic< Manifold > space_