Chrysler: ensure control bit is high before torque cmd (#25465)

* Chrysler: ensure control bit is high before torque cmd

* move that & update refs

* check control bit too
old-commit-hash: e0e0aad144
taco
Adeeb Shihadeh 3 years ago committed by GitHub
parent 28a60fb42e
commit 15e9bc319b
  1. 39
      selfdrive/car/chrysler/carcontroller.py
  2. 2
      selfdrive/test/process_replay/ref_commit

@ -22,23 +22,8 @@ class CarController:
def update(self, CC, CS): def update(self, CC, CS):
can_sends = [] can_sends = []
# TODO: can we make this more sane? why is it different for all the cars?
lkas_control_bit = self.lkas_control_bit_prev
if CS.out.vEgo > self.CP.minSteerSpeed:
lkas_control_bit = True
elif self.CP.carFingerprint in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_CHEROKEE_2019):
if CS.out.vEgo < (self.CP.minSteerSpeed - 3.0):
lkas_control_bit = False
elif self.CP.carFingerprint in RAM_CARS:
if CS.out.vEgo < (self.CP.minSteerSpeed - 0.5):
lkas_control_bit = False
# EPS faults if LKAS re-enables too quickly
lkas_control_bit = lkas_control_bit and (self.frame - self.last_lkas_falling_edge > 200)
lkas_active = CC.latActive and self.lkas_control_bit_prev lkas_active = CC.latActive and self.lkas_control_bit_prev
# *** control msgs ***
# cruise buttons # cruise buttons
if (self.frame - self.last_button_frame)*DT_CTRL > 0.05: if (self.frame - self.last_button_frame)*DT_CTRL > 0.05:
das_bus = 2 if self.CP.carFingerprint in RAM_CARS else 0 das_bus = 2 if self.CP.carFingerprint in RAM_CARS else 0
@ -61,19 +46,35 @@ class CarController:
# steering # steering
if self.frame % 2 == 0: if self.frame % 2 == 0:
# TODO: can we make this more sane? why is it different for all the cars?
lkas_control_bit = self.lkas_control_bit_prev
if CS.out.vEgo > self.CP.minSteerSpeed:
lkas_control_bit = True
elif self.CP.carFingerprint in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_CHEROKEE_2019):
if CS.out.vEgo < (self.CP.minSteerSpeed - 3.0):
lkas_control_bit = False
elif self.CP.carFingerprint in RAM_CARS:
if CS.out.vEgo < (self.CP.minSteerSpeed - 0.5):
lkas_control_bit = False
# EPS faults if LKAS re-enables too quickly
lkas_control_bit = lkas_control_bit and (self.frame - self.last_lkas_falling_edge > 200)
if not lkas_control_bit and self.lkas_control_bit_prev:
self.last_lkas_falling_edge = self.frame
self.lkas_control_bit_prev = lkas_control_bit
# steer torque # steer torque
new_steer = int(round(CC.actuators.steer * self.params.STEER_MAX)) new_steer = int(round(CC.actuators.steer * self.params.STEER_MAX))
apply_steer = apply_toyota_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorqueEps, self.params) apply_steer = apply_toyota_steer_torque_limits(new_steer, self.apply_steer_last, CS.out.steeringTorqueEps, self.params)
if not lkas_active: if not lkas_active or not lkas_control_bit:
apply_steer = 0 apply_steer = 0
self.apply_steer_last = apply_steer self.apply_steer_last = apply_steer
can_sends.append(create_lkas_command(self.packer, self.CP, int(apply_steer), lkas_control_bit)) can_sends.append(create_lkas_command(self.packer, self.CP, int(apply_steer), lkas_control_bit))
self.frame += 1 self.frame += 1
if not lkas_control_bit and self.lkas_control_bit_prev:
self.last_lkas_falling_edge = self.frame
self.lkas_control_bit_prev = lkas_control_bit
new_actuators = CC.actuators.copy() new_actuators = CC.actuators.copy()
new_actuators.steer = self.apply_steer_last / self.params.STEER_MAX new_actuators.steer = self.apply_steer_last / self.params.STEER_MAX

@ -1 +1 @@
375f581030fe8efeb9dacd63875b3f046d3b420f 29e406826b1d7b0cc7e05153b623fbedcd8fd9e9
Loading…
Cancel
Save