10template <
typename Scalar>
struct ProximalDataTpl;
18template <
typename _Scalar>
24 using Base = CostAbstractTpl<Scalar>;
26 using Data = ProximalDataTpl<Scalar>;
35 const VectorXs &xt,
const VectorXs &ut,
40 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
44 this->
space->difference(x_ref, x, d.dx_);
45 d.value_ = 0.5 * d.dx_.squaredNorm();
46 if (this->no_ctrl_term)
49 d.value_ += 0.5 * d.du_.squaredNorm();
55 this->
space->Jdifference(x_ref, x, d.Jx_, 1);
56 d.Lx_ = d.Jx_.transpose() * d.dx_;
57 if (this->no_ctrl_term)
60 d.Lu_ = d.Ju_.transpose() * d.du_;
66 d.Lxx_ = d.Jx_.transpose() * d.Jx_;
67 if (this->no_ctrl_term)
69 d.Luu_ = d.Ju_.transpose() * d.Ju_;
73 return std::make_shared<Data>(
this);
77template <
typename Scalar>
79 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
80 using Base = CostDataAbstractTpl<Scalar>;
81 using VectorXs =
typename math_types<Scalar>::VectorXs;
82 using MatrixXs =
typename math_types<Scalar>::MatrixXs;
92#include "aligator/core/proximal-penalty.hxx"
Stage costs for control problems.
shared_ptr< Manifold > space
State dimension.
Data for proximal penalty.
ProximalDataTpl(const ProximalPenaltyTpl< Scalar > *model)
typename math_types< Scalar >::VectorXs VectorXs
typename math_types< Scalar >::MatrixXs MatrixXs
shared_ptr< ManifoldAbstractTpl< Scalar > > ManifoldPtr
ProximalPenaltyTpl(const ManifoldPtr &xspace, const ManifoldPtr &uspace, const VectorXs &xt, const VectorXs &ut, const bool no_ctrl_term)
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
ProximalDataTpl< Scalar > Data
void computeHessians(const ConstVectorRef &, const ConstVectorRef &, CostData &data) const
Compute the cost Hessians .
shared_ptr< CostData > createData() const
void computeGradients(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Compute the cost gradients .
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Evaluate the cost function.
const ManifoldPtr uspace_