7#include <pinocchio/algorithm/proximal.hpp>
18template <
typename _Scalar>
25 using Model = pinocchio::ModelTpl<Scalar>;
26 using SE3 = pinocchio::SE3Tpl<Scalar>;
29 pinocchio::RigidConstraintModel);
31 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData);
42 const int ndx,
const Model &model,
const MatrixXs &actuation,
44 const ProxSettings &prox_settings,
const std::string &contact_name,
46 :
Base(ndx, (int)actuation.cols(), 2)
52 if (model.nv != actuation.rows()) {
53 ALIGATOR_DOMAIN_ERROR(
54 fmt::format(
"actuation matrix should have number of rows = pinocchio "
55 "model nv ({} and {}).",
56 actuation.rows(), model.nv));
59 for (std::size_t i = 0; i < constraint_models.size(); i++) {
60 if (constraint_models[i].name == contact_name) {
66 "Contact name is not included in constraint models");
70 void evaluate(
const ConstVectorRef &x,
const ConstVectorRef &u,
77 return std::make_shared<Data>(
this);
81template <
typename Scalar>
83 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
85 using PinData = pinocchio::DataTpl<Scalar>;
89 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData);
98 pinocchio::ProximalSettingsTpl<Scalar>
settings;
106#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
107#include "aligator/modelling/multibody/multibody-friction-cone.txx"
#define ALIGATOR_RUNTIME_ERROR(...)
Base definitions for ternary functions.
MultibodyFrictionConeDataTpl(const MultibodyFrictionConeResidualTpl< Scalar > *model)
typename math_types< Scalar >::MatrixXs MatrixXs
Eigen::Matrix< Scalar, 1, 3 > dcone_df_
StageFunctionDataTpl< Scalar > Base
typename math_types< Scalar >::VectorXs VectorXs
pinocchio::ProximalSettingsTpl< Scalar > settings
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData) RigidConstraintDataVector
PinData pin_data_
Pinocchio data object.
pinocchio::DataTpl< Scalar > PinData
RigidConstraintDataVector constraint_datas_
This residual returns the derivative of centroidal momentum for a kinodynamics model.
MultibodyFrictionConeResidualTpl(const int ndx, const Model &model, const MatrixXs &actuation, const RigidConstraintModelVector &constraint_models, const ProxSettings &prox_settings, const std::string &contact_name, const double mu)
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(pinocchio::RigidConstraintData) RigidConstraintDataVector
pinocchio::SE3Tpl< Scalar > SE3
ProxSettings prox_settings_
StageFunctionTpl< Scalar > Base
MatrixXs actuation_matrix_
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
shared_ptr< BaseData > createData() const
Instantiate a Data object.
RigidConstraintModelVector constraint_models_
pinocchio::ProximalSettingsTpl< Scalar > ProxSettings
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, BaseData &data) const
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR( pinocchio::RigidConstraintModel) RigidConstraintModelVector
MultibodyFrictionConeDataTpl< Scalar > Data
typename Base::Data BaseData
pinocchio::ModelTpl< Scalar > Model
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
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.