HKG CAN-FD: steering pressed filter (#26789)

* steering pressed filter

* use a counter

* parameterize

* double

* filter doesn't instantly reset on falling edge of true steering pressed

* Update selfdrive/car/interfaces.py

* Update selfdrive/car/interfaces.py

* Update selfdrive/car/hyundai/carstate.py

* add comment

* the pain of committing without pycharm

* more like a filter

* Update ref_commit
old-commit-hash: 9be7e527a9
taco
Shane Smiskol 3 years ago committed by GitHub
parent f1c3967491
commit 82be7d0b1b
  1. 2
      selfdrive/car/hyundai/carstate.py
  2. 9
      selfdrive/car/interfaces.py
  3. 2
      selfdrive/test/process_replay/ref_commit

@ -188,7 +188,7 @@ class CarState(CarStateBase):
ret.steeringAngleDeg = cp.vl["STEERING_SENSORS"]["STEERING_ANGLE"] * -1
ret.steeringTorque = cp.vl["MDPS"]["STEERING_COL_TORQUE"]
ret.steeringTorqueEps = cp.vl["MDPS"]["STEERING_OUT_TORQUE"]
ret.steeringPressed = abs(ret.steeringTorque) > self.params.STEER_THRESHOLD
ret.steeringPressed = self.update_steering_pressed(abs(ret.steeringTorque) > self.params.STEER_THRESHOLD, 5)
ret.steerFaultTemporary = cp.vl["MDPS"]["LKA_FAULT"] != 0
ret.leftBlinker, ret.rightBlinker = self.update_blinker_from_lamp(50, cp.vl["BLINKERS"]["LEFT_LAMP"],

@ -8,7 +8,7 @@ from cereal import car
from common.basedir import BASEDIR
from common.conversions import Conversions as CV
from common.kalman.simple_kalman import KF1D
from common.numpy_fast import interp
from common.numpy_fast import clip, interp
from common.realtime import DT_CTRL
from selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness
from selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, apply_center_deadzone
@ -327,6 +327,7 @@ class CarStateBase(ABC):
self.cruise_buttons = 0
self.left_blinker_cnt = 0
self.right_blinker_cnt = 0
self.steering_pressed_cnt = 0
self.left_blinker_prev = False
self.right_blinker_prev = False
self.cluster_speed_hyst_gap = 0.0
@ -364,6 +365,12 @@ class CarStateBase(ABC):
self.right_blinker_cnt = blinker_time if right_blinker_lamp else max(self.right_blinker_cnt - 1, 0)
return self.left_blinker_cnt > 0, self.right_blinker_cnt > 0
def update_steering_pressed(self, steering_pressed, steering_pressed_min_count):
"""Applies filtering on steering pressed for noisy driver torque signals."""
self.steering_pressed_cnt += 1 if steering_pressed else -1
self.steering_pressed_cnt = clip(self.steering_pressed_cnt, 0, steering_pressed_min_count * 2)
return self.steering_pressed_cnt > steering_pressed_min_count
def update_blinker_from_stalk(self, blinker_time: int, left_blinker_stalk: bool, right_blinker_stalk: bool):
"""Update blinkers from stalk position. When stalk is seen the blinker will be on for at least blinker_time,
or until the stalk is turned off, whichever is longer. If the opposite stalk direction is seen the blinker

@ -1 +1 @@
faa85c0cb3609fc43674b263ae885c60f136ba6c
5f83a3ba20ec757ea7a5ef9b4159ac99cb77af0f

Loading…
Cancel
Save