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: 9be7e527a908274522020481d3275b1ab6790c2e
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user