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;
137 virtual boost::shared_ptr<CostDataAbstract>
createData(DataCollectorAbstract*
const data);
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()) {
232 virtual ~CostDataAbstractTpl() {}
234 DataCollectorAbstract* shared;
235 boost::shared_ptr<ActivationDataAbstract> activation;
252 #include "crocoddyl/core/cost-base.hxx" 254 #endif // CROCODDYL_CORE_COST_BASE_HPP_ virtual void calcDiff(const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0
Compute the Jacobian and Hessian of cost and its residual vector.
void set_reference(ReferenceType ref)
Modify the cost reference.
Abstract class for cost models.
const boost::shared_ptr< ActivationModelAbstract > & get_activation() const
Return the activation model.
Abstract class for the state representation.
ReferenceType get_reference() const
Return the cost reference.
CostModelAbstractTpl(boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, const std::size_t &nu)
Initialize the cost model.
boost::shared_ptr< ActivationModelAbstract > activation_
Activation model.
virtual void set_referenceImpl(const std::type_info &, const void *)
const boost::shared_ptr< StateAbstract > & get_state() const
Return the state.
virtual void calc(const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0
Compute the cost value and its residual vector.
virtual boost::shared_ptr< CostDataAbstract > createData(DataCollectorAbstract *const data)
Create the cost data.
const std::size_t & get_nu() const
Return the dimension of the control input.
VectorXs unone_
No control vector.
virtual void get_referenceImpl(const std::type_info &, void *) const
std::size_t nu_
Control dimension.
boost::shared_ptr< StateAbstract > state_
State description.