code: def test_sensor_tick_time(self):
      print("TestSensorTickTime.test_sensor_tick_time")
  
      bp_lib = self.world.get_blueprint_library()
  
      sensor_exception = {
          "sensor.camera.depth",
          "sensor.camera.normals",
          "sensor.camera.optical_flow",
          "sensor.camera.rgb",
          "sensor.camera.semantic_segmentation",
          "sensor.camera.dvs",
          "sensor.other.obstacle",
          "sensor.camera.instance_segmentation",
      }
      spawned_sensors = []
      sensor_tick = 1.0
  
      for bp_sensor in bp_lib.filter("sensor.*"):
          if bp_sensor.id in sensor_exception:
              continue
  
          if bp_sensor.has_attribute("sensor_tick"):
              spawned_sensors.append(
                  Sensor(self.world, bp_sensor, sensor_tick)
              )
  
      num_ticks = 50
      for _ in range(0, num_ticks):
          self.world.tick()
      time.sleep(1.0)
  
      dt = self.world.get_settings().fixed_delta_seconds
      total_time = num_ticks * dt
      num_sensor_ticks = int(math.ceil(total_time / sensor_tick))
  
      for sensor in spawned_sensors:
          self.assertEqual(
              sensor.num_ticks,
              num_sensor_ticks,
              "\n\n {} does not match tick count".format(
                  sensor.bp_sensor.id
              ),
          )
          sensor.destroy()
  
file_path: carla/PythonAPI/test/smoke/test_sensor_tick_time.py
imports: from .None import SyncSmokeTest
  import carla
  import time
  import math
label_desc: Use image node_id 1 for calling the TestSensorTickTime obj's underlying member method code with example usage: obj.test_sensor_tick_time() without return types