Default lane-centering model breakaway to fifty percent

This commit is contained in:
firestar5683
2026-10-31 18:18:13 -05:00
parent ff15fc4fae
commit 0206e5dfc1
8 changed files with 35 additions and 7 deletions
Binary file not shown.
+1 -1
View File
@@ -123,7 +123,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"TryChubbsLaneCentering", {PERSISTENT, BOOL, "0"}},
{"LaneCenteringPauseOnSignal", {PERSISTENT, BOOL, "1"}},
{"LaneCenterOffset", {PERSISTENT, FLOAT, "0.0"}},
{"LaneCenteringE2EAuthority", {PERSISTENT, FLOAT, "1.0"}},
{"LaneCenteringE2EAuthority", {PERSISTENT, FLOAT, "0.5"}},
{"LaneCenteringStrength", {PERSISTENT, FLOAT, "1.5"}},
{"StarPortEnabled", {PERSISTENT | DONT_LOG, BOOL, "0"}},
{"AdvancedLateralTune", {PERSISTENT, BOOL}},
@@ -54,7 +54,7 @@ class ControlMode(StrEnum):
class LaneCenteringSettings:
enabled: bool = False
offset_m: float = 0.0
e2e_authority: float = 1.0
e2e_authority: float = 0.5
pause_on_signal: bool = True
strength: float = STRENGTH_BASELINE
+1 -1
View File
@@ -29,7 +29,7 @@ def read_settings(params) -> LaneCenteringSettings:
enabled = boolean('LaneCentering', b'0')
pause = boolean('LaneCenteringPauseOnSignal', b'1')
offset = float(raw('LaneCenterOffset', b'0.0'))
authority = float(raw('LaneCenteringE2EAuthority', b'1.0'))
authority = float(raw('LaneCenteringE2EAuthority', b'0.5'))
try:
strength = float(raw('LaneCenteringStrength', str(STRENGTH_BASELINE).encode()))
except UnknownKeyName:
@@ -988,6 +988,28 @@ class LaneRuntimeTests(unittest.TestCase):
self.assertEqual(predicted.lane_centering_applied, 0.)
self.assertEqual(predicted.CP.to_dict(), ordinary.CP.to_dict())
def test_half_breakaway_defaults_reset_and_preserve_saved_preferences(self):
from openpilot.starpilot.lateral.lane_centering import LaneCenteringSettings
from openpilot.starpilot.ui.controller_feature import SETUP_DEFAULTS
with OpenpilotPrefix():
params = Params()
key = 'LaneCenteringE2EAuthority'
self.assertIsNone(params.get(key))
self.assertEqual(params.get_default_value(key), .5)
self.assertEqual(LaneCenteringSettings().e2e_authority, .5)
self.assertEqual(read_settings(params).e2e_authority, .5)
self.assertEqual(SETUP_DEFAULTS[key], b'0.5')
self.assertIsNone(params.get(key))
for value in (0., .3, 1.):
params.put(key, value, block=True)
before = Path(params.get_param_path(key)).read_bytes()
self.assertEqual(read_settings(params).e2e_authority, value)
self.assertEqual(Path(params.get_param_path(key)).read_bytes(), before)
self.assertEqual(params.get_default_value(key), .5)
params.remove(key)
self.assertEqual(read_settings(params).e2e_authority, .5)
self.assertIsNone(params.get(key))
def test_saved_settings_bounds_and_corruption(self):
with OpenpilotPrefix():
params = Params()
+1 -1
View File
@@ -27,7 +27,7 @@ TUNING_GUIDANCE = ("StarPilot's torque controller can provide higher low-speed s
SETUP_ACTION = 'torque_prepare_firestar'
SETUP_QUESTION = 'Change tuning preparation? Turning it off restores your previous steering preferences.'
SETUP_DEFAULTS = {'TurnAssist': b'0', LEARNING_OFF_KEY: b'1', 'LaneCentering': b'0',
'LaneCenterOffset': b'0.0', 'LaneCenteringE2EAuthority': b'1.0', 'LaneCenteringPauseOnSignal': b'1'}
'LaneCenterOffset': b'0.0', 'LaneCenteringE2EAuthority': b'0.5', 'LaneCenteringPauseOnSignal': b'1'}
SETUP_LIMITS = {**dict.fromkeys(SETUP_DEFAULTS, 128), LEARNING_PREFERENCES_KEY: LEARNING_PREFERENCES_LIMIT,
LANE_CHANGE_KEY: LANE_CHANGE_LIMIT, DOCUMENT_KEY: MAX_DOCUMENT_BYTES}
@@ -519,9 +519,15 @@ class FeatureSettingsOwnerTests(unittest.TestCase):
self.assertTrue(self.owner.apply(required_change(parent)))
self.assertTrue(self.params.get_bool('SLCConfirmation'))
authority = self._row("lane", "LaneCenteringE2EAuthority")
self.assertEqual(authority.value, "100.0")
self.assertEqual(authority.value, "50.0")
self.assertTrue(self.owner.apply(required_change(authority, -1)))
self.assertAlmostEqual(self.params.get("LaneCenteringE2EAuthority"), 0.95)
self.assertAlmostEqual(self.params.get("LaneCenteringE2EAuthority"), 0.45)
authority = self._row("lane", "LaneCenteringE2EAuthority")
self.assertEqual(authority.default_value, "50.0")
reset = row_default(authority)
assert reset is not None
self.assertTrue(self.owner.apply(reset))
self.assertEqual(self.params.get("LaneCenteringE2EAuthority"), 0.5)
offset = self._row("slc", "slc:offset:1")
self.assertTrue(offset.available)
self.assertFalse(self.owner.apply(FeatureSettingsRequest("slc:offset:1", offset.source, "5", vehicle_fingerprint=offset.vehicle_fingerprint)))
+1 -1
View File
@@ -1 +1 @@
{"protected_inventory_sha256": "ff068e317667b963790c7cc53ad458af1adeeff7e991e4c16c0fd11bb6840bff", "schema_version": 1}
{"protected_inventory_sha256": "83f3f3f137084506eb99bd5c1210e8560ebf88d839c673f6db4d796995a1c9d5", "schema_version": 1}