Exemple #1
0
  def _process_commands(self, cmd, route, pub_types):
    seek_to = None
    if route is None or (isinstance(cmd, SetRoute) and route.name != cmd.name):
      seek_to = cmd.start_time
      route = Route(cmd.name, cmd.data_dir)
      self._lr = MultiLogIterator(route.log_paths(), wraparound=True)
      if self._frame_reader is not None:
        self._frame_reader.close()
      if "frame" in pub_types or "encodeIdx" in pub_types:
        # reset frames for a route
        self._frame_id_lookup = {}
        self._frame_reader = RouteFrameReader(
          route.camera_paths(), None, self._frame_id_lookup, readahead=True)

    # always reset this on a seek
    if isinstance(cmd, SeekRelativeTime):
      seek_to = self._lr.tell() + cmd.secs
    elif isinstance(cmd, SeekAbsoluteTime):
      seek_to = cmd.secs
    elif isinstance(cmd, StopAndQuit):
      exit()

    if seek_to is not None:
      print("seeking", seek_to)
      if not self._lr.seek(seek_to):
        print("Can't seek: time out of bounds")
      else:
        next(self._lr)   # ignore one
    return route
from common.column_store import save_dict_as_column_store
from xx.pipeline.lib.log_time_series import append_dict
from selfdrive.test.process_replay.compare_logs import save_log

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Run visiond on segment")
    parser.add_argument("segment_name", help="The segment to run")
    parser.add_argument("output_path", help="The output file")

    args = parser.parse_args()
    segment = RouteSegment.from_canonical_name(args.segment_name)
    route = Route(segment._name._route_name)

    frame_id_lookup = {}
    frame_reader = RouteFrameReader(route.camera_paths(),
                                    None,
                                    frame_id_lookup,
                                    readahead=True)

    msgs = list(LogReader(segment.log_path))

    pm = PubMaster(['liveCalibration', 'frame'])
    model_sock = sub_sock('model')

    # Read encodeIdx
    for msg in msgs:
        if msg.which() == 'encodeIdx':
            frame_id_lookup[msg.encodeIdx.frameId] = (msg.encodeIdx.segmentNum,
                                                      msg.encodeIdx.segmentId)

    # Send some livecalibration messages to initalize visiond
    for msg in msgs: