From 4796f674dacd6d549ac6b552491ceb763b165325 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sun, 28 May 2023 19:51:22 -0400 Subject: [PATCH] Higher torque limit (3071) for 2018 Crosstrek / 2017 Impreza @ClockeNessMnstr (#146) * Higher torque limit (3071) for 2018 Crosstrek / 2017 Impreza @ClockeNessMnstr * bump panda * set with int flag * bump panda * flag * sync tune * bump panda * fix * fix * oops * update FW * List comprehension * bump panda --- panda | 2 +- selfdrive/car/subaru/interface.py | 6 ++++++ selfdrive/car/subaru/values.py | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/panda b/panda index ea44b41f91..03cc1738f0 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit ea44b41f918dc3dddabf56320779126400f75f08 +Subproject commit 03cc1738f02346a806295a5de29d3ad528dc26d5 diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index 60c3c9dd22..3f5f6f8e87 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -52,6 +52,12 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 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]] + # Certain Impreza / Crosstrek EPS use 3071 max value and do not work with stock value/scaling. + if any(fw.ecu == "eps" and fw.fwVersion in (b'z\xc0\x00\x00', b'z\xc0\x04\x00', b'z\xc0\x08\x00', b'\x8a\xc0\x00\x00') for fw in car_fw): + ret.safetyConfigs[0].safetyParam = Panda.FLAG_SUBARU_MAX_STEER_IMPREZA_2018 + ret.steerActuatorDelay = 0.18 # measured + ret.lateralTuning.pid.kf = 0.00003333 + ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.133, 0.2], [0.0133, 0.02]] elif candidate == CAR.IMPREZA_2020: ret.mass = 1480. + STD_CARGO_KG diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index f90f015bfb..82650e77d5 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -1,5 +1,6 @@ from dataclasses import dataclass from enum import IntFlag +from panda import Panda from typing import Dict, List, Union from cereal import car @@ -26,6 +27,8 @@ class CarControllerParams: self.STEER_DELTA_DOWN = 40 elif CP.carFingerprint == CAR.IMPREZA_2020: self.STEER_MAX = 1439 + elif CP.safetyConfigs[0].safetyParam == Panda.FLAG_SUBARU_MAX_STEER_IMPREZA_2018: + self.STEER_MAX = 3071 else: self.STEER_MAX = 2047