code: def test_track_batch(self):
      tracker = FragmentRegistrationTracker(
          stage="test", tau_2=0.83, num_points=100
      )
      model = MockModel()
      list_hit_ratio = [1.0, 0.9, 0.8, (0.9 + 0.84 + 0.8 + 0.7) / 4]
      list_feat_match_ratio = [1.0, 1.0, 0.0, 0.5]
      for i in range(4):
          tracker.track(model)
          metrics = tracker.get_metrics()
          # the most important metrics in registration
          self.assertAlmostEqual(
              metrics["test_hit_ratio"], list_hit_ratio[i], 2
          )
          self.assertAlmostEqual(
              metrics["test_feat_match_ratio"],
              list_feat_match_ratio[i],
              1,
          )
          tracker.reset("test")
          model.iter += 1
  
imports: import unittest
  import torch
  import numpy
  import os
  import random
  import sys
  from torch_geometric.data import Data
  from torch_points3d.utils.geometry import rodrigues
  from torch_points3d.metrics.registration_tracker import FragmentRegistrationTracker
label_desc: Use image node_id 1 for calling the TestRegistrationTracker obj's underlying member method code with example usage: obj.test_track_batch() without return types