7#include <proxsuite-nlp/manifold-base.hpp>
19template <
typename _Scalar>
24 using Base = DynamicsModelTpl<Scalar>;
26 using Data = ExplicitDynamicsDataTpl<Scalar>;
37 void virtual forward(
const ConstVectorRef &x,
const ConstVectorRef &u,
38 Data &data)
const = 0;
41 void virtual dForward(
const ConstVectorRef &x,
const ConstVectorRef &u,
42 Data &data)
const = 0;
44 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
45 const ConstVectorRef &y,
BaseData &data)
const;
48 const ConstVectorRef &y,
BaseData &data)
const;
55template <
typename _Scalar>
57 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
60 using Base = StageFunctionDataTpl<Scalar>;
81 const ExplicitDynamicsDataTpl<S> &self);
86 const ExplicitDynamicsDataTpl<S> &self) {
87 oss <<
"ExplicitDynamicsData { ";
88 oss << fmt::format(
"ndx: {:d}, ", self.ndx1);
89 oss << fmt::format(
"nu: {:d}", self.nu);
96#include "aligator/core/explicit-dynamics.hxx"
98#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
99#include "aligator/core/explicit-dynamics.txx"
std::ostream & operator<<(std::ostream &oss, const ExplicitDynamicsDataTpl< S > &self)
Dynamics model: describes system dynamics through an implicit relation .
ExplicitDynamicsDataTpl(const int ndx1, const int nu, const int nx2, const int ndx2)
VectorXs dx_
Difference vector between current state x and xnext_.
MatrixXs Jtmp_xnext
Jacobian.
friend std::ostream & operator<<(std::ostream &oss, const ExplicitDynamicsDataTpl< S > &self)
virtual ~ExplicitDynamicsDataTpl()=default
VectorXs xnext_
Model next state.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
Explicit forward dynamics model .
ExplicitDynamicsModelTpl(ManifoldPtr next_state, const int nu)
Constructor requires providing the next state's manifold.
virtual ~ExplicitDynamicsModelTpl()=default
virtual shared_ptr< BaseData > createData() const
Instantiate a Data object.
virtual void forward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const =0
Evaluate the forward discrete dynamics.
ManifoldAbstractTpl< Scalar > Manifold
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, BaseData &data) const
void computeJacobians(const ConstVectorRef &x, const ConstVectorRef &u, const ConstVectorRef &y, BaseData &data) const
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
bool is_explicit() const
Check if this dynamics model is implicit or explicit.
virtual void dForward(const ConstVectorRef &x, const ConstVectorRef &u, Data &data) const =0
Compute the Jacobians of the forward dynamics.
shared_ptr< Manifold > ManifoldPtr
MatrixRef Jx_
Jacobian with respect to .
MatrixRef Ju_
Jacobian with respect to .
MatrixRef Jy_
Jacobian with respect to .
VectorXs value_
Function value.
const int nu
Control dimension.