in differentiable_robot_model/rigid_body_params.py [0:0]
def forward(self):
raw_l_input = self.l.unsqueeze(0)
[spsd_3d_cov_inertia_matrix, _] = super().get_symm_pos_semi_def_matrix_and_l(
raw_l_input=raw_l_input
)
spsd_3d_cov_inertia_matrix = spsd_3d_cov_inertia_matrix.squeeze()
spd_3d_cov_inertia_matrix = spsd_3d_cov_inertia_matrix + (
self.spd_3d_cov_inertia_mat_diag_bias * torch.eye(3, device=self.l.device)
)
inertia_matrix = spd_3d_cov_inertia_matrix.new_zeros((3, 3))
inertia_matrix[0, 0] = (
spd_3d_cov_inertia_matrix[1, 1] + spd_3d_cov_inertia_matrix[2, 2]
)
inertia_matrix[1, 1] = (
spd_3d_cov_inertia_matrix[0, 0] + spd_3d_cov_inertia_matrix[2, 2]
)
inertia_matrix[2, 2] = (
spd_3d_cov_inertia_matrix[0, 0] + spd_3d_cov_inertia_matrix[1, 1]
)
inertia_matrix[1, 0] = -spd_3d_cov_inertia_matrix[1, 0]
inertia_matrix[2, 0] = -spd_3d_cov_inertia_matrix[2, 0]
inertia_matrix[2, 1] = -spd_3d_cov_inertia_matrix[2, 1]
inertia_matrix[0, 1] = inertia_matrix[1, 0]
inertia_matrix[0, 2] = inertia_matrix[2, 0]
inertia_matrix[1, 2] = inertia_matrix[2, 1]
return inertia_matrix