6#include <pinocchio/multibody/model.hpp>
8#include <pinocchio/algorithm/proximal.hpp>
9#include <pinocchio/algorithm/contact-info.hpp>
20template <
typename _Scalar>
27 using Model = pinocchio::ModelTpl<Scalar>;
28 using SE3 = pinocchio::SE3Tpl<Scalar>;
50 const int ndx,
const Model &model,
const MatrixXs &actuation,
52 const ProxSettings &prox_settings, std::string_view contact_name,
53 const double mu,
const double half_length,
const double half_width)
54 :
Base(ndx, (int)actuation.cols(), 17)
62 if (model.nv != actuation.rows()) {
63 ALIGATOR_DOMAIN_ERROR(
"Actuation matrix should have number of rows = "
64 "model.nv ({:d} and {:d}).",
65 actuation.rows(), model.nv);
68 for (std::size_t i = 0; i < constraint_models.size(); i++) {
69 if (constraint_models[i].name == contact_name) {
75 "Contact name is not included in constraint models");
77 Acone_ << 0, 0, -1, 0, 0, 0, -1, 0, -
mu_, 0, 0, 0, 1, 0, -
mu_, 0, 0, 0, 0,
78 -1, -
mu_, 0, 0, 0, 0, 1, -
mu_, 0, 0, 0, 0, 0, -
hW_, -1, 0, 0, 0, 0,
79 -
hW_, 1, 0, 0, 0, 0, -
hL_, 0, -1, 0, 0, 0, -
hL_, 0, 1, 0, -
hW_, -
hL_,
81 -
mu_, -1,
hW_, -
hL_, -(
hL_ +
hW_) *
mu_, -
mu_,
mu_, -1,
hW_,
hL_,
83 mu_, 1,
hW_, -
hL_, -(
hL_ +
hW_) *
mu_,
mu_, -
mu_, 1, -
hW_,
hL_,
88 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
95 return std::make_shared<Data>(
this);
99template <
typename Scalar>
101 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
123#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
#define ALIGATOR_RUNTIME_ERROR(...)
Base definitions for ternary functions.
typename math_types< Scalar >::MatrixXs MatrixXs
StageFunctionDataTpl< Scalar > Base
typename math_types< Scalar >::VectorXs VectorXs
MultibodyWrenchConeDataTpl(const MultibodyWrenchConeResidualTpl< Scalar > *model)
pinocchio::ProximalSettingsTpl< Scalar > settings
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
pinocchio::DataTpl< Scalar > PinData
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
RigidConstraintDataVector constraint_datas_
typename math_types< Scalar >::Matrix6Xs Matrix6Xs
PinData pin_data_
Pinocchio data object.
This residual returns the derivative of centroidal momentum for a kinodynamics model.
StageFunctionTpl< Scalar > Base
MultibodyWrenchConeResidualTpl(const int ndx, const Model &model, const MatrixXs &actuation, const RigidConstraintModelVector &constraint_models, const ProxSettings &prox_settings, std::string_view contact_name, const double mu, const double half_length, const double half_width)
ProxSettings prox_settings_
pinocchio::RigidConstraintModelTpl< Scalar > RigidConstraintModel
typename Base::Data BaseData
Eigen::Matrix< Scalar, 17, 6 > Acone_
RigidConstraintModelVector constraint_models_
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintModel) RigidConstraintModelVector
shared_ptr< BaseData > createData() const
Instantiate a Data object.
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
pinocchio::SE3Tpl< Scalar > SE3
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
MultibodyWrenchConeDataTpl< Scalar > Data
pinocchio::ProximalSettingsTpl< Scalar > ProxSettings
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, BaseData &data) const
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
MatrixXs actuation_matrix_
pinocchio::ModelTpl< Scalar > Model
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
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.