diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 8d35cd9c2..551b5dec3 100644 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -57,8 +57,8 @@ NON_LINEAR_TORQUE_PARAMS = { "right": [2.0, 1.0, 0.205, 0.0], }, CAR.CHEVROLET_BOLT_CC_2017: { - "left": [2.15, 1.0, 0.13, 0.0], - "right": [2.15, 1.0, 0.15, 0.0], + "left": [2.15, 1.02, 0.129, 0.0], + "right": [2.15, 1.02, 0.145, 0.0], }, CAR.GMC_ACADIA: { "left": [4.78003305, 1.0, 0.3122, 0.05591772], @@ -391,10 +391,10 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.torque.kd *= 0.93 if candidate == CAR.CHEVROLET_BOLT_CC_2017: - ret.lateralTuning.torque.kp *= 0.9 + ret.lateralTuning.torque.kp *= 1.0 ret.lateralTuning.torque.ki *= 0.9 - ret.lateralTuning.torque.kd *= 0.85 - ret.lateralTuning.torque.kfDEPRECATED = 0.0 + ret.lateralTuning.torque.kd *= 0.9 + ret.lateralTuning.torque.kfDEPRECATED = 0.02 gm_safety_cfg.safetyParam |= Panda.FLAG_GM_BOLT_2017 if ret.enableGasInterceptor: diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index 8371d2b60..368aaa39b 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -45,7 +45,7 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] "CADILLAC_XT4" = [1.45, 1.6, 0.2] "CADILLAC_XT6" = [1.33, 1.9, 0.16] "CHEVROLET_BOLT_ACC_2022_2023" = [2.0, 2.0, 0.13] -"CHEVROLET_BOLT_CC_2017" = [1.2, 2.0, 0.13] +"CHEVROLET_BOLT_CC_2017" = [1.2, 2.0, 0.19] "CHEVROLET_BOLT_CC_2019_2021" = [2.0, 2.0, 0.13] "CHEVROLET_BLAZER" = [1.33, 1.33, 0.18] "CHEVROLET_MALIBU_CC" = [1.58, 1.8422651988094612, 0.205] diff --git a/selfdrive/controls/lib/latcontrol_torque.py b/selfdrive/controls/lib/latcontrol_torque.py index b1c1b2352..b10e589ac 100644 --- a/selfdrive/controls/lib/latcontrol_torque.py +++ b/selfdrive/controls/lib/latcontrol_torque.py @@ -39,7 +39,7 @@ LAT_ACCEL_REQUEST_BUFFER_SECONDS = 1.0 VERSION = 2 DEBUG_TORQUE_TUNE = False FF_SCALE_BLEND_LAT_ACCEL = 0.05 -DEADZONE_BOOST_LAT_ACCEL = 0.08 +DEADZONE_BOOST_LAT_ACCEL = 0.12 UNWIND_D_DES_THRESHOLD = -1.0 UNWIND_LAT_ACCEL_NEAR_ZERO = 0.3 @@ -83,17 +83,15 @@ class LatControlTorque(LatControl): self.is_bolt_2017 = CP.carFingerprint in BOLT_2017_CARS # Keep Bolt-specific FF controls isolated by generation. self.use_bolt_ff_scaling = self.is_bolt_2022_2023 or self.is_bolt_2019_2021 or self.is_bolt_2017 - self.use_bolt_deadzone_boost = self.is_bolt_2022_2023 or self.is_bolt_2019_2021 or self.is_bolt_2017 self.use_bolt_ki_multiplier = self.is_bolt_2022_2023 or self.is_bolt_2019_2021 or self.is_bolt_2017 self.torque_ff_scale_pos = 1.0 self.torque_ff_scale_neg = 1.0 - self.torque_deadzone_boost_neg = 0.0 + self.torque_deadzone_boost = float(getattr(self.torque_params, "kfDEPRECATED", 0.0)) self.torque_ki_mult = 1.0 if self.is_bolt: self.torque_ff_scale_pos = float(self.torque_params.kp) self.torque_ff_scale_neg = float(self.torque_params.ki) self.torque_ki_mult = float(self.torque_params.kd) - self.torque_deadzone_boost_neg = float(getattr(self.torque_params, "kfDEPRECATED", 0.0)) if self.use_bolt_ki_multiplier and self.torque_ki_mult > 0.0 and self.torque_ki_mult != 1.0: self.pid._k_i = [self.pid._k_i[0], [k * self.torque_ki_mult for k in self.pid._k_i[1]]] @@ -163,11 +161,10 @@ class LatControlTorque(LatControl): ff *= ff_scale ff += get_friction(error_with_lsf + JERK_GAIN * desired_lateral_jerk, lateral_accel_deadzone, get_friction_threshold(CS.vEgo), self.torque_params) deadzone_boost_active = False - if self.use_bolt_deadzone_boost and self.torque_deadzone_boost_neg > 0.0 and gravity_adjusted_future_lateral_accel < 0.0: - if abs(gravity_adjusted_future_lateral_accel) < DEADZONE_BOOST_LAT_ACCEL: - boost_scale = np.interp(abs(gravity_adjusted_future_lateral_accel), [0.0, DEADZONE_BOOST_LAT_ACCEL], [1.0, 0.0]) - ff -= self.torque_deadzone_boost_neg * boost_scale - deadzone_boost_active = True + if self.torque_deadzone_boost > 0.0 and abs(gravity_adjusted_future_lateral_accel) < DEADZONE_BOOST_LAT_ACCEL: + boost_scale = np.interp(abs(gravity_adjusted_future_lateral_accel), [0.0, DEADZONE_BOOST_LAT_ACCEL], [1.0, 0.0]) + ff += np.sign(gravity_adjusted_future_lateral_accel) * self.torque_deadzone_boost * boost_scale + deadzone_boost_active = True if CS.vEgo < self.low_speed_reset_threshold: self.pid.reset()