9 #ifndef CROCODDYL_CORE_INTEGRATOR_EULER_HPP_ 10 #define CROCODDYL_CORE_INTEGRATOR_EULER_HPP_ 12 #include "crocoddyl/core/fwd.hpp" 13 #include "crocoddyl/core/action-base.hpp" 14 #include "crocoddyl/core/diff-action-base.hpp" 18 template <
typename _Scalar>
19 class IntegratedActionModelEulerTpl :
public ActionModelAbstractTpl<_Scalar> {
21 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
23 typedef _Scalar Scalar;
24 typedef MathBaseTpl<Scalar> MathBase;
25 typedef ActionModelAbstractTpl<Scalar> Base;
26 typedef IntegratedActionDataEulerTpl<Scalar> Data;
27 typedef ActionDataAbstractTpl<Scalar> ActionDataAbstract;
28 typedef DifferentialActionModelAbstractTpl<Scalar> DifferentialActionModelAbstract;
29 typedef typename MathBase::VectorXs VectorXs;
30 typedef typename MathBase::MatrixXs MatrixXs;
32 IntegratedActionModelEulerTpl(boost::shared_ptr<DifferentialActionModelAbstract> model,
33 const Scalar& time_step = Scalar(1e-3),
const bool& with_cost_residual =
true);
34 virtual ~IntegratedActionModelEulerTpl();
36 virtual void calc(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
37 const Eigen::Ref<const VectorXs>& u);
38 virtual void calcDiff(
const boost::shared_ptr<ActionDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
39 const Eigen::Ref<const VectorXs>& u);
40 virtual boost::shared_ptr<ActionDataAbstract> createData();
41 virtual bool checkData(
const boost::shared_ptr<ActionDataAbstract>& data);
43 virtual void quasiStatic(
const boost::shared_ptr<ActionDataAbstract>& data, Eigen::Ref<VectorXs> u,
44 const Eigen::Ref<const VectorXs>& x,
const std::size_t& maxiter = 100,
45 const Scalar& tol = Scalar(1e-9));
47 const boost::shared_ptr<DifferentialActionModelAbstract>& get_differential()
const;
48 const Scalar& get_dt()
const;
50 void set_dt(
const Scalar& dt);
51 void set_differential(boost::shared_ptr<DifferentialActionModelAbstract> model);
63 boost::shared_ptr<DifferentialActionModelAbstract> differential_;
66 bool with_cost_residual_;
67 bool enable_integration_;
70 template <
typename _Scalar>
71 struct IntegratedActionDataEulerTpl :
public ActionDataAbstractTpl<_Scalar> {
72 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
74 typedef _Scalar Scalar;
75 typedef MathBaseTpl<Scalar> MathBase;
76 typedef ActionDataAbstractTpl<Scalar> Base;
77 typedef typename MathBase::VectorXs VectorXs;
78 typedef typename MathBase::MatrixXs MatrixXs;
80 template <
template <
typename Scalar>
class Model>
81 explicit IntegratedActionDataEulerTpl(Model<Scalar>*
const model) : Base(model) {
82 differential = model->get_differential()->createData();
83 const std::size_t& ndx = model->get_state()->get_ndx();
84 dx = VectorXs::Zero(ndx);
86 virtual ~IntegratedActionDataEulerTpl() {}
88 boost::shared_ptr<DifferentialActionDataAbstractTpl<Scalar> > differential;
108 #include "crocoddyl/core/integrator/euler.hxx" 110 #endif // CROCODDYL_CORE_INTEGRATOR_EULER_HPP_ bool has_control_limits_
Indicates whether any of the control limits is finite.
std::size_t nu_
Control dimension.
virtual void quasiStatic(const boost::shared_ptr< ActionDataAbstract > &data, Eigen::Ref< VectorXs > u, const Eigen::Ref< const VectorXs > &x, const std::size_t &maxiter=100, const Scalar &tol=Scalar(1e-9))
Computes the quasic static commands.
VectorXs unone_
Neutral state.
VectorXs u_ub_
Upper control limits.
VectorXs u_lb_
Lower control limits.
boost::shared_ptr< StateAbstract > state_
Model of the state.
std::size_t nr_
Dimension of the cost residual.