5 #ifndef __pinocchio_python_multibody_data_hpp__ 6 #define __pinocchio_python_multibody_data_hpp__ 8 #include <boost/python.hpp> 10 #include "pinocchio/multibody/data.hpp" 11 #include "pinocchio/serialization/data.hpp" 31 template<
typename Data>
36 return bp::make_tuple();
42 return bp::make_tuple(bp::str(
str));
47 if(bp::len(tup) == 0 || bp::len(tup) > 1)
49 throw eigenpy::Exception(
"Pickle was not able to reconstruct the model from the loaded data.\n" 50 "The pickle data structure contains too many elements.");
53 bp::object py_obj = tup[0];
54 boost::python::extract<std::string> obj_as_string(py_obj.ptr());
55 if(obj_as_string.check())
57 const std::string
str = obj_as_string;
62 throw eigenpy::Exception(
"Pickle was not able to reconstruct the model from the loaded data.\n" 63 "The entry is not a string.");
72 :
public boost::python::def_visitor< DataPythonVisitor >
80 #define ADD_DATA_PROPERTY(NAME,DOC) \ 81 def_readwrite(#NAME, \ 85 #define ADD_DATA_PROPERTY_READONLY(NAME,DOC) \ 90 #define ADD_DATA_PROPERTY_READONLY_BYVALUE(NAME,DOC) \ 92 make_getter(&Data::NAME,bp::return_value_policy<bp::return_by_value>()), \ 97 template<
class PyClass>
101 .def(bp::init<>(bp::arg(
"self"),
"Default constructor."))
102 .def(bp::init<Model>(bp::arg(
"model"),
"Constructs a data structure from a given model."))
104 .ADD_DATA_PROPERTY(
a,
"Joint spatial acceleration")
105 .ADD_DATA_PROPERTY(oa,
106 "Joint spatial acceleration expressed at the origin of the world frame.")
107 .ADD_DATA_PROPERTY(a_gf,
108 "Joint spatial acceleration containing also the contribution of the gravity acceleration")
109 .ADD_DATA_PROPERTY(oa_gf,
"Joint spatial acceleration containing also the contribution of the gravity acceleration, but expressed at the origin of the world frame.")
111 .ADD_DATA_PROPERTY(
v,
"Joint spatial velocity expressed in the joint frame.")
112 .ADD_DATA_PROPERTY(ov,
"Joint spatial velocity expressed at the origin of the world frame.")
114 .ADD_DATA_PROPERTY(f,
"Joint spatial force expresssed in the joint frame.")
115 .ADD_DATA_PROPERTY(of,
"Joint spatial force expresssed at the origin of the world frame.")
116 .ADD_DATA_PROPERTY(
h,
"Vector of spatial momenta expressed in the local frame of the joint.")
117 .ADD_DATA_PROPERTY(oMi,
"Body absolute placement (wrt world)")
118 .ADD_DATA_PROPERTY(oMf,
"frames absolute placement (wrt world)")
119 .ADD_DATA_PROPERTY(liMi,
"Body relative placement (wrt parent)")
120 .ADD_DATA_PROPERTY(
tau,
"Joint torques (output of RNEA)")
121 .ADD_DATA_PROPERTY(
nle,
"Non Linear Effects (output of nle algorithm)")
122 .ADD_DATA_PROPERTY(ddq,
"Joint accelerations (output of ABA)")
123 .ADD_DATA_PROPERTY(Ycrb,
"Inertia of the sub-tree composit rigid body")
124 .ADD_DATA_PROPERTY(
M,
"The joint space inertia matrix")
125 .ADD_DATA_PROPERTY(Minv,
"The inverse of the joint space inertia matrix")
126 .ADD_DATA_PROPERTY(
C,
"The Coriolis C(q,v) matrix such that the Coriolis effects are given by c(q,v) = C(q,v)v")
127 .ADD_DATA_PROPERTY(g,
"Vector of generalized gravity (dim model.nv).")
128 .ADD_DATA_PROPERTY(Fcrb,
"Spatial forces set, used in CRBA")
129 .ADD_DATA_PROPERTY(lastChild,
"Index of the last child (for CRBA)")
130 .ADD_DATA_PROPERTY(nvSubtree,
"Dimension of the subtree motion space (for CRBA)")
131 .ADD_DATA_PROPERTY(
U,
"Joint Inertia square root (upper triangle)")
132 .ADD_DATA_PROPERTY(
D,
"Diagonal of UDUT inertia decomposition")
133 .ADD_DATA_PROPERTY(parents_fromRow,
"First previous non-zero row in M (used in Cholesky)")
134 .ADD_DATA_PROPERTY(nvSubtree_fromRow,
"Subtree of the current row index (used in Cholesky)")
135 .ADD_DATA_PROPERTY(
J,
"Jacobian of joint placement")
136 .ADD_DATA_PROPERTY(dJ,
"Time variation of the Jacobian of joint placement (data.J).")
137 .ADD_DATA_PROPERTY(iMf,
"Body placement wrt to algorithm end effector.")
139 .ADD_DATA_PROPERTY(Ivx,
"Right variation of the inertia matrix.")
140 .ADD_DATA_PROPERTY(vxI,
"Left variation of the inertia matrix.")
141 .ADD_DATA_PROPERTY(
B,
"Combined variations of the inertia matrix consistent with Christoffel symbols.")
143 .ADD_DATA_PROPERTY(Ag,
144 "Centroidal matrix which maps from joint velocity to the centroidal momentum.")
145 .ADD_DATA_PROPERTY(dAg,
146 "Time derivative of the centroidal momentum matrix Ag.")
147 .ADD_DATA_PROPERTY(hg,
148 "Centroidal momentum (expressed in the frame centered at the CoM and aligned with the world frame).")
149 .ADD_DATA_PROPERTY(dhg,
150 "Centroidal momentum time derivative (expressed in the frame centered at the CoM and aligned with the world frame).")
151 .ADD_DATA_PROPERTY(Ig,
152 "Centroidal Composite Rigid Body Inertia.")
154 .ADD_DATA_PROPERTY(
com,
"CoM position of the subtree starting at joint index i.")
155 .ADD_DATA_PROPERTY(vcom,
"CoM velocity of the subtree starting at joint index i.")
156 .ADD_DATA_PROPERTY(acom,
"CoM acceleration of the subtree starting at joint index i.")
157 .ADD_DATA_PROPERTY(mass,
"Mass of the subtree starting at joint index i.")
158 .ADD_DATA_PROPERTY(Jcom,
"Jacobian of center of mass.")
160 .ADD_DATA_PROPERTY(
dtau_dq,
"Partial derivative of the joint torque vector with respect to the joint configuration.")
161 .ADD_DATA_PROPERTY(
dtau_dv,
"Partial derivative of the joint torque vector with respect to the joint velocity.")
162 .ADD_DATA_PROPERTY(
ddq_dq,
"Partial derivative of the joint acceleration vector with respect to the joint configuration.")
163 .ADD_DATA_PROPERTY(
ddq_dv,
"Partial derivative of the joint acceleration vector with respect to the joint velocity.")
165 .ADD_DATA_PROPERTY(kinetic_energy,
"Kinetic energy in [J] computed by computeKineticEnergy")
166 .ADD_DATA_PROPERTY(potential_energy,
"Potential energy in [J] computed by computePotentialEnergy")
168 .ADD_DATA_PROPERTY(lambda_c,
"Lagrange Multipliers linked to contact forces")
169 .ADD_DATA_PROPERTY(impulse_c,
"Lagrange Multipliers linked to contact impulses")
171 .ADD_DATA_PROPERTY(dq_after,
"Generalized velocity after the impact.")
172 .ADD_DATA_PROPERTY(staticRegressor,
"Static regressor.")
173 .ADD_DATA_PROPERTY(jointTorqueRegressor,
"Joint torque regressor.")
175 .def(bp::self == bp::self)
176 .def(bp::self != bp::self)
183 bp::class_<Data>(
"Data",
184 "Articulated rigid body data related to a Model.\n" 185 "It contains all the data that can be modified by the Pinocchio algorithms.",
197 serialize<StdAlignedVectorPythonVisitor<Vector3,false>::vector_type>();
201 serialize<StdAlignedVectorPythonVisitor<Matrix6x,false>::vector_type>();
204 serialize<StdVectorPythonVisitor<int>::vector_type>();
211 #endif // ifndef __pinocchio_python_multibody_data_hpp__ static ::boost::python::class_< vector_type > expose(const std::string &class_name, const std::string &doc_string="")
static void setstate(Data &data, bp::tuple tup)
static bool getstate_manages_dict()
void def(const char *name, Func func)
std::string saveToString() const
Saves a Derived object to a string.
static ::boost::python::class_< vector_type > expose(const std::string &class_name, const std::string &doc_string="")
Add the Python method copy to allow a copy of this by calling the copy constructor.
typedef PINOCCHIO_ALIGNED_STD_VECTOR(Force) ForceAlignedVector
static bp::tuple getinitargs(const Data &)
Main pinocchio namespace.
static bp::tuple getstate(const Data &data)
void loadFromString(const std::string &str)
Loads a Derived object from a string.
Eigen::Matrix< Scalar, 3, Eigen::Dynamic, Options > Matrix3x
The 3d jacobian type (temporary)
#define EIGENPY_DEFINE_STRUCT_ALLOCATOR_SPECIALIZATION(...)
Eigen::Matrix< Scalar, 6, Eigen::Dynamic, Options > Matrix6x
The 6d jacobian type (temporary)
Eigen::Matrix< Scalar, 3, 1, Options > Vector3
void visit(PyClass &cl) const