parent
							
								
									c1762af4e7
								
							
						
					
					
						commit
						7558a02c91
					
				
				 3 changed files with 83 additions and 198 deletions
			
			
		| @ -1,112 +0,0 @@ | |||||||
| import copy |  | ||||||
| import json |  | ||||||
| import os |  | ||||||
| import numpy as np |  | ||||||
| import tomllib |  | ||||||
| from abc import abstractmethod, ABC |  | ||||||
| from enum import StrEnum |  | ||||||
| from typing import Any, NamedTuple |  | ||||||
| from collections.abc import Callable |  | ||||||
| from functools import cache |  | ||||||
| 
 |  | ||||||
| from cereal import car |  | ||||||
| from openpilot.common.basedir import BASEDIR |  | ||||||
| from openpilot.common.simple_kalman import KF1D, get_kalman_gain |  | ||||||
| from openpilot.selfdrive.car import DT_CTRL, apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, get_friction, STD_CARGO_KG |  | ||||||
| from openpilot.selfdrive.car import structs |  | ||||||
| from openpilot.selfdrive.car.interfaces import MAX_CTRL_SPEED |  | ||||||
| from openpilot.selfdrive.car.can_definitions import CanData, CanRecvCallable, CanSendCallable |  | ||||||
| from openpilot.selfdrive.car.conversions import Conversions as CV |  | ||||||
| from openpilot.selfdrive.car.helpers import clip |  | ||||||
| from openpilot.selfdrive.car.values import PLATFORMS |  | ||||||
| from openpilot.selfdrive.controls.lib.events import Events |  | ||||||
| 
 |  | ||||||
| ButtonType = structs.CarState.ButtonEvent.Type |  | ||||||
| GearShifter = structs.CarState.GearShifter |  | ||||||
| EventName = car.CarEvent.EventName |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def create_common_events(CP: structs.CarParams, cs_out, extra_gears=None, pcm_enable=True, allow_enable=True, |  | ||||||
|                          enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): |  | ||||||
|   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 (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) |  | ||||||
|   if not cs_out.cruiseState.available: |  | ||||||
|     events.add(EventName.wrongCarMode) |  | ||||||
|   if cs_out.espDisabled: |  | ||||||
|     events.add(EventName.espDisabled) |  | ||||||
|   if cs_out.espActive: |  | ||||||
|     events.add(EventName.espActive) |  | ||||||
|   if cs_out.stockFcw: |  | ||||||
|     events.add(EventName.stockFcw) |  | ||||||
|   if cs_out.stockAeb: |  | ||||||
|     events.add(EventName.stockAeb) |  | ||||||
|   if cs_out.vEgo > MAX_CTRL_SPEED: |  | ||||||
|     events.add(EventName.speedTooHigh) |  | ||||||
|   if cs_out.cruiseState.nonAdaptive: |  | ||||||
|     events.add(EventName.wrongCruiseMode) |  | ||||||
|   if cs_out.brakeHoldActive and CP.openpilotLongitudinalControl: |  | ||||||
|     events.add(EventName.brakeHold) |  | ||||||
|   if cs_out.parkingBrake: |  | ||||||
|     events.add(EventName.parkBrake) |  | ||||||
|   if cs_out.accFaulted: |  | ||||||
|     events.add(EventName.accFaulted) |  | ||||||
|   if cs_out.steeringPressed: |  | ||||||
|     events.add(EventName.steerOverride) |  | ||||||
|   if cs_out.brakePressed and cs_out.standstill: |  | ||||||
|     events.add(EventName.preEnableStandstill) |  | ||||||
|   if cs_out.gasPressed: |  | ||||||
|     events.add(EventName.gasPressedOverride) |  | ||||||
|   if cs_out.vehicleSensorsInvalid: |  | ||||||
|     events.add(EventName.vehicleSensorsInvalid) |  | ||||||
| 
 |  | ||||||
|   # Handle button presses |  | ||||||
|   for b in cs_out.buttonEvents: |  | ||||||
|     # Enable OP long on falling edge of enable buttons (defaults to accelCruise and decelCruise, overridable per-port) |  | ||||||
|     if not CP.pcmCruise and (b.type in enable_buttons and not b.pressed): |  | ||||||
|       events.add(EventName.buttonEnable) |  | ||||||
|     # Disable on rising and falling edge of cancel for both stock and OP long |  | ||||||
|     if b.type == ButtonType.cancel: |  | ||||||
|       events.add(EventName.buttonCancel) |  | ||||||
| 
 |  | ||||||
|   # Handle permanent and temporary steering faults |  | ||||||
|   self.steering_unpressed = 0 if cs_out.steeringPressed else self.steering_unpressed + 1 |  | ||||||
|   if cs_out.steerFaultTemporary: |  | ||||||
|     if cs_out.steeringPressed and (not self.CS.out.steerFaultTemporary or self.no_steer_warning): |  | ||||||
|       self.no_steer_warning = True |  | ||||||
|     else: |  | ||||||
|       self.no_steer_warning = False |  | ||||||
| 
 |  | ||||||
|       # if the user overrode recently, show a less harsh alert |  | ||||||
|       if self.silent_steer_warning or cs_out.standstill or self.steering_unpressed < int(1.5 / DT_CTRL): |  | ||||||
|         self.silent_steer_warning = True |  | ||||||
|         events.add(EventName.steerTempUnavailableSilent) |  | ||||||
|       else: |  | ||||||
|         events.add(EventName.steerTempUnavailable) |  | ||||||
|   else: |  | ||||||
|     self.no_steer_warning = False |  | ||||||
|     self.silent_steer_warning = False |  | ||||||
|   if cs_out.steerFaultPermanent: |  | ||||||
|     events.add(EventName.steerUnavailable) |  | ||||||
| 
 |  | ||||||
|   # we engage when pcm is active (rising edge) |  | ||||||
|   # enabling can optionally be blocked by the car interface |  | ||||||
|   if pcm_enable: |  | ||||||
|     if cs_out.cruiseState.enabled and not self.CS.out.cruiseState.enabled and allow_enable: |  | ||||||
|       events.add(EventName.pcmEnable) |  | ||||||
|     elif not cs_out.cruiseState.enabled: |  | ||||||
|       events.add(EventName.pcmDisable) |  | ||||||
| 
 |  | ||||||
|   return events |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| def create_car_events(CP: structs.CarParams, cs_out: car.CarState): |  | ||||||
|   events = create_common_events(CP, cs_out) |  | ||||||
					Loading…
					
					
				
		Reference in new issue