IQ.Pilot Release Commit @ aade6af

This commit is contained in:
IQ.Lvbs CI [bot]
2026-07-23 22:12:53 -05:00
parent ade24fb921
commit ae90bc6d41
6 changed files with 20 additions and 17 deletions

View File

@@ -284,9 +284,9 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
// iqpilot model params // iqpilot model params
{"CameraOffset", {PERSISTENT, FLOAT, "0.0"}}, {"CameraOffset", {PERSISTENT, FLOAT, "0.0"}},
{"LagdToggle", {PERSISTENT, BOOL, "1"}}, {"IQLiveSteerDelay", {PERSISTENT, BOOL, "1"}},
{"LagdToggleDelay", {PERSISTENT, FLOAT, "0.2"}}, {"IQSoftwareSteerDelay", {PERSISTENT, FLOAT, "0.2"}},
{"LagdValueCache", {PERSISTENT, FLOAT, "0.2"}}, {"IQSteerDelayCache", {PERSISTENT, FLOAT, "0.2"}},
{"LaneChangeBsd", {PERSISTENT, INT, "0"}}, // -1 ignore BSD, 0 default, 1 block lane change on BSD {"LaneChangeBsd", {PERSISTENT, INT, "0"}}, // -1 ignore BSD, 0 default, 1 block lane change on BSD
{"LaneChangeContinuous", {PERSISTENT, BOOL, "0"}}, // 0 one-shot per blinker, 1 chain on held blinker (torque-gated) {"LaneChangeContinuous", {PERSISTENT, BOOL, "0"}}, // 0 one-shot per blinker, 1 chain on held blinker (torque-gated)
{"LaneChangeDelay", {PERSISTENT, FLOAT, "0.0"}}, // tenths of a second; scaled by 0.1 in desire_helper {"LaneChangeDelay", {PERSISTENT, FLOAT, "0.0"}}, // tenths of a second; scaled by 0.1 in desire_helper

View File

