Chrysler: fix LKAS fault for 2017 Pacifica (#26711)

* gate on FW

* fix

* reverse docs

* fix

* Revert "fix"

This reverts commit a0f2558fba.

Revert "reverse docs"

This reverts commit 9a46c517df.

Revert "fix"

This reverts commit 7b4d4bd3d2.

Revert "gate on FW"

This reverts commit 296826e713.

* use a flag

* fix

* draft

* clean up

* clean up

* more clear

* comment

* remove
old-commit-hash: a7fb5da6e5
taco
Shane Smiskol 2 years ago committed by GitHub
parent 6bc328535c
commit 890d63840d
  1. 4
      selfdrive/car/chrysler/carcontroller.py
  2. 18
      selfdrive/car/chrysler/interface.py
  3. 5
      selfdrive/car/chrysler/values.py

@ -2,7 +2,7 @@ from opendbc.can.packer import CANPacker
from common.realtime import DT_CTRL from common.realtime import DT_CTRL
from selfdrive.car import apply_toyota_steer_torque_limits from selfdrive.car import apply_toyota_steer_torque_limits
from selfdrive.car.chrysler.chryslercan import create_lkas_hud, create_lkas_command, create_cruise_buttons from selfdrive.car.chrysler.chryslercan import create_lkas_hud, create_lkas_command, create_cruise_buttons
from selfdrive.car.chrysler.values import CAR, RAM_CARS, CarControllerParams from selfdrive.car.chrysler.values import RAM_CARS, CarControllerParams, ChryslerFlags
class CarController: class CarController:
@ -51,7 +51,7 @@ class CarController:
lkas_control_bit = self.lkas_control_bit_prev lkas_control_bit = self.lkas_control_bit_prev
if CS.out.vEgo > self.CP.minSteerSpeed: if CS.out.vEgo > self.CP.minSteerSpeed:
lkas_control_bit = True lkas_control_bit = True
elif self.CP.carFingerprint in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_CHEROKEE_2019): elif self.CP.flags & ChryslerFlags.HIGHER_MIN_STEERING_SPEED:
if CS.out.vEgo < (self.CP.minSteerSpeed - 3.0): if CS.out.vEgo < (self.CP.minSteerSpeed - 3.0):
lkas_control_bit = False lkas_control_bit = False
elif self.CP.carFingerprint in RAM_CARS: elif self.CP.carFingerprint in RAM_CARS:

@ -2,7 +2,7 @@
from cereal import car from cereal import car
from panda import Panda from panda import Panda
from selfdrive.car import STD_CARGO_KG, get_safety_config from selfdrive.car import STD_CARGO_KG, get_safety_config
from selfdrive.car.chrysler.values import CAR, DBC, RAM_HD, RAM_DT from selfdrive.car.chrysler.values import CAR, DBC, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags
from selfdrive.car.interfaces import CarInterfaceBase from selfdrive.car.interfaces import CarInterfaceBase
@ -24,9 +24,12 @@ class CarInterface(CarInterfaceBase):
ret.safetyConfigs[0].safetyParam |= Panda.FLAG_CHRYSLER_RAM_DT ret.safetyConfigs[0].safetyParam |= Panda.FLAG_CHRYSLER_RAM_DT
ret.minSteerSpeed = 3.8 # m/s ret.minSteerSpeed = 3.8 # m/s
if candidate in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_CHEROKEE_2019): if candidate not in RAM_CARS:
# TODO: allow 2019 cars to steer down to 13 m/s if already engaged. # Newer FW versions standard on the following platforms, or flashed by a dealer onto older platforms have a higher minimum steering speed.
ret.minSteerSpeed = 17.5 # m/s 17 on the way up, 13 on the way down once engaged. new_eps_platform = candidate in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_CHEROKEE_2019)
new_eps_firmware = any(fw.ecu == 'eps' and fw.fwVersion[:4] >= b"6841" for fw in car_fw)
if new_eps_platform or new_eps_firmware:
ret.flags |= ChryslerFlags.HIGHER_MIN_STEERING_SPEED.value
# Chrysler # Chrysler
if candidate in (CAR.PACIFICA_2017_HYBRID, CAR.PACIFICA_2018, CAR.PACIFICA_2018_HYBRID, CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020): if candidate in (CAR.PACIFICA_2017_HYBRID, CAR.PACIFICA_2018, CAR.PACIFICA_2018_HYBRID, CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020):
@ -55,9 +58,8 @@ class CarInterface(CarInterfaceBase):
ret.mass = 2493. + STD_CARGO_KG ret.mass = 2493. + STD_CARGO_KG
CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning)
ret.minSteerSpeed = 14.5 ret.minSteerSpeed = 14.5
if car_fw is not None:
for fw in car_fw: for fw in car_fw:
if fw.ecu == 'eps' and fw.fwVersion[:8] in (b"68312176", b"68273275"): if fw.ecu == 'eps' and fw.fwVersion.startswith((b"68312176", b"68273275")):
ret.minSteerSpeed = 0. ret.minSteerSpeed = 0.
elif candidate == CAR.RAM_HD: elif candidate == CAR.RAM_HD:
@ -71,6 +73,10 @@ class CarInterface(CarInterfaceBase):
else: else:
raise ValueError(f"Unsupported car: {candidate}") raise ValueError(f"Unsupported car: {candidate}")
if ret.flags & ChryslerFlags.HIGHER_MIN_STEERING_SPEED:
# TODO: allow these cars to steer down to 13 m/s if already engaged.
ret.minSteerSpeed = 17.5 # m/s 17 on the way up, 13 on the way down once engaged.
ret.centerToFront = ret.wheelbase * 0.44 ret.centerToFront = ret.wheelbase * 0.44
ret.enableBsm = 720 in fingerprint[0] ret.enableBsm = 720 in fingerprint[0]

@ -1,3 +1,4 @@
from enum import IntFlag
from dataclasses import dataclass from dataclasses import dataclass
from enum import Enum from enum import Enum
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, Union
@ -11,6 +12,10 @@ from selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16
Ecu = car.CarParams.Ecu Ecu = car.CarParams.Ecu
class ChryslerFlags(IntFlag):
HIGHER_MIN_STEERING_SPEED = 1
class CAR: class CAR:
# Chrysler # Chrysler
PACIFICA_2017_HYBRID = "CHRYSLER PACIFICA HYBRID 2017" PACIFICA_2017_HYBRID = "CHRYSLER PACIFICA HYBRID 2017"

Loading…
Cancel
Save