9 #ifndef CROCODDYL_CORE_COSTS_RESIDUAL_COST_HPP_
10 #define CROCODDYL_CORE_COSTS_RESIDUAL_COST_HPP_
12 #include "crocoddyl/core/cost-base.hpp"
13 #include "crocoddyl/core/fwd.hpp"
14 #include "crocoddyl/core/residual-base.hpp"
38 template <
typename _Scalar>
41 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
44 typedef _Scalar Scalar;
52 typedef typename MathBase::VectorXs VectorXs;
53 typedef typename MathBase::MatrixXs MatrixXs;
63 std::shared_ptr<ActivationModelAbstract> activation,
64 std::shared_ptr<ResidualModelAbstract> residual);
75 std::shared_ptr<ResidualModelAbstract> residual);
85 virtual void calc(
const std::shared_ptr<CostDataAbstract>& data,
86 const Eigen::Ref<const VectorXs>& x,
87 const Eigen::Ref<const VectorXs>& u)
override;
98 virtual void calc(
const std::shared_ptr<CostDataAbstract>& data,
99 const Eigen::Ref<const VectorXs>& x)
override;
108 virtual void calcDiff(
const std::shared_ptr<CostDataAbstract>& data,
109 const Eigen::Ref<const VectorXs>& x,
110 const Eigen::Ref<const VectorXs>& u)
override;
123 virtual void calcDiff(
const std::shared_ptr<CostDataAbstract>& data,
124 const Eigen::Ref<const VectorXs>& x)
override;
141 template <
typename NewScalar>
149 virtual void print(std::ostream& os)
const override;
159 template <
typename _Scalar>
161 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
163 typedef _Scalar Scalar;
168 template <
template <
typename Scalar>
class Model>
171 :
Base(model, data) {}
174 using Base::activation;
181 using Base::residual;
190 #include "crocoddyl/core/costs/residual.hxx"
Abstract class for cost models.
std::shared_ptr< ActivationModelAbstract > activation_
Activation model.
std::shared_ptr< StateAbstract > state_
State description.
std::size_t nu_
Control dimension.
VectorXs unone_
No control vector.
std::shared_ptr< ResidualModelAbstract > residual_
Residual model.
CostModelResidualTpl(std::shared_ptr< typename Base::StateAbstract > state, std::shared_ptr< ResidualModelAbstract > residual)
Initialize the residual cost model.
virtual void calc(const std::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override
Compute the residual cost based on state only.
CostModelResidualTpl(std::shared_ptr< typename Base::StateAbstract > state, std::shared_ptr< ActivationModelAbstract > activation, std::shared_ptr< ResidualModelAbstract > residual)
Initialize the residual cost model.
virtual void calcDiff(const std::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override
Compute the derivatives of the residual cost with respect to the state only.
virtual void calcDiff(const std::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the derivatives of the residual cost.
CostModelResidualTpl< NewScalar > cast() const
Cast the residual cost model to a different scalar type.
virtual std::shared_ptr< CostDataAbstract > createData(DataCollectorAbstract *const data) override
Create the residual cost data.
virtual void calc(const std::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override
Compute the residual cost.
virtual void print(std::ostream &os) const override
Print relevant information of the cost-residual model.
Abstract class for residual models.