code: def _on_rss_response(self, response):
      if not self or not response:
          return
      delta_time = 0.1
      if self.timestamp:
          delta_time = response.timestamp - self.timestamp
      if delta_time > -0.05:
          self.timestamp = response.timestamp
          self.response_valid = response.response_valid
          self.proper_response = response.proper_response
          self.ego_dynamics_on_route = response.ego_dynamics_on_route
          self.rss_state_snapshot = response.rss_state_snapshot
          self.situation_snapshot = response.situation_snapshot
          self.world_model = response.world_model
  
          # calculate the allowed heading ranges:
          if response.proper_response.headingRanges:
              heading = float(
                  response.ego_dynamics_on_route.ego_heading
              )
              heading_ranges = response.proper_response.headingRanges
              steering_range = ad.rss.state.HeadingRange()
              steering_range.begin = -self._max_steer_angle + heading
              steering_range.end = self._max_steer_angle + heading
              ad.rss.unstructured.getHeadingOverlap(
                  steering_range, heading_ranges
              )
              self._allowed_heading_ranges = heading_ranges
          else:
              self._allowed_heading_ranges = []
  
          if self.unstructured_scene_visualizer:
              self.unstructured_scene_visualizer.tick(
                  response.frame, response, self._allowed_heading_ranges
              )
  
          new_states = []
          for (
              rss_state
          ) in response.rss_state_snapshot.individualResponses:
              new_states.append(
                  RssStateInfo(
                      rss_state,
                      response.ego_dynamics_on_route,
                      response.world_model,
                  )
              )
          if len(new_states) > 0:
              new_states.sort(
                  key=lambda rss_states: rss_states.distance
              )
          self.individual_rss_states = new_states
          if self.bounding_box_visualizer:
              self.bounding_box_visualizer.tick(
                  response.frame, self.individual_rss_states
              )
          if self.state_visualizer:
              self.state_visualizer.tick(self.individual_rss_states)
          self.debug_visualizer.tick(
              self.route,
              not response.proper_response.isSafe,
              self.individual_rss_states,
              self.ego_dynamics_on_route,
          )
  
      else:
          print("ignore outdated response {}".format(delta_time))
  
imports: import glob
  import os
  import sys
  import inspect
  import carla
  from carla import ad
  import math
  from rss_visualization import RssDebugVisualizer
label_desc: Use image node_id 13 for calling the RssSensor obj's underlying member method code with example usage: obj._on_rss_response(response) without return types