From 8e3753d55b45552215fae4680e1237c305cf1c2c Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Tue, 24 Mar 2026 21:39:44 -0500 Subject: [PATCH] Pedal tune --- common/params_keys.h | 16 +++++++-------- opendbc_repo/opendbc/car/gm/carcontroller.py | 21 ++++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/common/params_keys.h b/common/params_keys.h index 83906ffd..0e2e2ff7 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -385,11 +385,11 @@ inline static std::unordered_map keys = { {"RefuseVolume", {PERSISTENT, INT, "101", "101", 2}}, {"RelaxedFollow", {PERSISTENT, FLOAT, "1.75", "1.75", 2}}, {"RelaxedFollowHigh", {PERSISTENT, FLOAT, "1.75", "1.75", 2}}, - {"RelaxedJerkAcceleration", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, + {"RelaxedJerkAcceleration", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, {"RelaxedJerkDanger", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"RelaxedJerkDeceleration", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"RelaxedJerkSpeed", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"RelaxedJerkSpeedDecrease", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, + {"RelaxedJerkDeceleration", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, + {"RelaxedJerkSpeed", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, + {"RelaxedJerkSpeedDecrease", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, {"ReverseCruise", {PERSISTENT, BOOL, "0", "0", 1}}, {"RecoveryPower", {PERSISTENT, FLOAT, "1.0", "1.0", 2}}, {"RoadEdgesWidth", {PERSISTENT, FLOAT, "2.0", "2.0", 2}}, @@ -446,11 +446,11 @@ inline static std::unordered_map keys = { {"SpeedLimitSources", {PERSISTENT, BOOL, "0", "0", 3}}, {"StandardFollow", {PERSISTENT, FLOAT, "1.45", "1.45", 2}}, {"StandardFollowHigh", {PERSISTENT, FLOAT, "1.45", "1.45", 2}}, - {"StandardJerkAcceleration", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, + {"StandardJerkAcceleration", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, {"StandardJerkDanger", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"StandardJerkDeceleration", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"StandardJerkSpeed", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, - {"StandardJerkSpeedDecrease", {PERSISTENT, FLOAT, "100.0", "100.0", 3}}, + {"StandardJerkDeceleration", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, + {"StandardJerkSpeed", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, + {"StandardJerkSpeedDecrease", {PERSISTENT, FLOAT, "50.0", "50.0", 3}}, {"StandbyMode", {PERSISTENT, BOOL, "0", "0", 1}}, {"StartAccel", {PERSISTENT, FLOAT, "0.0", "0.0", 3}}, {"StartAccelStock", {PERSISTENT, FLOAT, "0.0", "0.0", 3}}, diff --git a/opendbc_repo/opendbc/car/gm/carcontroller.py b/opendbc_repo/opendbc/car/gm/carcontroller.py index aad53446..e7442648 100644 --- a/opendbc_repo/opendbc/car/gm/carcontroller.py +++ b/opendbc_repo/opendbc/car/gm/carcontroller.py @@ -179,15 +179,18 @@ class CarController(CarControllerBase): accel_gain = np.interp(v_ego, [0.0, 3.0, 8.0, 20.0], [0.47, 0.52, 0.57, 0.61]) pedaloffset = np.interp(v_ego, [0.0, 1.0, 3.0, 6.0, 15.0, 30.0], [0.085, 0.11, 0.17, 0.23, 0.235, 0.23]) - accel_term_scale = (1.0 / max(gain, 1e-3)) if press_regen_paddle else 1.0 - if accel >= 0.0: - small_cmd_scale = np.interp(abs(accel), [0.0, 0.35, 0.8, 1.5, 2.5], [0.58, 0.68, 0.82, 0.93, 1.0]) + if not press_regen_paddle and accel < 0.0: + raw_pedal_gas = float(np.clip(pedaloffset + accel * 0.6, 0.0, 1.0)) else: - small_cmd_scale = np.interp(abs(accel), [0.0, 0.35, 0.8, 1.5, 2.5], [0.44, 0.54, 0.70, 0.89, 1.0]) - accel_cmd = accel * small_cmd_scale - if (not press_regen_paddle) and accel < -2.0: - accel_cmd *= np.interp(abs(accel), [2.0, 2.5, 3.0], [1.0, 1.03, 1.06]) - raw_pedal_gas = float(np.clip(pedaloffset + accel_cmd * accel_gain * accel_term_scale, 0.0, 1.0)) + accel_term_scale = (1.0 / max(gain, 1e-3)) if press_regen_paddle else 1.0 + if accel >= 0.0: + small_cmd_scale = np.interp(abs(accel), [0.0, 0.35, 0.8, 1.5, 2.5], [0.58, 0.68, 0.82, 0.93, 1.0]) + else: + small_cmd_scale = np.interp(abs(accel), [0.0, 0.35, 0.8, 1.5, 2.5], [0.44, 0.54, 0.70, 0.89, 1.0]) + accel_cmd = accel * small_cmd_scale + if (not press_regen_paddle) and accel < -2.0: + accel_cmd *= np.interp(abs(accel), [2.0, 2.5, 3.0], [1.0, 1.03, 1.06]) + raw_pedal_gas = float(np.clip(pedaloffset + accel_cmd * accel_gain * accel_term_scale, 0.0, 1.0)) pedal_gas_max = np.interp(v_ego, [0.0, 1.0, 2.5, 4.5, 6.0, 8.0, 12.0], [0.20, 0.235, 0.29, 0.365, 0.52, 0.78, 1.0]) target_pedal_gas = float(np.clip(raw_pedal_gas, 0.0, pedal_gas_max)) @@ -195,6 +198,8 @@ class CarController(CarControllerBase): if not self.pedal_active_last or switched_state: pedal_gas = target_pedal_gas self.pedal_active_last = True + elif not press_regen_paddle and accel < 0.0: + pedal_gas = target_pedal_gas else: urgency = float(np.clip(abs(accel) / 2.0, 0.0, 1.0)) rate_up = np.interp(v_ego, [0.0, 3.0, 8.0, 20.0], [0.007, 0.012, 0.022, 0.036]) + 0.011 * urgency