code: def test_compute_transfo_error(self):
      axis = torch.randn(3)
      axis = axis / torch.norm(axis)
      theta = 30 * np.pi / 180
  
      R = rodrigues(axis, theta)
  
      T = torch.eye(4)
      T[:3, :3] = R
      T[0, 3] = 1
  
      rte, rre = compute_transfo_error(torch.eye(4), T)
      npt.assert_allclose(rte.item(), 1)
      npt.assert_allclose(rre.item(), 30, rtol=1e-3)
  
imports: import numpy
  import torch
  import unittest
  import numpy.testing
  import os
  import sys
  from torch_points3d.utils.registration import estimate_transfo
  from torch_points3d.utils.registration import fast_global_registration
  from torch_points3d.utils.registration import ransac_registration
  from torch_points3d.metrics.registration_metrics import compute_hit_ratio
  from torch_points3d.metrics.registration_metrics import compute_transfo_error
  from torch_points3d.metrics.registration_metrics import compute_scaled_registration_error
  from torch_points3d.utils.geometry import rodrigues
  from torch_points3d.utils.geometry import euler_angles_to_rotation_matrix
label_desc: Use image node_id 6 for calling the TestRegistrationMetrics obj's underlying member method code with example usage: obj.test_compute_transfo_error() without return types