in scripts/gen_wrappers.py [0:0]
def _add_jacobian_getters(obj_type):
cap_type = obj_type.title() # Capitalized
code = '''
@property
def {obj_type}_jacp(self):
jacps = np.zeros((self._model.n{obj_type}, 3 * self._model.nv))
cdef double [:] jacp_view
for i, jacp in enumerate(jacps):
jacp_view = jacp
mj_jac{cap_type}(self._model.ptr, self.ptr, &jacp_view[0], NULL, i)
return jacps
@property
def {obj_type}_jacr(self):
jacrs = np.zeros((self._model.n{obj_type}, 3 * self._model.nv))
cdef double [:] jacr_view
for i, jacr in enumerate(jacrs):
jacr_view = jacr
mj_jac{cap_type}(self._model.ptr, self.ptr, NULL, &jacr_view[0], i)
return jacrs
@property
def {obj_type}_xvelp(self):
jacp = self.{obj_type}_jacp.reshape((self._model.n{obj_type}, 3, self._model.nv))
xvelp = np.dot(jacp, self.qvel)
return xvelp
@property
def {obj_type}_xvelr(self):
jacr = self.{obj_type}_jacr.reshape((self._model.n{obj_type}, 3, self._model.nv))
xvelr = np.dot(jacr, self.qvel)
return xvelr\n'''.format(obj_type=obj_type, cap_type=cap_type)
return code