7#include <crocoddyl/core/cost-base.hpp>
8#include <crocoddyl/core/action-base.hpp>
14template <
typename _Scalar>
20 using Base = CostAbstractTpl<Scalar>;
29 :
Base(get_state_wrap(cost->get_state()), (int)cost->get_nu()),
34 boost::shared_ptr<CrocActionModel> action_model)
35 :
Base(get_state_wrap(action_model->get_state()),
36 (int)action_model->get_nu()),
39 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
41 using Data = CrocCostDataWrapperTpl<Scalar>;
42 Data &d =
static_cast<Data &
>(data);
45 d.value_ = d.croc_cost_data_->cost;
48 d.value_ = d.croc_act_data_->cost;
54 using Data = CrocCostDataWrapperTpl<Scalar>;
55 Data &d =
static_cast<Data &
>(data);
58 d.Lx_ = d.croc_cost_data_->Lx;
59 d.Lu_ = d.croc_cost_data_->Lu;
62 d.Lx_ = d.croc_act_data_->Lx;
63 d.Lu_ = d.croc_act_data_->Lu;
69 using Data = CrocCostDataWrapperTpl<Scalar>;
70 Data &d =
static_cast<Data &
>(data);
73 d.Lxx_ = d.croc_cost_data_->Lxx;
74 d.Lxu_ = d.croc_cost_data_->Lxu;
75 d.Luu_ = d.croc_cost_data_->Luu;
78 d.Lxx_ = d.croc_act_data_->Lxx;
79 d.Lxu_ = d.croc_act_data_->Lxu;
80 d.Luu_ = d.croc_act_data_->Luu;
86 boost::shared_ptr<crocoddyl::ActionDataAbstractTpl<Scalar>> am_data =
88 return std::make_shared<CrocCostDataWrapperTpl<Scalar>>(am_data);
91 "crocoddyl cost model only.");
97 get_state_wrap(boost::shared_ptr<crocoddyl::StateAbstractTpl<Scalar>> state) {
98 return std::make_shared<StateWrap>(state);
102template <
typename Scalar>
104 using CostData = ::crocoddyl::CostDataAbstractTpl<Scalar>;
105 using ActionData = ::crocoddyl::ActionDataAbstractTpl<Scalar>;
106 using Base = CostDataAbstractTpl<Scalar>;
111 :
Base((int)crocdata->Lx.rows(), (int)crocdata->Lu.rows()),
115 :
Base((int)actdata->Lx.rows(), (int)actdata->Lu.rows()),
#define ALIGATOR_DOMAIN_ERROR(msg)
Stage costs for control problems.
CrocCostDataWrapperTpl(const boost::shared_ptr< ActionData > &actdata)
CrocCostDataWrapperTpl(const boost::shared_ptr< CostData > &crocdata)
::crocoddyl::ActionDataAbstractTpl< Scalar > ActionData
::crocoddyl::CostDataAbstractTpl< Scalar > CostData
boost::shared_ptr< CostData > croc_cost_data_
boost::shared_ptr< ActionData > croc_act_data_
CrocCostModelWrapperTpl(boost::shared_ptr< CrocCostModel > cost)
Constructor from a crocoddyl cost model.
void computeGradients(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Compute the cost gradients .
boost::shared_ptr< CrocCostModel > croc_cost_
StateWrapperTpl< Scalar > StateWrap
shared_ptr< BaseData > createData() const
crocoddyl::ActionModelAbstractTpl< Scalar > CrocActionModel
CrocCostModelWrapperTpl(boost::shared_ptr< CrocActionModel > action_model)
Constructor using a terminal action model.
void computeHessians(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Compute the cost Hessians .
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
Evaluate the cost function.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
crocoddyl::CostModelAbstractTpl< Scalar > CrocCostModel
boost::shared_ptr< CrocActionModel > action_model_