crocoddyl  1.9.0
Contact RObot COntrol by Differential DYnamic programming Library (Crocoddyl)
integ-action-base.hpp
1 // BSD 3-Clause License
3 //
4 // Copyright (C) 2021, LAAS-CNRS, University of Edinburgh, University of Oxford,
5 // University of Trento
6 // Copyright note valid unless otherwise stated in individual files.
7 // All rights reserved.
9 
10 #ifndef CROCODDYL_CORE_INTEGRATED_ACTION_BASE_HPP_
11 #define CROCODDYL_CORE_INTEGRATED_ACTION_BASE_HPP_
12 
13 #include "crocoddyl/core/fwd.hpp"
14 #include "crocoddyl/core/action-base.hpp"
15 #include "crocoddyl/core/diff-action-base.hpp"
16 #include "crocoddyl/core/control-base.hpp"
17 #include "crocoddyl/core/utils/deprecate.hpp"
18 
19 namespace crocoddyl {
20 
36 template <typename _Scalar>
37 class IntegratedActionModelAbstractTpl : public ActionModelAbstractTpl<_Scalar> {
38  public:
39  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
40 
41  typedef _Scalar Scalar;
42  typedef MathBaseTpl<Scalar> MathBase;
43  typedef ActionModelAbstractTpl<Scalar> Base;
44  typedef IntegratedActionDataAbstractTpl<Scalar> Data;
45  typedef ActionDataAbstractTpl<Scalar> ActionDataAbstract;
46  typedef DifferentialActionModelAbstractTpl<Scalar> DifferentialActionModelAbstract;
47  typedef ControlParametrizationModelAbstractTpl<Scalar> ControlParametrizationModelAbstract;
48  typedef typename MathBase::VectorXs VectorXs;
49  typedef typename MathBase::MatrixXs MatrixXs;
50 
59  IntegratedActionModelAbstractTpl(boost::shared_ptr<DifferentialActionModelAbstract> model,
60  boost::shared_ptr<ControlParametrizationModelAbstract> control,
61  const Scalar time_step = Scalar(1e-3), const bool with_cost_residual = true);
62 
72  IntegratedActionModelAbstractTpl(boost::shared_ptr<DifferentialActionModelAbstract> model,
73  const Scalar time_step = Scalar(1e-3), const bool with_cost_residual = true);
75 
81  virtual boost::shared_ptr<ActionDataAbstract> createData();
82 
86  const boost::shared_ptr<DifferentialActionModelAbstract>& get_differential() const;
87 
91  const boost::shared_ptr<ControlParametrizationModelAbstract>& get_control() const;
92 
96  const Scalar get_dt() const;
97 
101  void set_dt(const Scalar dt);
102 
103  DEPRECATED("The DifferentialActionModel should be set at construction time",
104  void set_differential(boost::shared_ptr<DifferentialActionModelAbstract> model));
105 
106  protected:
108  using Base::nr_;
109  using Base::nu_;
110  using Base::state_;
111  using Base::u_lb_;
112  using Base::u_ub_;
113  using Base::unone_;
114 
115  void init();
116 
117  boost::shared_ptr<DifferentialActionModelAbstract> differential_;
118  boost::shared_ptr<ControlParametrizationModelAbstract> control_;
119 
120  Scalar time_step_;
121  Scalar time_step2_;
123 };
124 
125 template <typename _Scalar>
127  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
128 
129  typedef _Scalar Scalar;
130  typedef MathBaseTpl<Scalar> MathBase;
131  typedef ActionDataAbstractTpl<Scalar> Base;
132  typedef typename MathBase::VectorXs VectorXs;
133  typedef typename MathBase::MatrixXs MatrixXs;
134 
135  template <template <typename Scalar> class Model>
136  explicit IntegratedActionDataAbstractTpl(Model<Scalar>* const model) : Base(model) {}
137  virtual ~IntegratedActionDataAbstractTpl() {}
138 
139  using Base::cost;
140  using Base::Fu;
141  using Base::Fx;
142  using Base::Lu;
143  using Base::Luu;
144  using Base::Lx;
145  using Base::Lxu;
146  using Base::Lxx;
147  using Base::r;
148  using Base::xnext;
149 };
150 
151 } // namespace crocoddyl
152 
153 /* --- Details -------------------------------------------------------------- */
154 /* --- Details -------------------------------------------------------------- */
155 /* --- Details -------------------------------------------------------------- */
156 #include "crocoddyl/core/integ-action-base.hxx"
157 
158 #endif // CROCODDYL_CORE_INTEGRATED_ACTION_BASE_HPP_
crocoddyl::IntegratedActionModelAbstractTpl::differential_
boost::shared_ptr< DifferentialActionModelAbstract > differential_
Differential action model that is integrated.
Definition: integ-action-base.hpp:117
crocoddyl::ActionDataAbstractTpl
Definition: action-base.hpp:236
crocoddyl::ActionModelAbstractTpl::has_control_limits_
bool has_control_limits_
Indicates whether any of the control limits is finite.
Definition: action-base.hpp:227
crocoddyl::IntegratedActionModelAbstractTpl::with_cost_residual_
bool with_cost_residual_
Flag indicating whether a cost residual is used.
Definition: integ-action-base.hpp:122
crocoddyl::IntegratedActionModelAbstractTpl::set_dt
void set_dt(const Scalar dt)
Set the time step for the integration.
crocoddyl::ActionDataAbstractTpl::Lxu
MatrixXs Lxu
Hessian of the cost function.
Definition: action-base.hpp:276
crocoddyl::MathBaseTpl< Scalar >
crocoddyl::IntegratedActionModelAbstractTpl::createData
virtual boost::shared_ptr< ActionDataAbstract > createData()
Create the integrator data.
crocoddyl::ActionModelAbstractTpl::nu_
std::size_t nu_
Control dimension.
Definition: action-base.hpp:221
crocoddyl::ActionDataAbstractTpl::Lx
VectorXs Lx
Jacobian of the cost function.
Definition: action-base.hpp:273
crocoddyl::IntegratedActionModelAbstractTpl::time_step2_
Scalar time_step2_
Square of the time step used for integration.
Definition: integ-action-base.hpp:121
crocoddyl::IntegratedActionModelAbstractTpl::time_step_
Scalar time_step_
Time step used for integration.
Definition: integ-action-base.hpp:120
crocoddyl::ActionDataAbstractTpl::xnext
VectorXs xnext
evolution state
Definition: action-base.hpp:269
crocoddyl::IntegratedActionModelAbstractTpl::IntegratedActionModelAbstractTpl
IntegratedActionModelAbstractTpl(boost::shared_ptr< DifferentialActionModelAbstract > model, boost::shared_ptr< ControlParametrizationModelAbstract > control, const Scalar time_step=Scalar(1e-3), const bool with_cost_residual=true)
Initialize the integrator.
crocoddyl::ActionDataAbstractTpl::cost
Scalar cost
cost value
Definition: action-base.hpp:268
crocoddyl::ActionDataAbstractTpl::r
VectorXs r
Cost residual.
Definition: action-base.hpp:272
crocoddyl::ActionModelAbstractTpl::state_
boost::shared_ptr< StateAbstract > state_
Model of the state.
Definition: action-base.hpp:223
crocoddyl::ActionModelAbstractTpl::unone_
VectorXs unone_
Neutral state.
Definition: action-base.hpp:224
crocoddyl::IntegratedActionModelAbstractTpl::control_
boost::shared_ptr< ControlParametrizationModelAbstract > control_
Model of the control parametrization.
Definition: integ-action-base.hpp:118
crocoddyl::ActionDataAbstractTpl::Fx
MatrixXs Fx
Jacobian of the dynamics.
Definition: action-base.hpp:270
crocoddyl::ActionModelAbstractTpl::u_lb_
VectorXs u_lb_
Lower control limits.
Definition: action-base.hpp:225
crocoddyl::ActionModelAbstractTpl::u_ub_
VectorXs u_ub_
Upper control limits.
Definition: action-base.hpp:226
crocoddyl::IntegratedActionModelAbstractTpl::get_differential
const boost::shared_ptr< DifferentialActionModelAbstract > & get_differential() const
Return the differential action model associated to this integrated action model.
crocoddyl::IntegratedActionModelAbstractTpl::get_control
const boost::shared_ptr< ControlParametrizationModelAbstract > & get_control() const
Return the control parametrization model associated to this integrated action model.
crocoddyl::ActionDataAbstractTpl::Lu
VectorXs Lu
Jacobian of the cost function.
Definition: action-base.hpp:274
crocoddyl::IntegratedActionModelAbstractTpl::init
void init()
< Neutral state
crocoddyl::ActionDataAbstractTpl::Lxx
MatrixXs Lxx
Hessian of the cost function.
Definition: action-base.hpp:275
crocoddyl::ActionDataAbstractTpl::Fu
MatrixXs Fu
Jacobian of the dynamics.
Definition: action-base.hpp:271
crocoddyl::IntegratedActionModelAbstractTpl::get_dt
const Scalar get_dt() const
Return the time step used for the integration.
crocoddyl::ActionModelAbstractTpl::nr_
std::size_t nr_
Dimension of the cost residual.
Definition: action-base.hpp:222
crocoddyl::IntegratedActionDataAbstractTpl
Definition: fwd.hpp:57
crocoddyl::ActionDataAbstractTpl::Luu
MatrixXs Luu
Hessian of the cost function.
Definition: action-base.hpp:277