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();
42 const boost::shared_ptr<DifferentialActionModelAbstract>& get_differential()
const;
43 const Scalar& get_dt()
const;
45 void set_dt(
const Scalar& dt);
46 void set_differential(boost::shared_ptr<DifferentialActionModelAbstract> model);
58 boost::shared_ptr<DifferentialActionModelAbstract> differential_;
61 bool with_cost_residual_;
62 bool enable_integration_;
65 template <
typename _Scalar>
66 struct IntegratedActionDataEulerTpl :
public ActionDataAbstractTpl<_Scalar> {
67 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
69 typedef _Scalar Scalar;
70 typedef MathBaseTpl<Scalar> MathBase;
71 typedef ActionDataAbstractTpl<Scalar> Base;
72 typedef typename MathBase::VectorXs VectorXs;
73 typedef typename MathBase::MatrixXs MatrixXs;
75 template <
template <
typename Scalar>
class Model>
76 explicit IntegratedActionDataEulerTpl(Model<Scalar>*
const model) : Base(model) {
77 differential = model->get_differential()->createData();
78 const std::size_t& ndx = model->get_state()->get_ndx();
79 dx = VectorXs::Zero(ndx);
81 ~IntegratedActionDataEulerTpl() {}
83 boost::shared_ptr<DifferentialActionDataAbstractTpl<Scalar> > differential;
103 #include "crocoddyl/core/integrator/euler.hxx" 105 #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.
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.