aligator 0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Loading...
Searching...
No Matches
multibody-friction-cone.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include "fwd.hpp"
7
8#include <pinocchio/algorithm/proximal.hpp>
9#include <pinocchio/algorithm/contact-info.hpp>
10
11namespace aligator {
12
13template <typename Scalar> struct MultibodyFrictionConeDataTpl;
14
19
20template <typename _Scalar>
22public:
23 using Scalar = _Scalar;
26 using BaseData = typename Base::Data;
27 using PinModel = pinocchio::ModelTpl<Scalar>;
28 using SE3 = pinocchio::SE3Tpl<Scalar>;
30 using RigidConstraintModel = pinocchio::RigidConstraintModelTpl<Scalar>;
31 using RigidConstraintData = pinocchio::RigidConstraintDataTpl<Scalar>;
33 PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintModel);
35 PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData);
36 using ProxSettings = pinocchio::ProximalSettings;
37
42 double mu_;
44
46 const int ndx, const PinModel &model, const MatrixXs &actuation,
47 const RigidConstraintModelVector &constraint_models,
48 const ProxSettings &prox_settings, std::string_view contact_name,
49 const double mu)
50 : Base(ndx, (int)actuation.cols(), 2)
51 , pin_model_(model)
52 , actuation_matrix_(actuation)
53 , constraint_models_(constraint_models)
54 , prox_settings_(prox_settings)
55 , mu_(mu) {
56 if (model.nv != actuation.rows()) {
57 ALIGATOR_DOMAIN_ERROR("Actuation matrix should have number of rows = "
58 "model.nv ({:d} and {:d}).",
59 actuation.rows(), model.nv);
60 }
61 contact_id_ = -1;
62 for (std::size_t i = 0; i < constraint_models.size(); i++) {
63 if (constraint_models[i].name == contact_name) {
64 contact_id_ = (int)i;
65 }
66 }
67 if (contact_id_ == -1) {
69 "Contact name is not included in constraint models");
70 }
71 }
72
73 void evaluate(const ConstVectorRef &x, const ConstVectorRef &u,
74 BaseData &data) const;
75
76 void computeJacobians(const ConstVectorRef &, const ConstVectorRef &,
77 BaseData &data) const;
78
79 shared_ptr<BaseData> createData() const {
80 return std::make_shared<Data>(this);
81 }
82};
83
84template <typename Scalar>
86 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
88 using PinData = pinocchio::DataTpl<Scalar>;
91 using RigidConstraintData = pinocchio::RigidConstraintDataTpl<Scalar>;
93 PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData);
94
99 Eigen::Matrix<Scalar, 1, 3> dcone_df_;
100
102 pinocchio::ProximalSettingsTpl<Scalar> settings;
103
106};
107
108#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
111#endif
112} // namespace aligator
#define ALIGATOR_RUNTIME_ERROR(...)
Definition exceptions.hpp:7
Base definitions for ternary functions.
Main package namespace.
MultibodyFrictionConeDataTpl(const MultibodyFrictionConeResidualTpl< Scalar > *model)
typename math_types< Scalar >::MatrixXs MatrixXs
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
typename math_types< Scalar >::VectorXs VectorXs
pinocchio::ProximalSettingsTpl< Scalar > settings
This residual returns the derivative of centroidal momentum for a kinodynamics model.
MultibodyFrictionConeResidualTpl(const int ndx, const PinModel &model, const MatrixXs &actuation, const RigidConstraintModelVector &constraint_models, const ProxSettings &prox_settings, std::string_view contact_name, const double mu)
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintModel) RigidConstraintModelVector
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
shared_ptr< BaseData > createData() const
Instantiate a Data object.
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
pinocchio::RigidConstraintModelTpl< Scalar > RigidConstraintModel
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, BaseData &data) const
MultibodyFrictionConeDataTpl< Scalar > Data
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.
Definition math.hpp:123