From 2eb3585daed760ef5f997cbf69c04a66b6084f89 Mon Sep 17 00:00:00 2001 From: YassineYousfi Date: Tue, 28 Jan 2025 12:16:13 -0800 Subject: [PATCH] Not Too Shabby Model (#34484) * b25c27a8-263b-4f3f-b1f8-72ac49b4f9c7/700 * replay * model_replay: support empty --- selfdrive/modeld/constants.py | 19 +++++++------- selfdrive/modeld/fill_model_msg.py | 4 +-- selfdrive/modeld/models/supercombo.onnx | 4 +-- selfdrive/test/process_replay/model_replay.py | 25 +++++++++++-------- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/selfdrive/modeld/constants.py b/selfdrive/modeld/constants.py index 8c2f6b3450..cf5157591e 100644 --- a/selfdrive/modeld/constants.py +++ b/selfdrive/modeld/constants.py @@ -71,13 +71,14 @@ class Plan: class Meta: ENGAGED = slice(0, 1) # next 2, 4, 6, 8, 10 seconds - GAS_DISENGAGE = slice(1, 36, 7) - BRAKE_DISENGAGE = slice(2, 36, 7) - STEER_OVERRIDE = slice(3, 36, 7) - HARD_BRAKE_3 = slice(4, 36, 7) - HARD_BRAKE_4 = slice(5, 36, 7) - HARD_BRAKE_5 = slice(6, 36, 7) - GAS_PRESS = slice(7, 36, 7) + GAS_DISENGAGE = slice(1, 31, 6) + BRAKE_DISENGAGE = slice(2, 31, 6) + STEER_OVERRIDE = slice(3, 31, 6) + HARD_BRAKE_3 = slice(4, 31, 6) + HARD_BRAKE_4 = slice(5, 31, 6) + HARD_BRAKE_5 = slice(6, 31, 6) # next 0, 2, 4, 6, 8, 10 seconds - LEFT_BLINKER = slice(36, 48, 2) - RIGHT_BLINKER = slice(37, 48, 2) + GAS_PRESS = slice(31, 55, 4) + BRAKE_PRESS = slice(32, 55, 4) + LEFT_BLINKER = slice(33, 55, 4) + RIGHT_BLINKER = slice(34, 55, 4) diff --git a/selfdrive/modeld/fill_model_msg.py b/selfdrive/modeld/fill_model_msg.py index 59b7508ed5..0ea88f9bc1 100644 --- a/selfdrive/modeld/fill_model_msg.py +++ b/selfdrive/modeld/fill_model_msg.py @@ -159,8 +159,8 @@ def fill_model_msg(base_msg: capnp._DynamicStructBuilder, extended_msg: capnp._D disengage_predictions.brake3MetersPerSecondSquaredProbs = net_output_data['meta'][0,Meta.HARD_BRAKE_3].tolist() disengage_predictions.brake4MetersPerSecondSquaredProbs = net_output_data['meta'][0,Meta.HARD_BRAKE_4].tolist() disengage_predictions.brake5MetersPerSecondSquaredProbs = net_output_data['meta'][0,Meta.HARD_BRAKE_5].tolist() - #disengage_predictions.gasPressProbs = net_output_data['meta'][0,Meta.GAS_PRESS].tolist() - #disengage_predictions.brakePressProbs = net_output_data['meta'][0,Meta.BRAKE_PRESS].tolist() + disengage_predictions.gasPressProbs = net_output_data['meta'][0,Meta.GAS_PRESS].tolist() + disengage_predictions.brakePressProbs = net_output_data['meta'][0,Meta.BRAKE_PRESS].tolist() publish_state.prev_brake_5ms2_probs[:-1] = publish_state.prev_brake_5ms2_probs[1:] publish_state.prev_brake_5ms2_probs[-1] = net_output_data['meta'][0,Meta.HARD_BRAKE_5][0] diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index 2e1a60a23e..4c9f795574 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39786068cae1ed8c0dc34ef80c281dfcc67ed18a50e06b90765c49bcfdbf7db4 -size 51453312 +oid sha256:d21daa542227ecc5972da45df4e26f018ba113c0461f270e367d57e3ad89221a +size 51461700 diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index f594fcf682..d4bfebde0c 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -57,21 +57,24 @@ def get_event(logs, event): def zl(array, fill): return zip_longest(array, [], fillvalue=fill) +def get_idx_if_non_empty(l, idx=None): + return l if idx is None else (l[idx] if len(l) > 0 else None) + def generate_report(proposed, master, tmp, commit): ModelV2_Plots = zl([ - (lambda x: x.velocity.x[0], "velocity.x"), - (lambda x: x.action.desiredCurvature, "desiredCurvature"), - (lambda x: x.leadsV3[0].x[0], "leadsV3.x"), - (lambda x: x.laneLines[1].y[0], "laneLines.y"), - #(lambda x: x.meta.disengagePredictions.gasPressProbs[1], "gasPressProbs") + (lambda x: get_idx_if_non_empty(x.velocity.x, 0), "velocity.x"), + (lambda x: get_idx_if_non_empty(x.action.desiredCurvature), "desiredCurvature"), + (lambda x: get_idx_if_non_empty(x.leadsV3[0].x, 0), "leadsV3.x"), + (lambda x: get_idx_if_non_empty(x.laneLines[1].y, 0), "laneLines.y"), + (lambda x: get_idx_if_non_empty(x.meta.disengagePredictions.gasPressProbs, 1), "gasPressProbs") ], "modelV2") DriverStateV2_Plots = zl([ - (lambda x: x.wheelOnRightProb, "wheelOnRightProb"), - (lambda x: x.leftDriverData.faceProb, "leftDriverData.faceProb"), - (lambda x: x.leftDriverData.faceOrientation[0], "leftDriverData.faceOrientation0"), - (lambda x: x.leftDriverData.leftBlinkProb, "leftDriverData.leftBlinkProb"), - (lambda x: x.leftDriverData.notReadyProb[0], "leftDriverData.notReadyProb0"), - (lambda x: x.rightDriverData.faceProb, "rightDriverData.faceProb"), + (lambda x: get_idx_if_non_empty(x.wheelOnRightProb), "wheelOnRightProb"), + (lambda x: get_idx_if_non_empty(x.leftDriverData.faceProb), "leftDriverData.faceProb"), + (lambda x: get_idx_if_non_empty(x.leftDriverData.faceOrientation, 0), "leftDriverData.faceOrientation0"), + (lambda x: get_idx_if_non_empty(x.leftDriverData.leftBlinkProb), "leftDriverData.leftBlinkProb"), + (lambda x: get_idx_if_non_empty(x.leftDriverData.notReadyProb, 0), "leftDriverData.notReadyProb0"), + (lambda x: get_idx_if_non_empty(x.rightDriverData.faceProb), "rightDriverData.faceProb"), ], "driverStateV2") return [plot(map(v[0], get_event(proposed, event)), \