code: def iterative_closest_point(
      batch_size=10,
      n_points_X=100,
      n_points_Y=100,
      dim=3,
      use_pointclouds=False,
      estimate_scale=False,
  ):
      device = torch.device("cuda:0")
  
      # initialize a ground truth point cloud
      X, Y = [
          TestCorrespondingPointsAlignment.init_point_cloud(
              batch_size=batch_size,
              n_points=n_points,
              dim=dim,
              device=device,
              use_pointclouds=use_pointclouds,
              random_pcl_size=True,
              fix_seed=i,
          )
          for i, n_points in enumerate((n_points_X, n_points_Y))
      ]
  
      torch.cuda.synchronize()
  
      def run_iterative_closest_point():
          points_alignment.iterative_closest_point(
              X,
              Y,
              estimate_scale=estimate_scale,
              allow_reflection=False,
              verbose=False,
              max_iterations=100,
              relative_rmse_thr=1e-4,
          )
          torch.cuda.synchronize()
  
      return run_iterative_closest_point
  
imports: import unittest
  import numpy
  import torch
  from pytorch3d.ops import points_alignment
  from pytorch3d.structures.pointclouds import Pointclouds
  from pytorch3d.transforms import rotation_conversions
  from .common_testing import get_tests_dir, TestCaseMixin
label_desc: Use image node_id 2 for calling the TestICP obj's underlying member method code with example usage: obj.iterative_closest_point(batch_size, n_points_X, n_points_Y, dim, use_pointclouds, estimate_scale) and returns: run_iterative_closest_point