@@ -3,14 +3,14 @@ Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed
Chooses which steer-actuator delay the lateral controllers run with: the value the Chooses which steer-actuator delay the lateral controllers run with: the value the
live estimator learned, or the driver's fixed software delay — gated by the live estimator learned, or the driver's fixed software delay — gated by the
"LagdToggle" param. The pick is mirrored into "LagdValueCache" so consumers that do "IQLiveSteerDelay" param. The pick is mirrored into "IQSteerDelayCache" so consumers that do
not subscribe to liveDelay can still read the current value. not subscribe to liveDelay can still read the current value.
""" """
from openpilot.common.params import Params from openpilot.common.params import Params
_ENABLE_KEY = "LagdToggle" _ENABLE_KEY = "IQLiveSteerDelay"
_FIXED_KEY = "LagdToggleDelay" _FIXED_KEY = "IQSoftwareSteerDelay"
_CACHE_KEY = "LagdValueCache" _CACHE_KEY = "IQSteerDelayCache"
def resolve_steer_delay(params, stock_delay): def resolve_steer_delay(params, stock_delay):
@@ -27,7 +27,7 @@ def cached_steer_delay():
class SteerDelayPublisher: class SteerDelayPublisher:
"""Refreshes LagdValueCache every lag message: the learned live delay when the """Refreshes IQSteerDelayCache every lag message: the learned live delay when the
toggle is on, else the actuator delay plus the driver's fixed software offset.""" toggle is on, else the actuator delay plus the driver's fixed software offset."""
def __init__(self, car_params): def __init__(self, car_params):

View File

@@ -829,7 +829,7 @@ class SteeringLayout(Widget):
items = self._initialize_items() items = self._initialize_items()
self._scroller = Scroller(items, line_separator=False, spacing=0) self._scroller = Scroller(items, line_separator=False, spacing=0)
for ctrl, key in [(self._lane_turn_value_control, "IQLaneTurnValue"), (self._delay_control, "LagdToggleDelay")]: for ctrl, key in [(self._lane_turn_value_control, "IQLaneTurnValue"), (self._delay_control, "IQSoftwareSteerDelay")]:
ctrl.action_item.set_value(int(float(ui_state.params.get(key, return_default=True)) * 100)) ctrl.action_item.set_value(int(float(ui_state.params.get(key, return_default=True)) * 100))
def _initialize_items(self): def _initialize_items(self):
@@ -872,9 +872,9 @@ class SteeringLayout(Widget):
lambda v: f"{int(round(v * (CV.MPH_TO_KPH if ui_state.is_metric else 1)))}" lambda v: f"{int(round(v * (CV.MPH_TO_KPH if ui_state.is_metric else 1)))}"
f" {'km/h' if ui_state.is_metric else 'mph'}" f" {'km/h' if ui_state.is_metric else 'mph'}"
) )
self._lagd_toggle = toggle_item(tr("Live Learning Steer Delay"), "", param="LagdToggle") self._lagd_toggle = toggle_item(tr("Live Learning Steer Delay"), "", param="IQLiveSteerDelay")
self._delay_control = option_item( self._delay_control = option_item(
tr("Adjust Software Delay"), "LagdToggleDelay", 5, 50, tr("Adjust Software Delay"), "IQSoftwareSteerDelay", 5, 50,
tr("Adjust the fixed software delay added to steer actuator delay when Live Learning Steer Delay is turned off. The default software delay value is 0.2 s."), tr("Adjust the fixed software delay added to steer actuator delay when Live Learning Steer Delay is turned off. The default software delay value is 0.2 s."),
1, None, True, "", style.BUTTON_ACTION_WIDTH, None, True, lambda v: f"{float(v):.2f}s" 1, None, True, "", style.BUTTON_ACTION_WIDTH, None, True, lambda v: f"{float(v):.2f}s"
) )
@@ -919,7 +919,7 @@ class SteeringLayout(Widget):
self._nnff_toggle.action_item.set_enabled(ui_state.is_offroad() and steering_supported) self._nnff_toggle.action_item.set_enabled(ui_state.is_offroad() and steering_supported)
turn_desire = ui_state.params.get_bool("IQLaneTurnDesire") turn_desire = ui_state.params.get_bool("IQLaneTurnDesire")
live_delay = ui_state.params.get_bool("LagdToggle") live_delay = ui_state.params.get_bool("IQLiveSteerDelay")
self._lane_turn_desire_toggle.action_item.set_state(turn_desire) self._lane_turn_desire_toggle.action_item.set_state(turn_desire)
self._lane_turn_value_control.set_visible(turn_desire) self._lane_turn_value_control.set_visible(turn_desire)
self._lagd_toggle.action_item.set_state(live_delay) self._lagd_toggle.action_item.set_state(live_delay)
@@ -931,7 +931,7 @@ class SteeringLayout(Widget):
if live_delay: if live_delay:
lagd_desc += f"<br>{tr('Live Steer Delay:')} {ui_state.sm['liveDelay'].lateralDelay:.3f} s" lagd_desc += f"<br>{tr('Live Steer Delay:')} {ui_state.sm['liveDelay'].lateralDelay:.3f} s"
elif ui_state.CP: elif ui_state.CP:
sw = float(ui_state.params.get("LagdToggleDelay", "0.2")) sw = float(ui_state.params.get("IQSoftwareSteerDelay", "0.2"))
cp = ui_state.CP.steerActuatorDelay cp = ui_state.CP.steerActuatorDelay
lagd_desc += f"<br>{tr('Actuator Delay:')} {cp:.2f} s + {tr('Software Delay:')} {sw:.2f} s = {tr('Total Delay:')} {cp + sw:.2f} s" lagd_desc += f"<br>{tr('Actuator Delay:')} {cp:.2f} s + {tr('Software Delay:')} {sw:.2f} s = {tr('Total Delay:')} {cp + sw:.2f} s"
self._lagd_toggle.set_description(lagd_desc) self._lagd_toggle.set_description(lagd_desc)

View File

@@ -121,8 +121,8 @@ class ModelsLayoutMici(NavScroller):
self._clear.set_click_callback(self._confirm_clear_cache) self._clear.set_click_callback(self._confirm_clear_cache)
self._clear.set_enabled(lambda: ui_state.is_offroad()) self._clear.set_enabled(lambda: ui_state.is_offroad())
self._lagd = BigParamControl("live learning steer delay", "LagdToggle") self._lagd = BigParamControl("live learning steer delay", "IQLiveSteerDelay")
self._sw_delay = MappedParamToggle("software delay", "LagdToggleDelay", _DELAY_OPTIONS, _DELAY_VALUES) self._sw_delay = MappedParamToggle("software delay", "IQSoftwareSteerDelay", _DELAY_OPTIONS, _DELAY_VALUES)
self._sw_delay.set_visible(lambda: not self._lagd._checked) self._sw_delay.set_visible(lambda: not self._lagd._checked)
self._lane_turn = BigParamControl("use lane turn desires", "IQLaneTurnDesire") self._lane_turn = BigParamControl("use lane turn desires", "IQLaneTurnDesire")
@@ -453,7 +453,7 @@ class ModelsLayoutMici(NavScroller):
self._lagd.set_value("") self._lagd.set_value("")
return return
try: try:
sw = float(ui_state.params.get("LagdToggleDelay", return_default=True)) sw = float(ui_state.params.get("IQSoftwareSteerDelay", return_default=True))
except (TypeError, ValueError): except (TypeError, ValueError):
sw = 0.2 sw = 0.2
if ui_state.CP is not None: if ui_state.CP is not None:

View File

@@ -125,6 +125,9 @@ _RENAMED_PARAMS = {
"OffroadMode": "IQAlwaysOffroad", "OffroadMode": "IQAlwaysOffroad",
"AutoLaneChangeTimer": "IQLaneChangeTimer", "AutoLaneChangeTimer": "IQLaneChangeTimer",
"AutoLaneChangeBsmDelay": "IQLaneChangeBsmDelay", "AutoLaneChangeBsmDelay": "IQLaneChangeBsmDelay",
"LagdToggle": "IQLiveSteerDelay",
"LagdToggleDelay": "IQSoftwareSteerDelay",
"LagdValueCache": "IQSteerDelayCache",
} }

View File

@@ -165,7 +165,7 @@ def _patch_mock_state():
mp.put("Version", "IQ.Pilot 0.9.5-mici") mp.put("Version", "IQ.Pilot 0.9.5-mici")
# ── Models ──────────────────────────────────────────────────────────────── # ── Models ────────────────────────────────────────────────────────────────
mp.put("LagdToggle", False) mp.put("IQLiveSteerDelay", False)
mp.put("IQLaneTurnDesire", False) mp.put("IQLaneTurnDesire", False)
mp.put("IQLaneTurnValue", "19.0") mp.put("IQLaneTurnValue", "19.0")