mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-24 01:33:46 +08:00
teslurrrr
This commit is contained in:
@@ -173,6 +173,22 @@ class CarSpecificEvents:
|
||||
# if CC.eps_timer_soft_disable_alert: # type: ignore[attr-defined]
|
||||
# events.add(EventName.steerTimeLimit)
|
||||
|
||||
elif self.CP.brand == 'tesla':
|
||||
events = self.create_common_events(CS, CS_prev, extra_gears=extra_gears)
|
||||
|
||||
if self.CP.carFingerprint == "TESLA_MODEL_S_PREAP":
|
||||
if self.CP.pcmCruise:
|
||||
if getattr(CS, 'teslaCCEngaged', False):
|
||||
events.add(EventName.teslaCCEngaged)
|
||||
if getattr(CS, 'teslaCCDisengaged', False):
|
||||
events.add(EventName.teslaCCDisengaged)
|
||||
if getattr(CS, 'teslaCCNotArmed', False):
|
||||
events.add(EventName.teslaCCNotArmed)
|
||||
else:
|
||||
from opendbc.car.tesla.preap.nap_conf import nap_conf
|
||||
if not nap_conf.pedal_calibrated:
|
||||
events.add(EventName.pedalNotCalibrated)
|
||||
|
||||
elif self.CP.brand == 'hyundai':
|
||||
events = self.create_common_events(CS, CS_prev, extra_gears=extra_gears, pcm_enable=self.CP.pcmCruise, allow_button_cancel=False)
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
from unittest.mock import PropertyMock, patch # noqa: TID251
|
||||
|
||||
from cereal import car, log
|
||||
|
||||
from openpilot.selfdrive.car.car_specific import CarSpecificEvents
|
||||
|
||||
|
||||
EventName = log.OnroadEvent.EventName
|
||||
NAP_CONF_PATH = "opendbc.car.tesla.preap.nap_conf.NAPConf.pedal_calibrated"
|
||||
|
||||
|
||||
def _make_cp(*, fingerprint="TESLA_MODEL_S_PREAP", brand="tesla", pcm_cruise=False, op_long=True):
|
||||
cp = car.CarParams.new_message()
|
||||
cp.carFingerprint = fingerprint
|
||||
cp.brand = brand
|
||||
cp.pcmCruise = pcm_cruise
|
||||
cp.openpilotLongitudinalControl = op_long
|
||||
return cp
|
||||
|
||||
|
||||
def _make_cs():
|
||||
cs = car.CarState.new_message()
|
||||
cs.cruiseState.available = True
|
||||
cs.gearShifter = "drive"
|
||||
return cs
|
||||
|
||||
|
||||
def _run(cp, calibrated):
|
||||
with patch(NAP_CONF_PATH, new_callable=PropertyMock, return_value=calibrated):
|
||||
ce = CarSpecificEvents(cp)
|
||||
events = ce.update(_make_cs(), _make_cs(), car.CarControl.new_message())
|
||||
return events.names
|
||||
|
||||
|
||||
def test_fires_in_preap_pedal_mode_when_uncalibrated():
|
||||
cp = _make_cp(pcm_cruise=False, op_long=True)
|
||||
assert EventName.pedalNotCalibrated in _run(cp, calibrated=False)
|
||||
|
||||
|
||||
def test_silent_in_preap_pedal_mode_when_calibrated():
|
||||
cp = _make_cp(pcm_cruise=False, op_long=True)
|
||||
assert EventName.pedalNotCalibrated not in _run(cp, calibrated=True)
|
||||
|
||||
|
||||
def test_silent_in_preap_nopedal_mode_even_when_uncalibrated():
|
||||
cp = _make_cp(pcm_cruise=True, op_long=False)
|
||||
assert EventName.pedalNotCalibrated not in _run(cp, calibrated=False)
|
||||
|
||||
|
||||
def test_silent_on_non_preap_tesla():
|
||||
cp = _make_cp(fingerprint="TESLA_MODEL_S", pcm_cruise=False, op_long=True)
|
||||
assert EventName.pedalNotCalibrated not in _run(cp, calibrated=False)
|
||||
|
||||
|
||||
def test_silent_on_non_tesla_brand():
|
||||
cp = _make_cp(fingerprint="HONDA_CIVIC_2022", brand="honda", pcm_cruise=True, op_long=False)
|
||||
assert EventName.pedalNotCalibrated not in _run(cp, calibrated=False)
|
||||
@@ -49,9 +49,9 @@ MIN_LATERAL_CONTROL_SPEED = 0.3
|
||||
CIVIC_BOSCH_MODIFIED_B_FIXED_FRICTION_THRESHOLD = 0.30
|
||||
CIVIC_BOSCH_MODIFIED_B_LAT_ACCEL_FACTOR_MULT = 1.20
|
||||
CIVIC_BOSCH_MODIFIED_A_VARIANT_LAT_ACCEL_FACTOR_MULT = 1.00
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_LAT_ACCEL_FACTOR_MULT = 1.26
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_LAT_ACCEL_FACTOR_MULT = 1.32
|
||||
CIVIC_BOSCH_MODIFIED_B_TRANSITION_SPEED = 12.0
|
||||
CIVIC_BOSCH_MODIFIED_B_PHASE_SCALE = 0.10
|
||||
CIVIC_BOSCH_MODIFIED_B_PHASE_SCALE = 0.08
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_ONSET = 0.18
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_ONSET_WIDTH = 0.07
|
||||
CIVIC_BOSCH_MODIFIED_B_FF_CUTOFF = 1.00
|
||||
@@ -76,16 +76,16 @@ CIVIC_BOSCH_MODIFIED_A_VARIANT_TURN_IN_FRICTION_BOOST_LEFT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_A_VARIANT_TURN_IN_FRICTION_BOOST_RIGHT = 0.00
|
||||
CIVIC_BOSCH_MODIFIED_A_VARIANT_UNWIND_FRICTION_REDUCTION_LEFT = 0.03
|
||||
CIVIC_BOSCH_MODIFIED_A_VARIANT_UNWIND_FRICTION_REDUCTION_RIGHT = 0.07
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_LEFT = 0.24
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_RIGHT = 0.34
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_LEFT = 0.26
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_FF_REDUCTION_RIGHT = 0.38
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_LEFT = 0.06
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_BOOST_RIGHT = 0.06
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_LEFT = 1.18
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_RIGHT = 1.48
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_LEFT = 1.55
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_TAPER_RIGHT = 1.95
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_LEFT = 0.03
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_TURN_IN_FRICTION_BOOST_RIGHT = 0.03
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_LEFT = 0.88
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_RIGHT = 1.20
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_LEFT = 1.05
|
||||
CIVIC_BOSCH_MODIFIED_B_VARIANT_UNWIND_FRICTION_REDUCTION_RIGHT = 1.40
|
||||
|
||||
BOLT_2022_2023_CARS = (
|
||||
GM_CAR.CHEVROLET_BOLT_ACC_2022_2023,
|
||||
|
||||
@@ -441,7 +441,7 @@ class TestLatControl:
|
||||
monkeypatch.setattr(latcontrol_torque, "civic_bosch_modified_lateral_testing_ground_active", lambda: True)
|
||||
variant_controller = LatControlTorque(CP.as_reader(), CI, DT_CTRL)
|
||||
|
||||
assert variant_controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.20 * 1.26)
|
||||
assert variant_controller.torque_params.latAccelFactor == pytest.approx(3.0 * 1.20 * 1.32)
|
||||
|
||||
def test_modified_civic_b_torque_ff_scale_curve(self):
|
||||
steady_left = get_civic_bosch_modified_b_ff_scale(0.5, 0.0, 12.0)
|
||||
|
||||
@@ -920,6 +920,11 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
|
||||
ET.NO_ENTRY: NoEntryAlert("Calibration in Progress"),
|
||||
},
|
||||
|
||||
EventName.pedalNotCalibrated: {
|
||||
ET.PERMANENT: NormalPermanentAlert("Pedal Not Calibrated", "Check Calibration"),
|
||||
ET.NO_ENTRY: NoEntryAlert("Pedal Not Calibrated: Check Calibration"),
|
||||
},
|
||||
|
||||
EventName.calibrationRecalibrating: {
|
||||
ET.PERMANENT: calibration_incomplete_alert,
|
||||
ET.SOFT_DISABLE: soft_disable_alert("Device Remount Detected: Recalibrating"),
|
||||
@@ -1120,6 +1125,50 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = {
|
||||
ET.WARNING: personality_changed_alert,
|
||||
},
|
||||
|
||||
EventName.pedalCruiseEnabled: {
|
||||
ET.WARNING: Alert(
|
||||
"Pedal Cruise Engaged",
|
||||
"",
|
||||
AlertStatus.normal, AlertSize.small,
|
||||
Priority.LOW, VisualAlert.none, AudibleAlert.engage, 0.8),
|
||||
},
|
||||
|
||||
EventName.pedalCruiseDisabled: {
|
||||
ET.WARNING: Alert(
|
||||
"Pedal Cruise Disengaged",
|
||||
"",
|
||||
AlertStatus.normal, AlertSize.small,
|
||||
Priority.LOW, VisualAlert.none, AudibleAlert.disengage, 0.8),
|
||||
},
|
||||
|
||||
EventName.pedalMaxRegen: {
|
||||
ET.WARNING: Alert(
|
||||
"Max Regen Being Used",
|
||||
"",
|
||||
AlertStatus.userPrompt, AlertSize.small,
|
||||
Priority.HIGH, VisualAlert.steerRequired, AudibleAlert.prompt, 2.),
|
||||
},
|
||||
|
||||
EventName.teslaCCEngaged: {
|
||||
ET.WARNING: Alert(
|
||||
"Tesla Cruise Engaged",
|
||||
"",
|
||||
AlertStatus.normal, AlertSize.small,
|
||||
Priority.LOW, VisualAlert.none, AudibleAlert.engage, 0.8),
|
||||
},
|
||||
|
||||
EventName.teslaCCDisengaged: {
|
||||
ET.WARNING: Alert(
|
||||
"Tesla Cruise Disengaged",
|
||||
"",
|
||||
AlertStatus.normal, AlertSize.small,
|
||||
Priority.LOW, VisualAlert.none, AudibleAlert.disengage, 0.8),
|
||||
},
|
||||
|
||||
EventName.teslaCCNotArmed: {
|
||||
ET.PERMANENT: NormalPermanentAlert("Arm Stock Cruise to Enable Speed Control"),
|
||||
},
|
||||
|
||||
EventName.userBookmark: {
|
||||
ET.PERMANENT: NormalPermanentAlert("Bookmark Saved", duration=1.5),
|
||||
},
|
||||
|
||||
@@ -133,6 +133,7 @@ class SelfdriveD:
|
||||
self.recalibrating_seen = False
|
||||
self.state_machine = StateMachine()
|
||||
self.rk = Ratekeeper(100, print_delay_threshold=None)
|
||||
self.prev_pedal_long_active = False
|
||||
|
||||
# Determine startup event
|
||||
self.startup_event = StarPilotEventName.customStartupAlert
|
||||
@@ -241,6 +242,22 @@ class SelfdriveD:
|
||||
self.last_below_steer_speed_alert_time = now
|
||||
self.events.add_from_msg(car_events)
|
||||
|
||||
if (self.CP.brand == "tesla"
|
||||
and self.CP.carFingerprint == "TESLA_MODEL_S_PREAP"
|
||||
and self.CP.openpilotLongitudinalControl
|
||||
and not self.CP.pcmCruise):
|
||||
pedal_long_active = bool(CS.cruiseState.enabled and getattr(CS, 'pedalLongActive', False))
|
||||
if pedal_long_active and not self.prev_pedal_long_active:
|
||||
self.events.add(EventName.pedalCruiseEnabled)
|
||||
elif self.prev_pedal_long_active and not pedal_long_active:
|
||||
self.events.add(EventName.pedalCruiseDisabled)
|
||||
self.prev_pedal_long_active = pedal_long_active
|
||||
|
||||
if getattr(CS, 'pedalMaxRegen', False):
|
||||
self.events.add(EventName.pedalMaxRegen)
|
||||
else:
|
||||
self.prev_pedal_long_active = False
|
||||
|
||||
if (getattr(self.starpilot_toggles, "nostalgia_mode", False) and
|
||||
self.CP.openpilotLongitudinalControl and
|
||||
self.enabled and
|
||||
|
||||
Reference in New Issue
Block a user