12using xyz::polymorphic;
44 void virtual forward(
const ConstVectorRef &x,
const ConstVectorRef &u,
45 Data &data)
const = 0;
48 void virtual dForward(
const ConstVectorRef &x,
const ConstVectorRef &u,
49 Data &data)
const = 0;
52 return std::make_shared<Data>(*
this);
116 oss <<
"ExplicitDynamicsData { ";
117 oss << fmt::format(
"ndx: {:d}, ", self.
ndx1);
118 oss << fmt::format(
"nu: {:d}", self.
nu);
124#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
125extern template struct ExplicitDynamicsModelTpl<context::Scalar>;
126extern template struct ExplicitDynamicsDataTpl<context::Scalar>;
Specific data struct for explicit dynamics ExplicitDynamicsModelTpl.
ExplicitDynamicsDataTpl(int ndx1, int nu, int nx2, int ndx2)
ExplicitDynamicsDataTpl(const Model &model)
ExplicitDynamicsModelTpl< Scalar > Model
friend std::ostream & operator<<(std::ostream &oss, const ExplicitDynamicsDataTpl &self)
virtual ~ExplicitDynamicsDataTpl()=default
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Explicit forward dynamics model .
const Manifold & space_next() const
ExplicitDynamicsDataTpl< Scalar > Data
static constexpr bool is_explicit
virtual ~ExplicitDynamicsModelTpl()=default
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const =0
Evaluate the forward discrete dynamics.
virtual shared_ptr< Data > createData() const
polymorphic< Manifold > space_next_
ManifoldAbstractTpl< Scalar > Manifold
polymorphic< Manifold > space_
ExplicitDynamicsModelTpl(const polymorphic< Manifold > &space, const int nu)
Constructor requires providing the next state's manifold.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const =0
Compute the Jacobians of the forward dynamics.
const Manifold & space() const
Base class for manifolds, to use in cost funcs, solvers...
polymorphic< Manifold > space_next_