9 #ifndef CROCODDYL_MULTIBODY_COST_BASE_HPP_ 10 #define CROCODDYL_MULTIBODY_COST_BASE_HPP_ 12 #include <boost/shared_ptr.hpp> 13 #include <boost/make_shared.hpp> 15 #include "crocoddyl/multibody/fwd.hpp" 16 #include "crocoddyl/multibody/states/multibody.hpp" 17 #include "crocoddyl/core/data-collector-base.hpp" 18 #include "crocoddyl/core/activation-base.hpp" 19 #include "crocoddyl/core/utils/to-string.hpp" 20 #include "crocoddyl/core/activations/quadratic.hpp" 24 template <
typename _Scalar>
27 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
29 typedef _Scalar Scalar;
36 typedef typename MathBase::VectorXs VectorXs;
37 typedef typename MathBase::MatrixXs MatrixXs;
39 CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state, boost::shared_ptr<ActivationModelAbstract> activation,
40 const std::size_t& nu);
41 CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state, boost::shared_ptr<ActivationModelAbstract> activation);
42 CostModelAbstractTpl(boost::shared_ptr<StateMultibody> state,
const std::size_t& nr,
const std::size_t& nu);
46 virtual void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
47 const Eigen::Ref<const VectorXs>& u) = 0;
48 virtual void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
49 const Eigen::Ref<const VectorXs>& u) = 0;
50 virtual boost::shared_ptr<CostDataAbstract> createData(DataCollectorAbstract*
const data);
52 void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
53 void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
55 const boost::shared_ptr<StateMultibody>& get_state()
const;
56 const boost::shared_ptr<ActivationModelAbstract>& get_activation()
const;
57 const std::size_t& get_nu()
const;
60 void set_reference(T ref);
63 void get_reference(T& ref);
66 virtual void set_referenceImpl(
const std::type_info&,
const void*);
67 virtual void get_referenceImpl(
const std::type_info&,
void*);
69 boost::shared_ptr<StateMultibody> state_;
70 boost::shared_ptr<ActivationModelAbstract> activation_;
75 template <
typename _Scalar>
77 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
79 typedef _Scalar Scalar;
83 typedef typename MathBase::VectorXs VectorXs;
84 typedef typename MathBase::MatrixXs MatrixXs;
86 template <
template <
typename Scalar>
class Model>
89 activation(model->get_activation()->createData()),
91 Lx(model->get_state()->get_ndx()),
93 Lxx(model->get_state()->get_ndx(), model->get_state()->get_ndx()),
94 Lxu(model->get_state()->get_ndx(), model->get_nu()),
95 Luu(model->get_nu(), model->get_nu()),
96 r(model->get_activation()->get_nr()),
97 Rx(model->get_activation()->get_nr(), model->get_state()->get_ndx()),
98 Ru(model->get_activation()->get_nr(), model->get_nu()) {
108 virtual ~CostDataAbstractTpl() {}
110 DataCollectorAbstract* shared;
111 boost::shared_ptr<ActivationDataAbstract> activation;
128 #include "crocoddyl/multibody/cost-base.hxx" 130 #endif // CROCODDYL_MULTIBODY_COST_BASE_HPP_