From 9f395d26d25e3ddb728aff001d7df15a7abc9d9e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Thu, 16 Jun 2022 22:41:13 -0700 Subject: [PATCH] regen: send wideRoadCameraState (#24863) * fix camera malfunction * revert * send in one process to fix frames out of sync * not used * revert * fix and add --no-upload for CI testing * fingerprint if source is fw * no FW versions old-commit-hash: 5dce006a82879f133ab69355b6c9b8c74d2b4d33 --- .../test/process_replay/process_replay.py | 3 +-- selfdrive/test/process_replay/regen.py | 22 ++++++++++--------- selfdrive/test/process_replay/regen_all.py | 9 ++++---- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/selfdrive/test/process_replay/process_replay.py b/selfdrive/test/process_replay/process_replay.py index b016eb1c9f..c368e6b575 100755 --- a/selfdrive/test/process_replay/process_replay.py +++ b/selfdrive/test/process_replay/process_replay.py @@ -15,7 +15,6 @@ from cereal.services import service_list from common.params import Params from common.timeout import Timeout from panda.python import ALTERNATIVE_EXPERIENCE -from selfdrive.car.fingerprints import FW_VERSIONS from selfdrive.car.car_helpers import get_car, interfaces from selfdrive.test.process_replay.helpers import OpenpilotPrefix from selfdrive.manager.process import PythonProcess @@ -372,7 +371,7 @@ def setup_env(simulation=False, CP=None): if CP.alternativeExperience == ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS: params.put_bool("DisengageOnAccelerator", False) - if CP.fingerprintSource == "fw" and CP.carFingerprint in FW_VERSIONS: + if CP.fingerprintSource == "fw": params.put("CarParamsCache", CP.as_builder().to_bytes()) else: os.environ['SKIP_FW_QUERY'] = "1" diff --git a/selfdrive/test/process_replay/regen.py b/selfdrive/test/process_replay/regen.py index dfc62a4558..d2f239c249 100755 --- a/selfdrive/test/process_replay/regen.py +++ b/selfdrive/test/process_replay/regen.py @@ -127,7 +127,10 @@ def replay_cameras(lr, frs, disable_tqdm=False): ] def replay_camera(s, stream, dt, vipc_server, frames, size, use_extra_client): - pm = messaging.PubMaster([s, ]) + services = [(s, stream)] + if use_extra_client: + services.append(("wideRoadCameraState", VisionStreamType.VISION_STREAM_WIDE_ROAD)) + pm = messaging.PubMaster([s for s, _ in services]) rk = Ratekeeper(1 / dt, print_delay_threshold=None) img = b"\x00" * int(size[0] * size[1] * 3 / 2) @@ -137,16 +140,15 @@ def replay_cameras(lr, frs, disable_tqdm=False): rk.keep_time() - m = messaging.new_message(s) - msg = getattr(m, s) - msg.frameId = rk.frame - msg.timestampSof = m.logMonoTime - msg.timestampEof = m.logMonoTime - pm.send(s, m) + for s, stream in services: + m = messaging.new_message(s) + msg = getattr(m, s) + msg.frameId = rk.frame + msg.timestampSof = m.logMonoTime + msg.timestampEof = m.logMonoTime + pm.send(s, m) - vipc_server.send(stream, img, msg.frameId, msg.timestampSof, msg.timestampEof) - if use_extra_client: - vipc_server.send(VisionStreamType.VISION_STREAM_WIDE_ROAD, img, msg.frameId, msg.timestampSof, msg.timestampEof) + vipc_server.send(stream, img, msg.frameId, msg.timestampSof, msg.timestampEof) init_data = [m for m in lr if m.which() == 'initData'][0] cameras = tici_cameras if (init_data.initData.deviceType == 'tici') else eon_cameras diff --git a/selfdrive/test/process_replay/regen_all.py b/selfdrive/test/process_replay/regen_all.py index c3ea1d41e1..f10d7ea03a 100755 --- a/selfdrive/test/process_replay/regen_all.py +++ b/selfdrive/test/process_replay/regen_all.py @@ -11,12 +11,12 @@ from selfdrive.test.process_replay.test_processes import FAKEDATA, original_segm from tools.lib.route import SegmentName -def regen_job(segment, disable_tqdm): +def regen_job(segment, upload, disable_tqdm): with OpenpilotPrefix(): sn = SegmentName(segment[1]) fake_dongle_id = 'regen' + ''.join(random.choice('0123456789ABCDEF') for _ in range(11)) try: - relr = regen_and_save(sn.route_name.canonical_name, sn.segment_num, upload=True, use_route_meta=False, outdir=os.path.join(FAKEDATA, fake_dongle_id), disable_tqdm=disable_tqdm) + relr = regen_and_save(sn.route_name.canonical_name, sn.segment_num, upload=upload, use_route_meta=False, outdir=os.path.join(FAKEDATA, fake_dongle_id), disable_tqdm=disable_tqdm) relr = '|'.join(relr.split('/')[-2:]) return f' ("{segment[0]}", "{relr}"), ' except Exception as e: @@ -26,12 +26,13 @@ def regen_job(segment, disable_tqdm): if __name__ == "__main__": parser = argparse.ArgumentParser(description="Generate new segments from old ones") parser.add_argument("-j", "--jobs", type=int, default=1) + parser.add_argument("--no-upload", action="store_true") args = parser.parse_args() with concurrent.futures.ProcessPoolExecutor(max_workers=args.jobs) as pool: - p = list(pool.map(regen_job, segments, [args.jobs > 1] * args.jobs)) + p = pool.map(regen_job, segments, [not args.no_upload] * len(segments), [args.jobs > 1] * len(segments)) msg = "Copy these new segments into test_processes.py:" - for seg in tqdm(p, desc="Generating segments"): + for seg in tqdm(p, desc="Generating segments", total=len(segments)): msg += "\n" + str(seg) print() print()