9 #ifndef CROCODDYL_CORE_COST_BASE_HPP_
10 #define CROCODDYL_CORE_COST_BASE_HPP_
12 #include <boost/shared_ptr.hpp>
13 #include <boost/make_shared.hpp>
15 #include "crocoddyl/core/fwd.hpp"
16 #include "crocoddyl/core/state-base.hpp"
17 #include "crocoddyl/core/data-collector-base.hpp"
18 #include "crocoddyl/core/activation-base.hpp"
19 #include "crocoddyl/core/activations/quadratic.hpp"
46 template <
typename _Scalar>
49 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
51 typedef _Scalar Scalar;
58 typedef typename MathBase::VectorXs VectorXs;
59 typedef typename MathBase::MatrixXs MatrixXs;
68 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ActivationModelAbstract> activation,
69 const std::size_t& nu);
79 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ActivationModelAbstract> activation);
90 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state,
const std::size_t& nr,
const std::size_t& nu);
112 virtual void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
113 const Eigen::Ref<const VectorXs>& u) = 0;
124 virtual void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
125 const Eigen::Ref<const VectorXs>& u) = 0;
145 void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
153 void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
158 const boost::shared_ptr<StateAbstract>&
get_state()
const;
163 const boost::shared_ptr<ActivationModelAbstract>&
get_activation()
const;
168 const std::size_t&
get_nu()
const;
173 template <
class ReferenceType>
179 template <
class ReferenceType>
199 template <
typename _Scalar>
201 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
203 typedef _Scalar Scalar;
207 typedef typename MathBase::VectorXs VectorXs;
208 typedef typename MathBase::MatrixXs MatrixXs;
210 template <
template <
typename Scalar>
class Model>
213 activation(model->get_activation()->createData()),
215 Lx(model->get_state()->get_ndx()),
217 Lxx(model->get_state()->get_ndx(), model->get_state()->get_ndx()),
218 Lxu(model->get_state()->get_ndx(), model->get_nu()),
219 Luu(model->get_nu(), model->get_nu()),
220 r(model->get_activation()->get_nr()),
221 Rx(model->get_activation()->get_nr(), model->get_state()->get_ndx()),
222 Ru(model->get_activation()->get_nr(), model->get_nu()) {
235 boost::shared_ptr<ActivationDataAbstract> activation;
252 #include "crocoddyl/core/cost-base.hxx"
254 #endif // CROCODDYL_CORE_COST_BASE_HPP_