diff --git a/panda/board/safety/safety_subaru.h b/panda/board/safety/safety_subaru.h index 924b767..7c887a0 100644 --- a/panda/board/safety/safety_subaru.h +++ b/panda/board/safety/safety_subaru.h @@ -17,7 +17,7 @@ } -const SteeringLimits SUBARU_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(2047, 50, 70); +const SteeringLimits SUBARU_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(3071, 50, 70); const SteeringLimits SUBARU_GEN2_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(1000, 40, 40); diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 7cc0de2..9172361 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -11,6 +11,8 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, params, candidate: CAR, fingerprint, car_fw, disable_openpilot_long, experimental_long, docs): + crosstrek_torque_increase = params.get_bool("CrosstrekTorque") + ret.carName = "subaru" ret.radarUnavailable = True # for HYBRID CARS to be upstreamed, we need: @@ -51,9 +53,9 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.IMPREZA: ret.steerActuatorDelay = 0.4 # end-to-end angle controller ret.lateralTuning.init('pid') - ret.lateralTuning.pid.kf = 0.00005 + ret.lateralTuning.pid.kf = 0.00003333 if crosstrek_torque_increase else 0.00005 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] - ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2, 0.3], [0.02, 0.03]] + ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.133, 0.2], [0.0133, 0.02]] if crosstrek_torque_increase else [[0.2, 0.3], [0.02, 0.03]] elif candidate == CAR.IMPREZA_2020: ret.lateralTuning.init('pid') diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 3482f64..2b6727f 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -26,6 +26,8 @@ class CarControllerParams: self.STEER_DELTA_DOWN = 40 elif CP.carFingerprint == CAR.IMPREZA_2020: self.STEER_MAX = 1439 + elif CP.carFingerprint == CAR.IMPREZA and Params().get_bool("CrosstrekTorque"): + self.STEER_MAX = 3071 else: self.STEER_MAX = 2047