58 const ConstMatrixRef &w_cross,
73 VectorXs::Zero(w_u.cols())) {}
76 const ConstMatrixRef &w_cross)
78 VectorXs::Zero(w_u.cols())) {}
80 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
107 auto data = std::make_shared<Data>(this->
ndx(), this->
nu);
111 data->Lux_ =
Wxu_.transpose();
130 static void _check_dim_equal(
long n,
long m,
const std::string &msg =
"") {
136 void debug_check_dims()
const {
137 _check_dim_equal(
Wxx_.rows(),
Wxx_.cols(),
" for x weights");
138 _check_dim_equal(
Wuu_.rows(),
Wuu_.cols(),
" for u weights");
139 _check_dim_equal(
Wxu_.rows(), this->ndx(),
" for cross-term weight");
140 _check_dim_equal(
Wxu_.cols(), this->nu,
" for cross-term weight");
142 " for x weights and intercept");
144 " for u weights and intercept");
148template <
typename Scalar>
169#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
170#include "./quad-costs.txx"
#define ALIGATOR_RUNTIME_ERROR(...)
CostAbstractTpl(U &&space, const int nu)
Data struct for CostAbstractTpl.
CostDataAbstractTpl(const int ndx, const int nu)
Base class for manifolds, to use in cost funcs, solvers...
CostDataAbstractTpl< Scalar > Base
QuadraticCostDataTpl(const int nx, const int nu)
typename Base::VectorXs VectorXs
QuadraticCostDataTpl< Scalar > Data
QuadraticCostTpl(const ConstMatrixRef &w_x, const ConstMatrixRef &w_u)
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
void computeGradients(const ConstVectorRef &, const ConstVectorRef &, CostData &data) const
Compute the cost gradients .
QuadraticCostTpl(const ConstMatrixRef &w_x, const ConstMatrixRef &w_u, const ConstMatrixRef &w_cross)
shared_ptr< CostData > createData() const
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, CostData &data) const
Evaluate the cost function.
ConstMatrixRef getCrossWeights() const
ManifoldAbstractTpl< Scalar > Manifold
CostAbstractTpl< Scalar > Base
bool hasCrossTerm() const
Whether a cross term exists.
CostDataAbstractTpl< Scalar > CostData
QuadraticCostTpl(const ConstMatrixRef &w_x, const ConstMatrixRef &w_u, const ConstVectorRef &interp_x, const ConstVectorRef &interp_u)
static auto get_vector_space(Eigen::Index nx)
void computeHessians(const ConstVectorRef &, const ConstVectorRef &, CostData &) const
Compute the cost Hessians .
::aligator::VectorSpaceTpl< Scalar, Eigen::Dynamic > VectorSpace
void setCrossWeight(const ConstMatrixRef &w)
QuadraticCostTpl(const ConstMatrixRef &w_x, const ConstMatrixRef &w_u, const ConstMatrixRef &w_cross, const ConstVectorRef &interp_x, const ConstVectorRef &interp_u)
Standard Euclidean vector space.