aligator  0.6.1
A primal-dual augmented Lagrangian-type solver for nonlinear trajectory optimization.
Loading...
Searching...
No Matches
expose-centroidal.cpp
Go to the documentation of this file.
1
14
15namespace aligator {
16namespace python {
17
18using context::Scalar;
22using ContactMap = ContactMapTpl<Scalar>;
23
25 bp::class_<ContactMap>(
26 "ContactMap", "Store contact state and pose for centroidal problem",
27 bp::init<const std::vector<bool> &,
28 const StdVectorEigenAligned<context::Vector3s> &>(
29 bp::args("self", "contact_states", "contact_poses")))
30 .def("addContact", &ContactMap::addContact,
31 bp::args("self", "state", "pose"),
32 "Add a contact to the contact map.")
33 .def("removeContact", &ContactMap::removeContact, bp::args("self", "i"),
34 "Remove contact i from the contact map.")
35 .add_property("size", &ContactMap::getSize, "Get map size.")
36 .add_property("contact_states",
37 bp::make_function(&ContactMap::getContactStates,
38 bp::return_internal_reference<>()),
39 "Get all the states in contact map.")
40 .add_property("contact_poses",
41 bp::make_function(&ContactMap::getContactPoses,
42 bp::return_internal_reference<>()),
43 "Get all the poses in contact map.");
44}
45
47 using CentroidalCoMResidual = CentroidalCoMResidualTpl<Scalar>;
48 using CentroidalCoMData = CentroidalCoMDataTpl<Scalar>;
49
50 using LinearMomentumResidual = LinearMomentumResidualTpl<Scalar>;
51 using LinearMomentumData = LinearMomentumDataTpl<Scalar>;
52
53 using AngularMomentumResidual = AngularMomentumResidualTpl<Scalar>;
54 using AngularMomentumData = AngularMomentumDataTpl<Scalar>;
55
56 using CentroidalAccelerationResidual =
57 CentroidalAccelerationResidualTpl<Scalar>;
58 using CentroidalAccelerationData = CentroidalAccelerationDataTpl<Scalar>;
59
60 using FrictionConeResidual = FrictionConeResidualTpl<Scalar>;
61 using FrictionConeData = FrictionConeDataTpl<Scalar>;
62
63 using WrenchConeResidual = WrenchConeResidualTpl<Scalar>;
64 using WrenchConeData = WrenchConeDataTpl<Scalar>;
65
66 using AngularAccelerationResidual = AngularAccelerationResidualTpl<Scalar>;
67 using AngularAccelerationData = AngularAccelerationDataTpl<Scalar>;
68
69 using CentroidalWrapperResidual = CentroidalWrapperResidualTpl<Scalar>;
70 using CentroidalWrapperData = CentroidalWrapperDataTpl<Scalar>;
71
72 bp::class_<CentroidalCoMResidual, bp::bases<UnaryFunction>>(
73 "CentroidalCoMResidual", "A residual function :math:`r(x) = com(x)` ",
74 bp::init<const int, const int, const context::Vector3s &>(
75 bp::args("self", "ndx", "nu", "p_ref")))
76 .def("getReference", &CentroidalCoMResidual::getReference,
77 bp::args("self"), bp::return_internal_reference<>(),
78 "Get the target Centroidal CoM translation.")
79 .def("setReference", &CentroidalCoMResidual::setReference,
80 bp::args("self", "p_new"),
81 "Set the target Centroidal CoM translation.");
82
83 bp::register_ptr_to_python<shared_ptr<CentroidalCoMData>>();
84
85 bp::class_<CentroidalCoMData, bp::bases<StageFunctionData>>(
86 "CentroidalCoMData", "Data Structure for CentroidalCoM", bp::no_init);
87
88 bp::class_<LinearMomentumResidual, bp::bases<UnaryFunction>>(
89 "LinearMomentumResidual", "A residual function :math:`r(x) = h(x)` ",
90 bp::init<const int, const int, const context::Vector3s &>(
91 bp::args("self", "ndx", "nu", "h_ref")))
92 .def("getReference", &LinearMomentumResidual::getReference,
93 bp::args("self"), bp::return_internal_reference<>(),
94 "Get the target Linear Momentum.")
95 .def("setReference", &LinearMomentumResidual::setReference,
96 bp::args("self", "h_new"), "Set the target Linear Momentum.");
97
98 bp::register_ptr_to_python<shared_ptr<LinearMomentumData>>();
99
100 bp::class_<LinearMomentumData, bp::bases<StageFunctionData>>(
101 "LinearMomentumData", "Data Structure for LinearMomentum", bp::no_init);
102
103 bp::class_<AngularMomentumResidual, bp::bases<UnaryFunction>>(
104 "AngularMomentumResidual", "A residual function :math:`r(x) = L(x)` ",
105 bp::init<const int, const int, const context::Vector3s &>(
106 bp::args("self", "ndx", "nu", "L_ref")))
107 .def("getReference", &AngularMomentumResidual::getReference,
108 bp::args("self"), bp::return_internal_reference<>(),
109 "Get the target Angular Momentum.")
110 .def("setReference", &AngularMomentumResidual::setReference,
111 bp::args("self", "L_new"), "Set the target Angular Momentum.");
112
113 bp::register_ptr_to_python<shared_ptr<AngularMomentumData>>();
114
115 bp::class_<AngularMomentumData, bp::bases<StageFunctionData>>(
116 "AngularMomentumData", "Data Structure for AngularMomentum", bp::no_init);
117
118 bp::class_<CentroidalAccelerationResidual, bp::bases<StageFunction>>(
119 "CentroidalAccelerationResidual",
120 "A residual function :math:`r(x) = cddot(x)` ",
121 bp::init<const int, const int, const double, const context::Vector3s &,
122 const ContactMap &, const int>(bp::args(
123 "self", "ndx", "nu", "mass", "gravity", "contact_map", "force_size")))
124 .def_readwrite("contact_map",
125 &CentroidalAccelerationResidual::contact_map_)
126 .def(CreateDataPythonVisitor<CentroidalAccelerationResidual>());
127
128 bp::register_ptr_to_python<shared_ptr<CentroidalAccelerationData>>();
129
130 bp::class_<CentroidalAccelerationData, bp::bases<StageFunctionData>>(
131 "CentroidalAccelerationData", "Data Structure for CentroidalAcceleration",
132 bp::no_init);
133
134 bp::class_<FrictionConeResidual, bp::bases<StageFunction>>(
135 "FrictionConeResidual",
136 "A residual function :math:`r(x) = [fz, mu2 * fz2 - (fx2 + fy2)]` ",
137 bp::init<const int, const int, const int, const double, const double>(
138 bp::args("self", "ndx", "nu", "k", "mu", "epsilon")));
139
140 bp::register_ptr_to_python<shared_ptr<FrictionConeData>>();
141
142 bp::class_<FrictionConeData, bp::bases<StageFunctionData>>(
143 "FrictionConeData", "Data Structure for FrictionCone", bp::no_init);
144
145 bp::class_<WrenchConeResidual, bp::bases<StageFunction>>(
146 "WrenchConeResidual",
147 "A residual function :math:`r(x) = [fz, mu2 * fz2 - (fx2 + fy2)]` ",
148 bp::init<const int, const int, const int, const double, const double,
149 const double>(
150 bp::args("self", "ndx", "nu", "k", "mu", "L", "W")));
151
152 bp::register_ptr_to_python<shared_ptr<WrenchConeData>>();
153
154 bp::class_<WrenchConeData, bp::bases<StageFunctionData>>(
155 "WrenchConeData", "Data Structure for WrenchCone", bp::no_init);
156
157 bp::class_<AngularAccelerationResidual, bp::bases<StageFunction>>(
158 "AngularAccelerationResidual",
159 "A residual function :math:`r(x) = Ldot(x)` ",
160 bp::init<const int, const int, const double, const context::Vector3s &,
161 const ContactMap &, const int>(bp::args(
162 "self", "ndx", "nu", "mass", "gravity", "contact_map", "force_size")))
163 .def_readwrite("contact_map", &AngularAccelerationResidual::contact_map_)
164 .def(CreateDataPythonVisitor<AngularAccelerationResidual>());
165
166 bp::register_ptr_to_python<shared_ptr<AngularAccelerationData>>();
167
168 bp::class_<AngularAccelerationData, bp::bases<StageFunctionData>>(
169 "AngularAccelerationData", "Data Structure for AngularAcceleration",
170 bp::no_init);
171
172 bp::class_<CentroidalWrapperResidual, bp::bases<UnaryFunction>>(
173 "CentroidalWrapperResidual",
174 "A wrapper for centroidal cost with smooth control",
175 bp::init<shared_ptr<StageFunction>>(bp::args("self", "centroidal_cost")))
176 .def_readwrite("centroidal_cost",
177 &CentroidalWrapperResidual::centroidal_cost_)
178 .def(CreateDataPythonVisitor<CentroidalWrapperResidual>());
179
180 bp::register_ptr_to_python<shared_ptr<CentroidalWrapperData>>();
181
182 bp::class_<CentroidalWrapperData, bp::bases<StageFunctionData>>(
183 "CentroidalWrapperData", "Data Structure for CentroidalWrapper",
184 bp::no_init);
185}
186
187} // namespace python
188} // namespace aligator
StageFunctionTpl< Scalar > StageFunction
Definition context.hpp:17
UnaryFunctionTpl< Scalar > UnaryFunction
Definition context.hpp:18
StageFunctionDataTpl< Scalar > StageFunctionData
Definition context.hpp:19
void exposeContactMap()
Centroidal cost functions.
Main package namespace.
const std::vector< bool > & getContactStates() const
void removeContact(const size_t i)
const PoseVec & getContactPoses() const
void addContact(const bool state, const Vector3s &pose)