aligator  0.14.0
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
expose-force-cost.cpp
Go to the documentation of this file.
1
3#ifdef ALIGATOR_WITH_PINOCCHIO
4
7
11
12namespace aligator {
13namespace python {
14
15using Vector3or6 = Eigen::Matrix<double, -1, 1, Eigen::ColMajor, 6, 1>;
16using context::ConstVectorRef;
19using context::Scalar;
22using RigidConstraintModel =
23 pinocchio::RigidConstraintModelTpl<context::Scalar, 0>;
24using RigidConstraintData =
25 pinocchio::RigidConstraintDataTpl<context::Scalar, 0>;
26
27using RigidConstraintModelVector =
28 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(RigidConstraintModel);
29using RigidConstraintDataVector =
30 PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(RigidConstraintData);
31
33
34void exposeContactForce() {
35 using ContactForceResidual = ContactForceResidualTpl<Scalar>;
36 using ContactForceData = ContactForceDataTpl<Scalar>;
37
38 using MultibodyWrenchConeResidual = MultibodyWrenchConeResidualTpl<Scalar>;
39 using MultibodyWrenchConeData = MultibodyWrenchConeDataTpl<Scalar>;
40
41 using MultibodyFrictionConeResidual =
42 MultibodyFrictionConeResidualTpl<Scalar>;
43 using MultibodyFrictionConeData = MultibodyFrictionConeDataTpl<Scalar>;
44
45 bp::class_<ContactForceResidual, bp::bases<StageFunction>>(
46 "ContactForceResidual",
47 "A residual function :math:`r(x) = v_{j,xy} e^{-s z_j}` where :math:`j` "
48 "is a given frame index.",
49 bp::no_init)
50 .def(bp::init<int, PinModel, const context::MatrixXs &,
51 const RigidConstraintModelVector &,
52 const pinocchio::ProximalSettingsTpl<Scalar> &,
53 const Eigen::VectorXd &, const std::string &>(bp::args(
54 "self", "ndx", "model", "actuation_matrix", "constraint_models",
55 "prox_settings", "fref", "contact_name")))
56 .def(func_visitor)
57 .def("getReference", &ContactForceResidual::getReference,
58 bp::args("self"), bp::return_internal_reference<>(),
59 "Get the target force.")
60 .def("setReference", &ContactForceResidual::setReference,
61 bp::args("self", "fnew"), "Set the target force.")
62 .def_readwrite("constraint_models",
63 &ContactForceResidual::constraint_models_);
64
65 bp::class_<ContactForceData, bp::bases<StageFunctionData>>("ContactForceData",
66 bp::no_init)
67 .def_readwrite("tau", &ContactForceData::tau_)
68 .def_readwrite("pin_data", &ContactForceData::pin_data_)
69 .def_readwrite("constraint_datas", &ContactForceData::constraint_datas_);
70
71 bp::class_<MultibodyWrenchConeResidual, bp::bases<StageFunction>>(
72 "MultibodyWrenchConeResidual", "A residual function :math:`r(x) = Af` ",
73 bp::no_init)
74 .def(bp::init<int, PinModel, const context::MatrixXs &,
75 const RigidConstraintModelVector &,
76 const pinocchio::ProximalSettingsTpl<Scalar> &,
77 const std::string &, const double, const double,
78 const double>(bp::args(
79 "self", "ndx", "model", "actuation_matrix", "constraint_models",
80 "prox_settings", "contact_name", "mu", "half_length", "half_width")))
81 .def(func_visitor)
82 .def_readwrite("constraint_models",
83 &MultibodyWrenchConeResidual::constraint_models_);
84
85 bp::class_<MultibodyWrenchConeData, bp::bases<StageFunctionData>>(
86 "MultibodyWrenchConeData", bp::no_init)
87 .def_readwrite("tau", &MultibodyWrenchConeData::tau_)
88 .def_readwrite("pin_data", &MultibodyWrenchConeData::pin_data_)
89 .def_readwrite("constraint_datas",
90 &MultibodyWrenchConeData::constraint_datas_);
91
92 bp::class_<MultibodyFrictionConeResidual, bp::bases<StageFunction>>(
93 "MultibodyFrictionConeResidual", "A residual function :math:`r(x) = Af` ",
94 bp::no_init)
95 .def(bp::init<int, PinModel, const context::MatrixXs &,
96 const RigidConstraintModelVector &,
97 const pinocchio::ProximalSettingsTpl<Scalar> &,
98 const std::string &, const double>(
99 bp::args("self", "ndx", "model", "actuation_matrix",
100 "constraint_models", "prox_settings", "contact_name", "mu")))
101 .def(func_visitor)
102 .def_readwrite("constraint_models",
103 &MultibodyFrictionConeResidual::constraint_models_);
104
105 bp::class_<MultibodyFrictionConeData, bp::bases<StageFunctionData>>(
106 "MultibodyFrictionConeData", bp::no_init)
107 .def_readwrite("tau", &MultibodyFrictionConeData::tau_)
108 .def_readwrite("pin_data", &MultibodyFrictionConeData::pin_data_)
109 .def_readwrite("constraint_datas",
110 &MultibodyFrictionConeData::constraint_datas_);
111}
112
113} // namespace python
114} // namespace aligator
115
116#endif
pinocchio::ModelTpl< Scalar, Options > PinModel
Definition context.hpp:12
StageFunctionTpl< Scalar > StageFunction
Definition context.hpp:17
MultibodyPhaseSpace< Scalar > MultibodyPhaseSpace
Definition context.hpp:18
StageFunctionDataTpl< Scalar > StageFunctionData
Definition context.hpp:19
The Python bindings.
Definition blk-matrix.hpp:5
PolymorphicMultiBaseVisitor< StageFunction > func_visitor
Main package namespace.