code: def teaser_pp_registration(
      xyz,
      xyz_target,
      noise_bound=0.05,
      cbar2=1,
      rotation_gnc_factor=1.4,
      rotation_max_iterations=100,
      rotation_cost_threshold=1e-12,
  ):
      assert xyz.shape == xyz_target.shape
      import teaserpp_python
  
      # Populating the parameters
      solver_params = teaserpp_python.RobustRegistrationSolver.Params()
      solver_params.cbar2 = cbar2
      solver_params.noise_bound = noise_bound
      solver_params.estimate_scaling = False
      solver_params.rotation_estimation_algorithm = (
          teaserpp_python.RobustRegistrationSolver.ROTATION_ESTIMATION_ALGORITHM.GNC_TLS
      )
      solver_params.rotation_gnc_factor = rotation_gnc_factor
      solver_params.rotation_max_iterations = rotation_max_iterations
      solver_params.rotation_cost_threshold = rotation_cost_threshold
  
      solver = teaserpp_python.RobustRegistrationSolver(solver_params)
  
      solver.solve(
          xyz.T.detach().cpu().numpy(),
          xyz_target.T.detach().cpu().numpy(),
      )
  
      solution = solver.getSolution()
      T_res = torch.eye(4, device=xyz.device)
      T_res[:3, :3] = torch.from_numpy(solution.rotation).to(xyz.device)
      T_res[:3, 3] = torch.from_numpy(solution.translation).to(
          xyz.device
      )
      return T_res
  
file_path: torch-points3d/torch_points3d/utils/registration.py
imports: import open3d
  import numpy
  import torch
  from torch_points3d.utils.geometry import get_trans
  from torch_geometric.nn import knn
label_desc: Use image node_id 6 for calling a global function with example usage: teaser_pp_registration(xyz, xyz_target, noise_bound, cbar2, rotation_gnc_factor, rotation_max_iterations, rotation_cost_threshold) and returns: T_res