8#include <Eigen/src/Core/util/Constants.h>
10#include <pinocchio/algorithm/proximal.hpp>
19template <
typename _Scalar>
26 using Model = pinocchio::ModelTpl<Scalar>;
27 using SE3 = pinocchio::SE3Tpl<Scalar>;
44 const MatrixXs &actuation,
47 const Vector3or6 &fref, std::string_view contact_name)
48 :
Base(ndx, (int)actuation.cols(), (int)fref.size())
55 if (model.nv != actuation.rows()) {
56 ALIGATOR_DOMAIN_ERROR(
"Actuation matrix should have number of rows = "
57 "model.nv ({:d} and {:d}).",
58 actuation.rows(), model.nv);
61 for (std::size_t i = 0; i < constraint_models.size(); i++) {
62 if (constraint_models[i].name == contact_name) {
68 "Contact name is not included in constraint models");
75 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
82 return std::make_shared<Data>(
this);
86template <
typename Scalar>
88 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
90 using PinData = pinocchio::DataTpl<Scalar>;
106#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
#define ALIGATOR_RUNTIME_ERROR(...)
Base definitions for ternary functions.
StageFunctionDataTpl(const int ndx, const int nu, const int nr)
StageFunctionDataTpl< Scalar > Data
StageFunctionTpl(const int ndx, const int nu, const int nr)
Typedefs for math (Eigen vectors, matrices) depending on scalar type.