Directory: | ./ |
---|---|
File: | include/pinocchio/bindings/python/multibody/data.hpp |
Date: | 2025-02-12 21:03:38 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 122 | 127 | 96.1% |
Branches: | 122 | 252 | 48.4% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | // | ||
2 | // Copyright (c) 2015-2024 CNRS INRIA | ||
3 | // | ||
4 | |||
5 | #ifndef __pinocchio_python_multibody_data_hpp__ | ||
6 | #define __pinocchio_python_multibody_data_hpp__ | ||
7 | |||
8 | #include "pinocchio/multibody/data.hpp" | ||
9 | #include "pinocchio/serialization/data.hpp" | ||
10 | |||
11 | #include <eigenpy/memory.hpp> | ||
12 | #include <eigenpy/eigen-to-python.hpp> | ||
13 | #include <eigenpy/exception.hpp> | ||
14 | |||
15 | #include "pinocchio/bindings/python/fwd.hpp" | ||
16 | #include "pinocchio/bindings/python/utils/macros.hpp" | ||
17 | #include "pinocchio/bindings/python/serialization/serializable.hpp" | ||
18 | #include "pinocchio/bindings/python/utils/std-vector.hpp" | ||
19 | #include "pinocchio/bindings/python/utils/std-aligned-vector.hpp" | ||
20 | #include "pinocchio/bindings/python/utils/copyable.hpp" | ||
21 | |||
22 | #if EIGENPY_VERSION_AT_MOST(2, 8, 1) | ||
23 | EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(pinocchio::Data) | ||
24 | #endif | ||
25 | |||
26 | namespace pinocchio | ||
27 | { | ||
28 | namespace python | ||
29 | { | ||
30 | namespace bp = boost::python; | ||
31 | |||
32 | template<typename Data> | ||
33 | struct PickleData : bp::pickle_suite | ||
34 | { | ||
35 | 1 | static bp::tuple getinitargs(const Data &) | |
36 | { | ||
37 | 1 | return bp::make_tuple(); | |
38 | } | ||
39 | |||
40 | 1 | static bp::tuple getstate(const Data & data) | |
41 | { | ||
42 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | const std::string str(data.saveToString()); |
43 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | return bp::make_tuple(bp::str(str)); |
44 | 1 | } | |
45 | |||
46 | 1 | static void setstate(Data & data, bp::tuple tup) | |
47 | { | ||
48 |
5/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
|
1 | if (bp::len(tup) == 0 || bp::len(tup) > 1) |
49 | { | ||
50 | ✗ | throw eigenpy::Exception( | |
51 | "Pickle was not able to reconstruct the model from the loaded data.\n" | ||
52 | "The pickle data structure contains too many elements."); | ||
53 | } | ||
54 | |||
55 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | bp::object py_obj = tup[0]; |
56 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | boost::python::extract<std::string> obj_as_string(py_obj.ptr()); |
57 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | if (obj_as_string.check()) |
58 | { | ||
59 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | const std::string str = obj_as_string; |
60 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | data.loadFromString(str); |
61 | 1 | } | |
62 | else | ||
63 | { | ||
64 | ✗ | throw eigenpy::Exception( | |
65 | "Pickle was not able to reconstruct the model from the loaded data.\n" | ||
66 | "The entry is not a string."); | ||
67 | } | ||
68 | 1 | } | |
69 | |||
70 | 65 | static bool getstate_manages_dict() | |
71 | { | ||
72 | 65 | return true; | |
73 | } | ||
74 | }; | ||
75 | |||
76 | template<typename Data> | ||
77 | struct DataPythonVisitor : public boost::python::def_visitor<DataPythonVisitor<Data>> | ||
78 | { | ||
79 | typedef typename Data::Matrix6 Matrix6; | ||
80 | typedef typename Data::Matrix6x Matrix6x; | ||
81 | typedef typename Data::Matrix3x Matrix3x; | ||
82 | typedef typename Data::Vector3 Vector3; | ||
83 | |||
84 | public: | ||
85 | #define ADD_DATA_PROPERTY(NAME, DOC) PINOCCHIO_ADD_PROPERTY(Data, NAME, DOC) | ||
86 | |||
87 | #define ADD_DATA_PROPERTY_READONLY(NAME, DOC) PINOCCHIO_ADD_PROPERTY_READONLY(Data, NAME, DOC) | ||
88 | |||
89 | #define ADD_DATA_PROPERTY_READONLY_BYVALUE(NAME, DOC) \ | ||
90 | PINOCCHIO_ADD_PROPERTY_READONLY_BYVALUE(Data, NAME, DOC) | ||
91 | |||
92 | /* --- Exposing C++ API to python through the handler ----------------- */ | ||
93 | template<class PyClass> | ||
94 | 69 | void visit(PyClass & cl) const | |
95 | { | ||
96 |
2/4✓ Branch 2 taken 69 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 69 times.
✗ Branch 6 not taken.
|
69 | cl.def(bp::init<>(bp::arg("self"), "Default constructor.")) |
97 |
3/6✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 69 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 69 times.
✗ Branch 8 not taken.
|
138 | .def(bp::init<const context::Model &>( |
98 | bp::args("self", "model"), "Constructs a data structure from a given model.")) | ||
99 | |||
100 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
101 | joints, | ||
102 | "Vector of JointData associated to each JointModel stored in the related model.") | ||
103 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
104 | a, "Vector of joint accelerations expressed in the local frame of the joint.") | ||
105 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
106 | oa, "Joint spatial acceleration expressed at the origin of the world frame.") | ||
107 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
108 | a_gf, "Joint spatial acceleration containing also the contribution of " | ||
109 | "the gravity acceleration") | ||
110 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
111 | oa_gf, "Joint spatial acceleration containing also the contribution of the gravity " | ||
112 | "acceleration, but expressed at the origin of the world frame.") | ||
113 | |||
114 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
115 | v, "Vector of joint velocities expressed in the local frame of the joint.") | ||
116 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(ov, "Vector of joint velocities expressed at the origin of the world.") |
117 | |||
118 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(f, "Vector of body forces expressed in the local frame of the joint.") |
119 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(of, "Vector of body forces expressed at the origin of the world.") |
120 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
121 | of_augmented, "Vector of body forces expressed at the origin of the " | ||
122 | "world, in the context of lagrangian formulation") | ||
123 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
124 | h, "Vector of spatial momenta expressed in the local frame of the joint.") | ||
125 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(oh, "Vector of spatial momenta expressed at the origin of the world.") |
126 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(oMi, "Body absolute placement (wrt world)") |
127 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(oMf, "frames absolute placement (wrt world)") |
128 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(liMi, "Body relative placement (wrt parent)") |
129 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(tau, "Joint torques (output of RNEA)") |
130 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(nle, "Non Linear Effects (output of nle algorithm)") |
131 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(ddq, "Joint accelerations (output of ABA)") |
132 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Ycrb, "Inertia of the sub-tree composit rigid body") |
133 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
134 | oYcrb, "Composite Rigid Body Inertia of the sub-tree expressed in the " | ||
135 | "WORLD coordinate system.") | ||
136 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Yaba, "Articulated Body Inertia of the sub-tree") |
137 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
138 | oYaba, | ||
139 | "Articulated Body Inertia of the sub-tree expressed in the WORLD coordinate system.") | ||
140 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(oL, "Acceleration propagator.") |
141 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(oK, "Inverse articulated inertia.") |
142 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(M, "The joint space inertia matrix") |
143 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Minv, "The inverse of the joint space inertia matrix") |
144 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
145 | C, "The Coriolis C(q,v) matrix such that the Coriolis effects are " | ||
146 | "given by c(q,v) = C(q,v)v") | ||
147 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(g, "Vector of generalized gravity (dim model.nv).") |
148 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Fcrb, "Spatial forces set, used in CRBA") |
149 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(lastChild, "Index of the last child (for CRBA)") |
150 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(nvSubtree, "Dimension of the subtree motion space (for CRBA)") |
151 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(U, "Joint Inertia square root (upper triangle)") |
152 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(D, "Diagonal of UDUT inertia decomposition") |
153 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(parents_fromRow, "First previous non-zero row in M (used in Cholesky)") |
154 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
155 | nvSubtree_fromRow, "Subtree of the current row index (used in Cholesky)") | ||
156 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(J, "Jacobian of joint placement") |
157 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(dJ, "Time variation of the Jacobian of joint placement (data.J).") |
158 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(iMf, "Body placement wrt to algorithm end effector.") |
159 | |||
160 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Ivx, "Right variation of the inertia matrix.") |
161 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(vxI, "Left variation of the inertia matrix.") |
162 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
163 | B, "Combined variations of the inertia matrix consistent with Christoffel symbols.") | ||
164 | |||
165 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
166 | Ag, "Centroidal matrix which maps from joint velocity to the centroidal momentum.") | ||
167 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(dAg, "Time derivative of the centroidal momentum matrix Ag.") |
168 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
169 | hg, "Centroidal momentum (expressed in the frame centered at the CoM " | ||
170 | "and aligned with the world frame).") | ||
171 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
172 | dhg, "Centroidal momentum time derivative (expressed in the frame " | ||
173 | "centered at the CoM and aligned with the world frame).") | ||
174 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Ig, "Centroidal Composite Rigid Body Inertia.") |
175 | |||
176 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(com, "CoM position of the subtree starting at joint index i.") |
177 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(vcom, "CoM velocity of the subtree starting at joint index i.") |
178 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(acom, "CoM acceleration of the subtree starting at joint index i.") |
179 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(mass, "Mass of the subtree starting at joint index i.") |
180 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(Jcom, "Jacobian of center of mass.") |
181 | |||
182 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
183 | dAdq, | ||
184 | "Variation of the spatial acceleration set with respect to the joint configuration.") | ||
185 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
186 | dAdv, "Variation of the spatial acceleration set with respect to the joint velocity.") | ||
187 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
188 | dHdq, "Variation of the spatial momenta set with respect to the joint configuration.") | ||
189 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
190 | dFdq, "Variation of the force set with respect to the joint configuration.") | ||
191 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(dFdv, "Variation of the force set with respect to the joint velocity.") |
192 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
193 | dFda, "Variation of the force set with respect to the joint acceleration.") | ||
194 | |||
195 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
196 | dtau_dq, "Partial derivative of the joint torque vector with respect " | ||
197 | "to the joint configuration.") | ||
198 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
199 | dtau_dv, | ||
200 | "Partial derivative of the joint torque vector with respect to the joint velocity.") | ||
201 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
202 | ddq_dq, "Partial derivative of the joint acceleration vector with " | ||
203 | "respect to the joint configuration.") | ||
204 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
205 | ddq_dv, "Partial derivative of the joint acceleration vector with " | ||
206 | "respect to the joint velocity.") | ||
207 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
208 | ddq_dtau, | ||
209 | "Partial derivative of the joint acceleration vector with respect to the joint torque.") | ||
210 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
211 | dvc_dq, "Partial derivative of the constraint velocity vector with " | ||
212 | "respect to the joint configuration.") | ||
213 | |||
214 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
215 | dac_dq, "Partial derivative of the contact acceleration vector with " | ||
216 | "respect to the joint configuration.") | ||
217 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
218 | dac_dv, "Partial derivative of the contact acceleration vector vector " | ||
219 | "with respect to the joint velocity.") | ||
220 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
221 | dac_da, "Partial derivative of the contact acceleration vector vector " | ||
222 | "with respect to the joint acceleration.") | ||
223 | |||
224 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(osim, "Operational space inertia matrix.") |
225 | |||
226 |
2/4✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 69 times.
✗ Branch 5 not taken.
|
138 | .ADD_DATA_PROPERTY_READONLY_BYVALUE( |
227 | dlambda_dq, "Partial derivative of the contact force vector with " | ||
228 | "respect to the joint configuration.") | ||
229 |
2/4✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 69 times.
✗ Branch 5 not taken.
|
138 | .ADD_DATA_PROPERTY_READONLY_BYVALUE( |
230 | dlambda_dv, | ||
231 | "Partial derivative of the contact force vector with respect to the joint velocity.") | ||
232 |
2/4✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 69 times.
✗ Branch 5 not taken.
|
138 | .ADD_DATA_PROPERTY_READONLY_BYVALUE( |
233 | dlambda_dtau, | ||
234 | "Partial derivative of the contact force vector with respect to the torque.") | ||
235 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
236 | kinetic_energy, "Kinetic energy in [J] computed by computeKineticEnergy") | ||
237 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
238 | potential_energy, "Potential energy in [J] computed by computePotentialEnergy") | ||
239 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
240 | mechanical_energy, | ||
241 | "Mechanical energy in [J] of the system computed by computeMechanicalEnergy") | ||
242 | |||
243 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(lambda_c, "Lagrange Multipliers linked to contact forces") |
244 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(impulse_c, "Lagrange Multipliers linked to contact impulses") |
245 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(contact_chol, "Contact Cholesky decomposition.") |
246 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
247 | primal_dual_contact_solution, | ||
248 | "Right hand side vector when solving the contact dynamics KKT problem.") | ||
249 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY( |
250 | lambda_c_prox, "Proximal Lagrange Multipliers used in the computation " | ||
251 | "of the Forward Dynamics computations.") | ||
252 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(primal_rhs_contact, "Primal RHS in contact dynamic equations.") |
253 | |||
254 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(dq_after, "Generalized velocity after the impact.") |
255 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(staticRegressor, "Static regressor.") |
256 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(jointTorqueRegressor, "Joint torque regressor.") |
257 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(kineticEnergyRegressor, "Kinetic energy regressor.") |
258 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .ADD_DATA_PROPERTY(potentialEnergyRegressor, "Potential energy regressor.") |
259 | |||
260 | #ifndef PINOCCHIO_PYTHON_SKIP_COMPARISON_OPERATIONS | ||
261 |
1/2✓ Branch 2 taken 65 times.
✗ Branch 3 not taken.
|
65 | .def(bp::self == bp::self) |
262 |
1/2✓ Branch 2 taken 65 times.
✗ Branch 3 not taken.
|
65 | .def(bp::self != bp::self) |
263 | #endif | ||
264 | ; | ||
265 | |||
266 | 69 | bp::register_ptr_to_python<std::shared_ptr<Data>>(); | |
267 | 69 | } | |
268 | |||
269 | /* --- Expose --------------------------------------------------------- */ | ||
270 | 69 | static void expose() | |
271 | { | ||
272 | 69 | bp::class_<Data>( | |
273 | "Data", | ||
274 | "Articulated rigid body data related to a Model.\n" | ||
275 | "It contains all the data that can be modified by the Pinocchio algorithms.", | ||
276 | bp::no_init) | ||
277 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .def(DataPythonVisitor()) |
278 |
1/2✓ Branch 1 taken 69 times.
✗ Branch 2 not taken.
|
69 | .def(CopyableVisitor<Data>()) |
279 | #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION | ||
280 |
1/2✓ Branch 1 taken 65 times.
✗ Branch 2 not taken.
|
65 | .def(SerializableVisitor<Data>()) |
281 |
1/2✓ Branch 1 taken 65 times.
✗ Branch 2 not taken.
|
65 | .def_pickle(PickleData<Data>()) |
282 | #endif | ||
283 | ; | ||
284 | |||
285 | typedef PINOCCHIO_ALIGNED_STD_VECTOR(Vector3) StdVec_Vector3; | ||
286 | typedef PINOCCHIO_ALIGNED_STD_VECTOR(Matrix6x) StdVec_Matrix6x; | ||
287 | typedef PINOCCHIO_ALIGNED_STD_VECTOR(Matrix6) StdVec_Matrix6; | ||
288 | |||
289 |
2/4✓ Branch 2 taken 69 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 69 times.
✗ Branch 6 not taken.
|
69 | StdAlignedVectorPythonVisitor<Vector3, false>::expose( |
290 | "StdVec_Vector3", | ||
291 | ✗ | eigenpy::details::overload_base_get_item_for_std_vector<StdVec_Vector3>()); | |
292 | |||
293 |
2/4✓ Branch 2 taken 69 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 69 times.
✗ Branch 6 not taken.
|
69 | StdAlignedVectorPythonVisitor<Matrix6x, false>::expose( |
294 | "StdVec_Matrix6x", | ||
295 | ✗ | eigenpy::details::overload_base_get_item_for_std_vector<StdVec_Matrix6x>()); | |
296 |
2/4✓ Branch 2 taken 69 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 69 times.
✗ Branch 6 not taken.
|
69 | StdAlignedVectorPythonVisitor<Matrix6, false>::expose( |
297 | "StdVec_Matrix6", | ||
298 | ✗ | eigenpy::details::overload_base_get_item_for_std_vector<StdVec_Matrix6>()); | |
299 |
3/6✓ Branch 2 taken 69 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 69 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 69 times.
✗ Branch 10 not taken.
|
69 | StdVectorPythonVisitor<std::vector<int>, true>::expose("StdVec_int"); |
300 | #ifndef PINOCCHIO_PYTHON_NO_SERIALIZATION | ||
301 | 65 | serialize<typename StdAlignedVectorPythonVisitor<Vector3, false>::vector_type>(); | |
302 | 65 | serialize<typename StdAlignedVectorPythonVisitor<Matrix6x, false>::vector_type>(); | |
303 | #endif | ||
304 | 69 | serialize<std::vector<int>>(); | |
305 | 69 | } | |
306 | }; | ||
307 | |||
308 | } // namespace python | ||
309 | } // namespace pinocchio | ||
310 | |||
311 | #undef ADD_DATA_PROPERTY | ||
312 | #undef ADD_DATA_PROPERTY_READONLY | ||
313 | #undef ADD_DATA_PROPERTY_READONLY_BYVALUE | ||
314 | |||
315 | #endif // ifndef __pinocchio_python_multibody_data_hpp__ | ||
316 |