Esempio n. 1
0
  def object_stats(self):
    object_stats = ObjectStats()
    object_stats.update(self._left_time)
    object_stats.update(self._num_left_looks)
    object_stats.update(self._right_time)
    object_stats.update(self._num_right_looks)
    init_features = [
      'num_left_looks', 'left_time', 'mean_left', 'left_stddev',
      'num_right_looks', 'right_time', 'mean_right', 'right_stddev'
    ]
    for obj in objects.OBJECTS:
      for feature in init_features:
        object_stats.add(obj, feature, 0)
    for obj, stats in object_stats.items():
      num_left_looks = stats['num_left_looks']
      left_time = stats['left_time']
      mean_left = left_time / num_left_looks if num_left_looks != 0 else 0
      stats['mean_left'] = mean_left

      squared_left = self._squared_left.get_stats(obj)['squared_left']
      squared_mean = mean_left * mean_left
      stddev = (
        squared_left / num_left_looks - squared_mean
        if num_left_looks != 0 else 0
      )
      stats['left_stddev'] = stddev

      num_right_looks = stats['num_right_looks']
      right_time = stats['right_time']
      mean_right = right_time / num_right_looks if num_right_looks != 0 else 0
      stats['mean_right'] = mean_right

      squared_right = self._squared_right.get_stats(obj)['squared_right']
      squared_mean = mean_right * mean_right
      stddev = (
        squared_right / num_right_looks - squared_mean
        if num_right_looks != 0 else 0
      )
      stats['right_stddev'] = stddev
    return object_stats
Esempio n. 2
0
def process_experiment((path, object_timeline)):
  """Extract features of the bag file."""
  print('Processing', path)
  bag = open_bag(path)
  if bag is None:
    return None
  object_stats = ObjectStats()
  time_taken_processor = processors.TimeTaken(object_timeline)
  camera_movement_processor = processors.CameraMovementTime(object_timeline)
  marker_movement_processor = processors.MarkerMovementTime(object_timeline)
  grasp_count_processor = processors.GraspCount(object_timeline)
  for topic, message, time in bag.read_messages(topics=EXPERIMENT_TOPICS):
    model = message_factory.model(message)
    if model is None:
      continue
    time_taken_processor.update(topic, model, time)
    camera_movement_processor.update(topic, model, time)
    marker_movement_processor.update(topic, model, time)
    grasp_count_processor.update(topic, model, time)
  bag.close()
  time_taken_processor.update_last()
  object_stats.update(time_taken_processor.object_stats())
  object_stats.update(camera_movement_processor.object_stats())
  object_stats.update(marker_movement_processor.object_stats())
  object_stats.update(grasp_count_processor.object_stats())
  for obj, stats in object_stats.items():
    stats['other_time'] = (
      stats['time_taken'] - stats['camera_movement_time'] -
      stats['marker_movement_time']
    )

  timeline = build_timeline(
    marker_movement_processor.timeline(),
    camera_movement_processor.timeline())
  
  return object_stats, timeline