in differentiable_robot_model/spatial_vector_algebra.py [0:0]
def get_spatial_mat(self):
mass, com, inertia_mat = self._get_parameter_values()
mcom = mass * com
com_skew_symm_mat = utils.vector3_to_skew_symm_matrix(com)
inertia = inertia_mat + mass * (
com_skew_symm_mat @ com_skew_symm_mat.transpose(-2, -1)
)
mat = torch.zeros((6, 6), device=self._device)
mat[:3, :3] = inertia
mat[3, 0] = 0
mat[3, 1] = mcom[0, 2]
mat[3, 2] = -mcom[0, 1]
mat[4, 0] = -mcom[0, 2]
mat[4, 1] = 0.0
mat[4, 2] = mcom[0, 0]
mat[5, 0] = mcom[0, 1]
mat[5, 1] = -mcom[0, 0]
mat[5, 2] = 0.0
mat[0, 3] = 0
mat[0, 4] = -mcom[0, 2]
mat[0, 5] = mcom[0, 1]
mat[1, 3] = mcom[0, 2]
mat[1, 4] = 0.0
mat[1, 5] = -mcom[0, 0]
mat[2, 3] = -mcom[0, 1]
mat[2, 4] = mcom[0, 0]
mat[2, 5] = 0.0
mat[3, 3] = mass
mat[4, 4] = mass
mat[5, 5] = mass
return mat