Visuals - Custom Alerts - Green light alert
Get an alert when a traffic light changes from red to green.
This commit is contained in:
parent
ccf8340acb
commit
2fbd571430
@ -75,6 +75,7 @@ class Controls:
|
|||||||
self.drive_added = False
|
self.drive_added = False
|
||||||
self.onroad_distance_pressed = False
|
self.onroad_distance_pressed = False
|
||||||
self.openpilot_crashed_triggered = False
|
self.openpilot_crashed_triggered = False
|
||||||
|
self.previously_enabled = False
|
||||||
self.speed_check = False
|
self.speed_check = False
|
||||||
|
|
||||||
self.display_timer = 0
|
self.display_timer = 0
|
||||||
@ -83,6 +84,8 @@ class Controls:
|
|||||||
self.previous_speed_limit = 0
|
self.previous_speed_limit = 0
|
||||||
self.speed_limit_timer = 0
|
self.speed_limit_timer = 0
|
||||||
|
|
||||||
|
self.green_light_mac = MovingAverageCalculator()
|
||||||
|
|
||||||
self.card = CarD(CI)
|
self.card = CarD(CI)
|
||||||
|
|
||||||
self.params = Params()
|
self.params = Params()
|
||||||
@ -932,6 +935,17 @@ class Controls:
|
|||||||
self.events.add(EventName.openpilotCrashed)
|
self.events.add(EventName.openpilotCrashed)
|
||||||
self.openpilot_crashed_triggered = True
|
self.openpilot_crashed_triggered = True
|
||||||
|
|
||||||
|
if self.frogpilot_toggles.green_light_alert:
|
||||||
|
green_light = not self.sm['frogpilotPlan'].redLight
|
||||||
|
green_light &= not CS.gasPressed
|
||||||
|
green_light &= not self.sm['longitudinalPlan'].hasLead
|
||||||
|
green_light &= self.previously_enabled
|
||||||
|
green_light &= CS.standstill
|
||||||
|
|
||||||
|
self.green_light_mac.add_data(green_light)
|
||||||
|
if self.green_light_mac.get_moving_average() >= PROBABILITY:
|
||||||
|
self.events.add(EventName.greenLight)
|
||||||
|
|
||||||
if self.frogpilot_toggles.speed_limit_alert or self.frogpilot_toggles.speed_limit_confirmation:
|
if self.frogpilot_toggles.speed_limit_alert or self.frogpilot_toggles.speed_limit_confirmation:
|
||||||
current_speed_limit = self.sm['frogpilotPlan'].slcSpeedLimit
|
current_speed_limit = self.sm['frogpilotPlan'].slcSpeedLimit
|
||||||
desired_speed_limit = self.sm['frogpilotPlan'].unconfirmedSlcSpeedLimit
|
desired_speed_limit = self.sm['frogpilotPlan'].unconfirmedSlcSpeedLimit
|
||||||
@ -1030,6 +1044,9 @@ class Controls:
|
|||||||
else:
|
else:
|
||||||
self.params.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode)
|
self.params.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode)
|
||||||
|
|
||||||
|
self.previously_enabled |= (self.enabled or self.FPCC.alwaysOnLateral) and CS.vEgo > CRUISING_SPEED
|
||||||
|
self.previously_enabled &= self.driving_gear
|
||||||
|
|
||||||
signal_check = CS.vEgo >= self.frogpilot_toggles.pause_lateral_below_speed or not (CS.leftBlinker or CS.rightBlinker) or CS.standstill
|
signal_check = CS.vEgo >= self.frogpilot_toggles.pause_lateral_below_speed or not (CS.leftBlinker or CS.rightBlinker) or CS.standstill
|
||||||
self.speed_check = CS.vEgo >= self.frogpilot_toggles.pause_lateral_below_speed or CS.standstill or signal_check and self.frogpilot_toggles.pause_lateral_below_signal
|
self.speed_check = CS.vEgo >= self.frogpilot_toggles.pause_lateral_below_speed or CS.standstill or signal_check and self.frogpilot_toggles.pause_lateral_below_signal
|
||||||
|
|
||||||
|
@ -990,6 +990,14 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
|
|||||||
ET.NO_ENTRY: NoEntryAlert("Please don't use the 'Development' branch!"),
|
ET.NO_ENTRY: NoEntryAlert("Please don't use the 'Development' branch!"),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
EventName.greenLight: {
|
||||||
|
ET.PERMANENT: Alert(
|
||||||
|
"Light turned green",
|
||||||
|
"",
|
||||||
|
AlertStatus.frogpilot, AlertSize.small,
|
||||||
|
Priority.MID, VisualAlert.none, AudibleAlert.prompt, 3.),
|
||||||
|
},
|
||||||
|
|
||||||
EventName.noLaneAvailable : {
|
EventName.noLaneAvailable : {
|
||||||
ET.PERMANENT: no_lane_available_alert,
|
ET.PERMANENT: no_lane_available_alert,
|
||||||
},
|
},
|
||||||
|
@ -157,7 +157,7 @@ class FrogPilotPlanner:
|
|||||||
self.road_curvature = calculate_road_curvature(modelData, v_ego)
|
self.road_curvature = calculate_road_curvature(modelData, v_ego)
|
||||||
self.v_cruise = self.update_v_cruise(carState, controlsState, frogpilotCarState, frogpilotNavigation, liveLocationKalman, modelData, v_cruise, v_ego, frogpilot_toggles)
|
self.v_cruise = self.update_v_cruise(carState, controlsState, frogpilotCarState, frogpilotNavigation, liveLocationKalman, modelData, v_cruise, v_ego, frogpilot_toggles)
|
||||||
|
|
||||||
if frogpilot_toggles.conditional_experimental_mode:
|
if frogpilot_toggles.conditional_experimental_mode or frogpilot_toggles.green_light_alert:
|
||||||
self.cem.update(carState, controlsState.enabled, frogpilotNavigation, lead_distance, self.lead_one, modelData, self.road_curvature, self.slower_lead, v_ego, v_lead, frogpilot_toggles)
|
self.cem.update(carState, controlsState.enabled, frogpilotNavigation, lead_distance, self.lead_one, modelData, self.road_curvature, self.slower_lead, v_ego, v_lead, frogpilot_toggles)
|
||||||
|
|
||||||
self.frame += 1
|
self.frame += 1
|
||||||
@ -265,6 +265,7 @@ class FrogPilotPlanner:
|
|||||||
frogpilotPlan.adjustedCruise = float(min(self.mtsc_target, self.vtsc_target) * (CV.MS_TO_KPH if frogpilot_toggles.is_metric else CV.MS_TO_MPH))
|
frogpilotPlan.adjustedCruise = float(min(self.mtsc_target, self.vtsc_target) * (CV.MS_TO_KPH if frogpilot_toggles.is_metric else CV.MS_TO_MPH))
|
||||||
|
|
||||||
frogpilotPlan.conditionalExperimental = self.cem.experimental_mode
|
frogpilotPlan.conditionalExperimental = self.cem.experimental_mode
|
||||||
|
frogpilotPlan.redLight = self.cem.red_light_detected
|
||||||
|
|
||||||
frogpilotPlan.maxAcceleration = self.max_accel
|
frogpilotPlan.maxAcceleration = self.max_accel
|
||||||
frogpilotPlan.minAcceleration = self.min_accel
|
frogpilotPlan.minAcceleration = self.min_accel
|
||||||
|
Loading…
x
Reference in New Issue
Block a user