mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-28 18:12:05 +08:00
fix unnecessary harsh steering unavailable alerts (#21541)
old-commit-hash: 092c728e766bc17a63279b42ea88a4f0f1c51a6d
This commit is contained in:
+1
-1
Submodule cereal updated: 5383d9edda...b372ab3ae1
@@ -265,7 +265,6 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.steeringRateLimited = self.CC.steer_rate_limited if self.CC is not None else False
|
||||
|
||||
events = self.create_common_events(ret)
|
||||
# TODO: addd abs(self.CS.angle_steers) > 90 to 'steerTempUnavailable' event
|
||||
|
||||
# low speed steer alert hysteresis logic (only for cars with steer cut off above 10 m/s)
|
||||
if ret.vEgo < (self.CP.minSteerSpeed + 2.) and self.CP.minSteerSpeed > 10.:
|
||||
|
||||
@@ -27,6 +27,8 @@ class CarInterfaceBase():
|
||||
self.VM = VehicleModel(CP)
|
||||
|
||||
self.frame = 0
|
||||
self.steer_warning = 0
|
||||
self.steering_unpressed = 0
|
||||
self.low_speed_alert = False
|
||||
|
||||
if CarState is not None:
|
||||
@@ -97,14 +99,15 @@ class CarInterfaceBase():
|
||||
def apply(self, c):
|
||||
raise NotImplementedError
|
||||
|
||||
def create_common_events(self, cs_out, extra_gears=[], gas_resume_speed=-1, pcm_enable=True): # pylint: disable=dangerous-default-value
|
||||
def create_common_events(self, cs_out, extra_gears=None, gas_resume_speed=-1, pcm_enable=True):
|
||||
events = Events()
|
||||
|
||||
if cs_out.doorOpen:
|
||||
events.add(EventName.doorOpen)
|
||||
if cs_out.seatbeltUnlatched:
|
||||
events.add(EventName.seatbeltNotLatched)
|
||||
if cs_out.gearShifter != GearShifter.drive and cs_out.gearShifter not in extra_gears:
|
||||
if cs_out.gearShifter != GearShifter.drive and (extra_gears is None or
|
||||
cs_out.gearShifter not in extra_gears):
|
||||
events.add(EventName.wrongGear)
|
||||
if cs_out.gearShifter == GearShifter.reverse:
|
||||
events.add(EventName.reverseGear)
|
||||
@@ -123,13 +126,19 @@ class CarInterfaceBase():
|
||||
if cs_out.cruiseState.nonAdaptive:
|
||||
events.add(EventName.wrongCruiseMode)
|
||||
|
||||
self.steer_warning = self.steer_warning + 1 if cs_out.steerWarning else 0
|
||||
self.steering_unpressed = 0 if cs_out.steeringPressed else self.steering_unpressed + 1
|
||||
|
||||
# Handle permanent and temporary steering faults
|
||||
if cs_out.steerError:
|
||||
events.add(EventName.steerUnavailable)
|
||||
elif cs_out.steerWarning:
|
||||
if cs_out.steeringPressed:
|
||||
events.add(EventName.steerTempUnavailableUserOverride)
|
||||
else:
|
||||
# only escalate to the harsher alert after the condition has
|
||||
# persisted for 0.5s and we're certain that the user isn't overriding
|
||||
if self.steering_unpressed > int(0.5/DT_CTRL) and self.steer_warning > int(0.5/DT_CTRL):
|
||||
events.add(EventName.steerTempUnavailable)
|
||||
else:
|
||||
events.add(EventName.steerTempUnavailableSilent)
|
||||
|
||||
# Disable on rising edge of gas or brake. Also disable on brake when speed > 0.
|
||||
# Optionally allow to press gas at zero speed to resume.
|
||||
|
||||
@@ -410,7 +410,7 @@ EVENTS: Dict[int, Dict[str, Union[Alert, Callable[[Any, messaging.SubMaster, boo
|
||||
Priority.LOWEST, VisualAlert.steerRequired, AudibleAlert.none, .0, .0, .1),
|
||||
},
|
||||
|
||||
EventName.steerTempUnavailableUserOverride: {
|
||||
EventName.steerTempUnavailableSilent: {
|
||||
ET.WARNING: Alert(
|
||||
"Steering Temporarily Unavailable",
|
||||
"",
|
||||
|
||||
Reference in New Issue
Block a user