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/residual-base.hpp"
20 #include "crocoddyl/core/activations/quadratic.hpp"
21 #include "crocoddyl/core/utils/deprecate.hpp"
48 template <
typename _Scalar>
51 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
53 typedef _Scalar Scalar;
61 typedef typename MathBase::VectorXs VectorXs;
62 typedef typename MathBase::MatrixXs MatrixXs;
71 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ActivationModelAbstract> activation,
72 boost::shared_ptr<ResidualModelAbstract> residual);
81 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ActivationModelAbstract> activation,
82 const std::size_t nu);
92 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ActivationModelAbstract> activation);
102 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state, boost::shared_ptr<ResidualModelAbstract> residual);
113 CostModelAbstractTpl(boost::shared_ptr<StateAbstract> state,
const std::size_t nr,
const std::size_t nu);
135 virtual void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
136 const Eigen::Ref<const VectorXs>& u) = 0;
147 virtual void calc(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
158 virtual void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x,
159 const Eigen::Ref<const VectorXs>& u) = 0;
170 virtual void calcDiff(
const boost::shared_ptr<CostDataAbstract>& data,
const Eigen::Ref<const VectorXs>& x);
187 const boost::shared_ptr<StateAbstract>&
get_state()
const;
192 const boost::shared_ptr<ActivationModelAbstract>&
get_activation()
const;
197 const boost::shared_ptr<ResidualModelAbstract>&
get_residual()
const;
202 std::size_t
get_nu()
const;
207 template <
class Scalar>
213 template <
class ReferenceType>
219 template <
class ReferenceType>
227 virtual void print(std::ostream& os)
const;
247 template <
typename _Scalar>
249 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
251 typedef _Scalar Scalar;
256 typedef typename MathBase::VectorXs VectorXs;
257 typedef typename MathBase::MatrixXs MatrixXs;
259 template <
template <
typename Scalar>
class Model>
262 activation(model->get_activation()->createData()),
263 residual(model->get_residual()->createData(data)),
265 Lx(model->get_state()->get_ndx()),
267 Lxx(model->get_state()->get_ndx(), model->get_state()->get_ndx()),
268 Lxu(model->get_state()->get_ndx(), model->get_nu()),
269 Luu(model->get_nu(), model->get_nu()) {
278 DEPRECATED(
"Use residual.r",
const VectorXs& get_r()
const {
return residual->r; };)
279 DEPRECATED(
"Use residual.Rx",
const MatrixXs& get_Rx()
const {
return residual->Rx; };)
280 DEPRECATED(
"Use residual.Ru",
const MatrixXs& get_Ru()
const {
return residual->Ru; };)
281 DEPRECATED(
"Use residual.r",
void set_r(
const VectorXs& r) { residual->r = r; };)
282 DEPRECATED(
"Use residual.Rx",
void set_Rx(
const MatrixXs& Rx) { residual->Rx = Rx; };)
283 DEPRECATED(
"Use residual.Ru",
void set_Ru(
const MatrixXs& Ru) { residual->Ru = Ru; };)
286 boost::shared_ptr<ActivationDataAbstract> activation;
287 boost::shared_ptr<ResidualDataAbstract> residual;
301 #include "crocoddyl/core/cost-base.hxx"
303 #endif // CROCODDYL_CORE_COST_BASE_HPP_