mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 13:33:42 +08:00
Default lane-centering model breakaway to fifty percent
This commit is contained in:
Binary file not shown.
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
@@ -1 +1 @@
|
||||
{"protected_inventory_sha256": "ff068e317667b963790c7cc53ad458af1adeeff7e991e4c16c0fd11bb6840bff", "schema_version": 1}
|
||||
{"protected_inventory_sha256": "83f3f3f137084506eb99bd5c1210e8560ebf88d839c673f6db4d796995a1c9d5", "schema_version": 1}
|
||||
|
||||
Reference in New Issue
Block a user