12 #ifndef CROCODDYL_CORE_NUMDIFF_CONTROL_HPP_
13 #define CROCODDYL_CORE_NUMDIFF_CONTROL_HPP_
15 #include <boost/make_shared.hpp>
16 #include <boost/shared_ptr.hpp>
19 #include "crocoddyl/core/control-base.hpp"
20 #include "crocoddyl/core/fwd.hpp"
24 template <
typename _Scalar>
25 class ControlParametrizationModelNumDiffTpl
26 :
public ControlParametrizationModelAbstractTpl<_Scalar> {
28 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
30 typedef _Scalar Scalar;
31 typedef MathBaseTpl<Scalar> MathBase;
32 typedef ControlParametrizationModelAbstractTpl<_Scalar> Base;
33 typedef ControlParametrizationDataNumDiffTpl<_Scalar> Data;
34 typedef ControlParametrizationDataAbstractTpl<_Scalar>
35 ControlParametrizationDataAbstract;
36 typedef typename MathBase::VectorXs VectorXs;
37 typedef typename MathBase::MatrixXs MatrixXs;
54 void calc(
const boost::shared_ptr<ControlParametrizationDataAbstract>& data,
55 const Scalar t,
const Eigen::Ref<const VectorXs>& u)
const;
66 const boost::shared_ptr<ControlParametrizationDataAbstract>& data,
67 const Scalar t,
const Eigen::Ref<const VectorXs>& u)
const;
74 virtual boost::shared_ptr<ControlParametrizationDataAbstract>
createData();
84 void params(
const boost::shared_ptr<ControlParametrizationDataAbstract>& data,
85 const Scalar t,
const Eigen::Ref<const VectorXs>& w)
const;
97 const Eigen::Ref<const VectorXs>& w_ub,
98 Eigen::Ref<VectorXs> u_lb,
99 Eigen::Ref<VectorXs> u_ub)
const;
113 const boost::shared_ptr<ControlParametrizationDataAbstract>& data,
114 const Eigen::Ref<const MatrixXs>& A, Eigen::Ref<MatrixXs> out,
115 const AssignmentOp = setto)
const;
129 const boost::shared_ptr<ControlParametrizationDataAbstract>& data,
130 const Eigen::Ref<const MatrixXs>& A, Eigen::Ref<MatrixXs> out,
131 const AssignmentOp = setto)
const;
138 const boost::shared_ptr<Base>&
get_model()
const;
153 boost::shared_ptr<Base>
163 template <
typename _Scalar>
164 struct ControlParametrizationDataNumDiffTpl
165 :
public ControlParametrizationDataAbstractTpl<_Scalar> {
166 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
168 typedef _Scalar Scalar;
169 typedef MathBaseTpl<Scalar> MathBase;
170 typedef typename MathBase::VectorXs VectorXs;
171 typedef typename MathBase::MatrixXs MatrixXs;
172 typedef ControlParametrizationDataAbstractTpl<Scalar> Base;
174 template <
template <
typename Scalar>
class Model>
175 explicit ControlParametrizationDataNumDiffTpl(Model<Scalar>*
const model)
176 : Base(model),
du(model->get_nu()) {
179 const std::size_t nu = model->get_model()->get_nu();
180 data_0 = model->get_model()->createData();
181 for (std::size_t i = 0; i < nu; ++i) {
182 data_u.push_back(model->get_model()->createData());
186 virtual ~ControlParametrizationDataNumDiffTpl() {}
190 std::vector<boost::shared_ptr<Base> >
199 #include "crocoddyl/core/numdiff/control.hxx"
201 #endif // CROCODDYL_CORE_NUMDIFF_CONTROL_HPP_