From 4ef2bca38eb041abd00aac0dd493baed3ef34c1c Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 12 Apr 2026 17:23:16 -0500 Subject: [PATCH] 1mph undershoot --- selfdrive/controls/lib/longitudinal_planner.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/selfdrive/controls/lib/longitudinal_planner.py b/selfdrive/controls/lib/longitudinal_planner.py index 144796fe7..917a35bf2 100755 --- a/selfdrive/controls/lib/longitudinal_planner.py +++ b/selfdrive/controls/lib/longitudinal_planner.py @@ -80,6 +80,22 @@ def get_vehicle_min_accel(CP, v_ego): return float(ACCEL_MIN) +def get_planner_v_ego(CP, car_state): + v_ego = max(car_state.vEgo, car_state.vEgoCluster) + + is_gm = getattr(CP, "carName", "") == "gm" or getattr(CP, "brand", "") == "gm" + if is_gm and getattr(CP, "enableGasInterceptorDEPRECATED", False): + try: + from opendbc.car.gm.values import GMFlags + is_gm_pedal_long = bool(CP.flags & GMFlags.PEDAL_LONG.value) + if is_gm_pedal_long: + return float(car_state.vEgo) + except Exception: + pass + + return float(v_ego) + + def get_accel_from_plan_classic(CP, speeds, accels, vEgoStopping): if len(speeds) == CONTROL_N: v_target_now = np.interp(DT_MDL, CONTROL_N_T_IDX, speeds) @@ -212,7 +228,7 @@ class LongitudinalPlanner: else: accel_coast = ACCEL_MAX - v_ego = max(sm['carState'].vEgo, sm['carState'].vEgoCluster) + v_ego = get_planner_v_ego(self.CP, sm['carState']) v_cruise = sm['starpilotPlan'].vCruise v_cruise_initialized = sm['carState'].vCruise != V_CRUISE_UNSET