aligator
0.19.0
A versatile and efficient C++ library for real-time constrained trajectory optimization.
Toggle main menu visibility
Loading...
Searching...
No Matches
multibody-friction-cone.hpp
Go to the documentation of this file.
1
2
#pragma once
3
4
#include "
fwd.hpp
"
5
#include "
aligator/core/function-abstract.hpp
"
6
#include "
aligator/modelling/spaces/multibody.hpp
"
7
8
#include <pinocchio/algorithm/proximal.hpp>
9
#include <pinocchio/algorithm/contact-info.hpp>
10
11
namespace
aligator
{
12
13
template
<
typename
Scalar>
struct
MultibodyFrictionConeDataTpl
;
14
19
20
template
<
typename
_Scalar>
21
struct
MultibodyFrictionConeResidualTpl
:
StageFunctionTpl
<_Scalar> {
22
public
:
23
using
Scalar
= _Scalar;
24
ALIGATOR_DYNAMIC_TYPEDEFS
(
Scalar
);
25
using
Base
=
StageFunctionTpl<Scalar>
;
26
using
BaseData
=
typename
Base::Data
;
27
using
PinModel
= pinocchio::ModelTpl<Scalar>;
28
using
SE3
= pinocchio::SE3Tpl<Scalar>;
29
using
Data
=
MultibodyFrictionConeDataTpl<Scalar>
;
30
using
RigidConstraintModel
= pinocchio::RigidConstraintModelTpl<Scalar>;
31
using
RigidConstraintData
= pinocchio::RigidConstraintDataTpl<Scalar>;
32
using
RigidConstraintModelVector
=
33
PINOCCHIO_ALIGNED_STD_VECTOR(
RigidConstraintModel
);
34
using
RigidConstraintDataVector
=
35
PINOCCHIO_ALIGNED_STD_VECTOR(
RigidConstraintData
);
36
using
ProxSettings
= pinocchio::ProximalSettings;
37
38
PinModel
pin_model_
;
39
MatrixXs
actuation_matrix_
;
40
RigidConstraintModelVector
constraint_models_
;
41
ProxSettings
prox_settings_
;
42
double
mu_
;
43
int
contact_id_
;
44
45
MultibodyFrictionConeResidualTpl
(
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) {
68
ALIGATOR_RUNTIME_ERROR
(
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
84
template
<
typename
Scalar>
85
struct
MultibodyFrictionConeDataTpl
:
StageFunctionDataTpl
<Scalar> {
86
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
87
using
Base
=
StageFunctionDataTpl<Scalar>
;
88
using
PinData
= pinocchio::DataTpl<Scalar>;
89
using
VectorXs
=
typename
math_types<Scalar>::VectorXs
;
90
using
MatrixXs
=
typename
math_types<Scalar>::MatrixXs
;
91
using
RigidConstraintData
= pinocchio::RigidConstraintDataTpl<Scalar>;
92
using
RigidConstraintDataVector
=
93
PINOCCHIO_ALIGNED_STD_VECTOR(
RigidConstraintData
);
94
96
PinData
pin_data_
;
97
VectorXs
tau_
;
98
MatrixXs
temp_
;
99
Eigen::Matrix<Scalar, 1, 3>
dcone_df_
;
100
101
RigidConstraintDataVector
constraint_datas_
;
102
pinocchio::ProximalSettingsTpl<Scalar>
settings
;
103
104
MultibodyFrictionConeDataTpl
(
105
const
MultibodyFrictionConeResidualTpl<Scalar>
*model);
106
};
107
108
#ifdef ALIGATOR_ENABLE_TEMPLATE_INSTANTIATION
109
extern
template
struct
MultibodyFrictionConeResidualTpl<context::Scalar>
;
110
extern
template
struct
MultibodyFrictionConeDataTpl<context::Scalar>
;
111
#endif
112
}
// namespace aligator
ALIGATOR_RUNTIME_ERROR
#define ALIGATOR_RUNTIME_ERROR(...)
Definition
exceptions.hpp:8
function-abstract.hpp
Base definitions for ternary functions.
fwd.hpp
multibody.hpp
aligator
Main package namespace.
Definition
action-model-wrap.hpp:14
aligator::MultibodyFrictionConeDataTpl
Definition
multibody-friction-cone.hpp:85
aligator::MultibodyFrictionConeDataTpl::MultibodyFrictionConeDataTpl
MultibodyFrictionConeDataTpl(const MultibodyFrictionConeResidualTpl< Scalar > *model)
aligator::MultibodyFrictionConeDataTpl::MatrixXs
typename math_types< Scalar >::MatrixXs MatrixXs
Definition
multibody-friction-cone.hpp:90
aligator::MultibodyFrictionConeDataTpl::RigidConstraintData
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
Definition
multibody-friction-cone.hpp:91
aligator::MultibodyFrictionConeDataTpl::dcone_df_
Eigen::Matrix< Scalar, 1, 3 > dcone_df_
Definition
multibody-friction-cone.hpp:99
aligator::MultibodyFrictionConeDataTpl::temp_
MatrixXs temp_
Definition
multibody-friction-cone.hpp:98
aligator::MultibodyFrictionConeDataTpl::tau_
VectorXs tau_
Definition
multibody-friction-cone.hpp:97
aligator::MultibodyFrictionConeDataTpl::RigidConstraintDataVector
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
Definition
multibody-friction-cone.hpp:92
aligator::MultibodyFrictionConeDataTpl::Base
StageFunctionDataTpl< Scalar > Base
Definition
multibody-friction-cone.hpp:87
aligator::MultibodyFrictionConeDataTpl::VectorXs
typename math_types< Scalar >::VectorXs VectorXs
Definition
multibody-friction-cone.hpp:89
aligator::MultibodyFrictionConeDataTpl::settings
pinocchio::ProximalSettingsTpl< Scalar > settings
Definition
multibody-friction-cone.hpp:102
aligator::MultibodyFrictionConeDataTpl::pin_data_
PinData pin_data_
Pinocchio data object.
Definition
multibody-friction-cone.hpp:96
aligator::MultibodyFrictionConeDataTpl::PinData
pinocchio::DataTpl< Scalar > PinData
Definition
multibody-friction-cone.hpp:88
aligator::MultibodyFrictionConeDataTpl::constraint_datas_
RigidConstraintDataVector constraint_datas_
Definition
multibody-friction-cone.hpp:101
aligator::MultibodyFrictionConeResidualTpl
This residual returns the derivative of centroidal momentum for a kinodynamics model.
Definition
multibody-friction-cone.hpp:21
aligator::MultibodyFrictionConeResidualTpl::Scalar
_Scalar Scalar
Definition
multibody-friction-cone.hpp:23
aligator::MultibodyFrictionConeResidualTpl::SE3
pinocchio::SE3Tpl< Scalar > SE3
Definition
multibody-friction-cone.hpp:28
aligator::MultibodyFrictionConeResidualTpl::ProxSettings
pinocchio::ProximalSettings ProxSettings
Definition
multibody-friction-cone.hpp:36
aligator::MultibodyFrictionConeResidualTpl::MultibodyFrictionConeResidualTpl
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)
Definition
multibody-friction-cone.hpp:45
aligator::MultibodyFrictionConeResidualTpl::prox_settings_
ProxSettings prox_settings_
Definition
multibody-friction-cone.hpp:41
aligator::MultibodyFrictionConeResidualTpl::Base
StageFunctionTpl< Scalar > Base
Definition
multibody-friction-cone.hpp:25
aligator::MultibodyFrictionConeResidualTpl::actuation_matrix_
MatrixXs actuation_matrix_
Definition
multibody-friction-cone.hpp:39
aligator::MultibodyFrictionConeResidualTpl::evaluate
void evaluate(const ConstVectorRef &x, const ConstVectorRef &u, BaseData &data) const
aligator::MultibodyFrictionConeResidualTpl::createData
shared_ptr< BaseData > createData() const
Instantiate a Data object.
Definition
multibody-friction-cone.hpp:79
aligator::MultibodyFrictionConeResidualTpl::RigidConstraintModelVector
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintModel) RigidConstraintModelVector
Definition
multibody-friction-cone.hpp:32
aligator::MultibodyFrictionConeResidualTpl::constraint_models_
RigidConstraintModelVector constraint_models_
Definition
multibody-friction-cone.hpp:40
aligator::MultibodyFrictionConeResidualTpl::RigidConstraintModel
pinocchio::RigidConstraintModelTpl< Scalar > RigidConstraintModel
Definition
multibody-friction-cone.hpp:30
aligator::MultibodyFrictionConeResidualTpl::RigidConstraintData
pinocchio::RigidConstraintDataTpl< Scalar > RigidConstraintData
Definition
multibody-friction-cone.hpp:31
aligator::MultibodyFrictionConeResidualTpl::pin_model_
PinModel pin_model_
Definition
multibody-friction-cone.hpp:38
aligator::MultibodyFrictionConeResidualTpl::mu_
double mu_
Definition
multibody-friction-cone.hpp:42
aligator::MultibodyFrictionConeResidualTpl::computeJacobians
void computeJacobians(const ConstVectorRef &, const ConstVectorRef &, BaseData &data) const
aligator::MultibodyFrictionConeResidualTpl::Data
MultibodyFrictionConeDataTpl< Scalar > Data
Definition
multibody-friction-cone.hpp:29
aligator::MultibodyFrictionConeResidualTpl::RigidConstraintDataVector
PINOCCHIO_ALIGNED_STD_VECTOR(RigidConstraintData) RigidConstraintDataVector
Definition
multibody-friction-cone.hpp:34
aligator::MultibodyFrictionConeResidualTpl::contact_id_
int contact_id_
Definition
multibody-friction-cone.hpp:43
aligator::MultibodyFrictionConeResidualTpl::BaseData
typename Base::Data BaseData
Definition
multibody-friction-cone.hpp:26
aligator::MultibodyFrictionConeResidualTpl::PinModel
pinocchio::ModelTpl< Scalar > PinModel
Definition
multibody-friction-cone.hpp:27
aligator::MultibodyFrictionConeResidualTpl::ALIGATOR_DYNAMIC_TYPEDEFS
ALIGATOR_DYNAMIC_TYPEDEFS(Scalar)
aligator::StageFunctionDataTpl< Scalar >::StageFunctionDataTpl
StageFunctionDataTpl(const int ndx, const int nu, const int nr)
aligator::StageFunctionTpl< Scalar >::Data
StageFunctionDataTpl< Scalar > Data
Definition
function-abstract.hpp:16
aligator::StageFunctionTpl::StageFunctionTpl
StageFunctionTpl(const int ndx, const int nu, const int nr)
aligator::math_types
Typedefs for math (Eigen vectors, matrices) depending on scalar type.
Definition
math.hpp:123
include
aligator
modelling
multibody
multibody-friction-cone.hpp
Generated by
1.17.0