From 5ab2fc16ab5b883f3fa151d0e7362bc73545ca32 Mon Sep 17 00:00:00 2001 From: Mitchell Goff Date: Tue, 20 Dec 2022 14:19:21 -0800 Subject: [PATCH] model_replay: use last N frames of segment so navRoute is valid (#26790) * model_replay: use last N frames of segment so navRoute is valid * Use llk logMonoTime for MapRenderState.locationMonoTime * Record mapRenderState * update refs Co-authored-by: Comma Device --- selfdrive/navd/map_renderer.cc | 4 ++-- selfdrive/test/process_replay/model_replay.py | 16 +++++++++++----- .../test/process_replay/model_replay_ref_commit | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/selfdrive/navd/map_renderer.cc b/selfdrive/navd/map_renderer.cc index 91f31d06dc..51676bb3a3 100644 --- a/selfdrive/navd/map_renderer.cc +++ b/selfdrive/navd/map_renderer.cc @@ -169,7 +169,7 @@ void MapRenderer::publish(const double render_time) { VisionBuf* buf = vipc_server->get_buffer(VisionStreamType::VISION_STREAM_MAP); VisionIpcBufExtra extra = { .frame_id = frame_id, - .timestamp_sof = sm->rcv_time("liveLocationKalman"), + .timestamp_sof = (*sm)["liveLocationKalman"].getLogMonoTime(), .timestamp_eof = ts, }; @@ -206,7 +206,7 @@ void MapRenderer::publish(const double render_time) { // Send state msg MessageBuilder msg; auto state = msg.initEvent().initMapRenderState(); - state.setLocationMonoTime(sm->rcv_time("liveLocationKalman")); + state.setLocationMonoTime((*sm)["liveLocationKalman"].getLogMonoTime()); state.setRenderTime(render_time); state.setFrameId(frame_id); pm->send("mapRenderState", msg); diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index ce861b37e6..324801fead 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -43,12 +43,12 @@ def replace_calib(msg, calib): def nav_model_replay(lr): - sm = messaging.SubMaster(['navModel', 'navThumbnail']) + sm = messaging.SubMaster(['navModel', 'navThumbnail', 'mapRenderState']) pm = messaging.PubMaster(['liveLocationKalman', 'navRoute']) nav = [m for m in lr if m.which() == 'navRoute'] llk = [m for m in lr if m.which() == 'liveLocationKalman'] - assert len(nav) > 0 and len(llk) >= NAV_FRAMES + assert len(nav) > 0 and len(llk) >= NAV_FRAMES and nav[0].logMonoTime < llk[-NAV_FRAMES].logMonoTime log_msgs = [] try: @@ -59,8 +59,8 @@ def nav_model_replay(lr): # setup position and route for _ in range(10): - for s in (llk, nav): - pm.send(s[0].which(), s[0].as_builder().to_bytes()) + for s in (llk[-NAV_FRAMES], nav[0]): + pm.send(s.which(), s.as_builder().to_bytes()) sm.update(1000) if sm.updated['navModel']: break @@ -74,12 +74,16 @@ def nav_model_replay(lr): sm.update(0) # run replay - for n in range(NAV_FRAMES): + for n in range(len(llk) - NAV_FRAMES, len(llk)): pm.send(llk[n].which(), llk[n].as_builder().to_bytes()) m = messaging.recv_one(sm.sock['navThumbnail']) assert m is not None, f"no navThumbnail, frame={n}" log_msgs.append(m) + m = messaging.recv_one(sm.sock['mapRenderState']) + assert m is not None, f"no mapRenderState, frame={n}" + log_msgs.append(m) + m = messaging.recv_one(sm.sock['navModel']) assert m is not None, f"no navModel response, frame={n}" log_msgs.append(m) @@ -231,6 +235,8 @@ if __name__ == "__main__": 'navModel.dspExecutionTime', 'navModel.modelExecutionTime', 'navThumbnail.timestampEof', + 'mapRenderState.locationMonoTime', + 'mapRenderState.renderTime', ] if PC: ignore += [ diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index aa204e0f8a..22e021dcaf 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -4ff972367fdb9546be68ee0ba0d45cf4f839dae7 +db587bfef2317c5a3471632ac47381457e1be853 \ No newline at end of file