You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import time
|
|
import os
|
|
|
|
from tqdm import tqdm
|
|
|
|
from cereal.messaging import PubMaster, recv_one, sub_sock
|
|
from cereal.services import service_list
|
|
from tools.lib.logreader import LogReader
|
|
from xx.chffr.lib.route import Route, RouteSegment
|
|
from tools.lib.route_framereader import RouteFrameReader
|
|
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:
|
|
if msg.which() == 'liveCalibration':
|
|
pm.send('liveCalibration', msg.as_builder())
|
|
|
|
time.sleep(1.0)
|
|
values = {}
|
|
|
|
out_msgs = []
|
|
for msg in tqdm(msgs):
|
|
w = msg.which()
|
|
|
|
if w == 'liveCalibration':
|
|
pm.send(w, msg.as_builder())
|
|
|
|
if w == 'frame':
|
|
msg = msg.as_builder()
|
|
|
|
frame_id = msg.frame.frameId
|
|
img = frame_reader.get(frame_id, pix_fmt="rgb24")[:,:,::-1]
|
|
|
|
msg.frame.image = img.flatten().tobytes()
|
|
pm.send(w, msg)
|
|
|
|
model = recv_one(model_sock)
|
|
model = model.as_builder()
|
|
model.logMonoTime = 0
|
|
model = model.as_reader()
|
|
out_msgs.append(model)
|
|
|
|
save_log(args.output_path, out_msgs)
|
|
|
|
# tm = model.logMonoTime / 1.0e9
|
|
# model = model.model
|
|
# append_dict("model/data/path", tm, model.path.to_dict(), values)
|
|
# append_dict("model/data/left_lane", tm, model.leftLane.to_dict(), values)
|
|
# append_dict("model/data/right_lane", tm, model.rightLane.to_dict(), values)
|
|
# append_dict("model/data/lead", tm, model.lead.to_dict(), values)
|
|
|
|
# save_dict_as_column_store(values, os.path.join(args.output_path, "LiveVisionD", args.segment_name))
|
|
|