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" 38template <
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;
130 DataCollectorAbstract*
const data)
override;
141 template <
typename NewScalar>
149 virtual void print(std::ostream& os)
const override;
159template <
typename _Scalar>
160struct CostDataResidualTpl :
public CostDataAbstractTpl<_Scalar> {
161 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
163 typedef _Scalar Scalar;
165 typedef CostDataAbstractTpl<Scalar> Base;
168 template <
template <
typename Scalar>
class Model>
169 CostDataResidualTpl(Model<Scalar>*
const model,
170 DataCollectorAbstract*
const data)
171 : Base(model, data) {}
172 virtual ~CostDataResidualTpl() =
default;
174 using Base::activation;
181 using Base::residual;
190#include "crocoddyl/core/costs/residual.hxx" std::shared_ptr< ActivationModelAbstract > activation_
std::shared_ptr< StateAbstract > state_
CostModelAbstractTpl(std::shared_ptr< StateAbstract > state, std::shared_ptr< ActivationModelAbstract > activation, std::shared_ptr< ResidualModelAbstract > residual)
Initialize the cost model.
std::shared_ptr< ResidualModelAbstract > residual_
virtual std::shared_ptr< CostDataAbstract > createData(DataCollectorAbstract *const data) override
Create the residual cost data.
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 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.