From 4faeedec57072c9ce77df778ede51425efce79ea Mon Sep 17 00:00:00 2001 From: discountchubbs Date: Wed, 16 Jul 2025 12:03:35 -0700 Subject: [PATCH] dynamic outputs toggle --- common/params_keys.h | 1 + .../ui/sunnypilot/qt/offroad/settings/models_panel.cc | 9 +++++++++ .../ui/sunnypilot/qt/offroad/settings/models_panel.h | 1 + sunnypilot/modeld_v2/parse_model_outputs_split.py | 4 +++- system/manager/manager.py | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/common/params_keys.h b/common/params_keys.h index e7c4e11745..baa19f3fa1 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -150,6 +150,7 @@ inline static std::unordered_map keys = { {"MadsUnifiedEngagementMode", PERSISTENT | BACKUP}, // Model Manager params + {"DynamicModeldOutputs", PERSISTENT | BACKUP}, {"ModelManager_ActiveBundle", PERSISTENT}, {"ModelManager_DownloadIndex", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"ModelManager_LastSyncTime", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION}, diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc index 1a2e86622a..0a38468a89 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.cc @@ -89,6 +89,14 @@ ModelsPanel::ModelsPanel(QWidget *parent) : QWidget(parent) { list->addItem(horizontal_line()); + // Dynamic Modeld Outputs toggle + dynamicModeldOutputs = new ParamControlSP("DynamicModeldOutputs", tr("Allow Dynamic Model Outputs"), + tr("Enable this to allow potentially smoother Gas and Brake controls on all models produced " + "after September, 2024."), + "../assets/offroad/icon_shell.png"); + dynamicModeldOutputs->showDescription(); + list->addItem(dynamicModeldOutputs); + // LiveDelay toggle lagd_toggle_control = new ParamControlSP("LagdToggle", tr("Live Learning Steer Delay"), "", "../assets/offroad/icon_shell.png"); lagd_toggle_control->showDescription(); @@ -304,6 +312,7 @@ void ModelsPanel::updateLabels() { handleBundleDownloadProgress(); currentModelLblBtn->setEnabled(!is_onroad && !isDownloading()); currentModelLblBtn->setValue(GetActiveModelInternalName()); + dynamicModeldOutputs->showDescription(); // Update lagdToggle description with current value QString desc = tr("Enable this for the car to learn and adapt its steering response time. " diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.h index 61f15e6d3c..e0458c6f96 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/models_panel.h @@ -64,6 +64,7 @@ private: bool is_onroad = false; ButtonControlSP *currentModelLblBtn; + ParamControlSP *dynamicModeldOutputs; ParamControlSP *lagd_toggle_control; OptionControlSP *delay_control; QProgressBar *supercomboProgressBar; diff --git a/sunnypilot/modeld_v2/parse_model_outputs_split.py b/sunnypilot/modeld_v2/parse_model_outputs_split.py index c03972c8ff..4c32ba5673 100644 --- a/sunnypilot/modeld_v2/parse_model_outputs_split.py +++ b/sunnypilot/modeld_v2/parse_model_outputs_split.py @@ -1,4 +1,5 @@ import numpy as np +from openpilot.common.params import Params from openpilot.sunnypilot.models.split_model_constants import SplitModelConstants from openpilot.sunnypilot.models.helpers import get_active_bundle @@ -25,6 +26,7 @@ def softmax(x, axis=-1): class Parser: def __init__(self, ignore_missing=False): self.ignore_missing = ignore_missing + self._params = Params() model_bundle = get_active_bundle() self.generation = model_bundle.generation if model_bundle is not None else None @@ -92,7 +94,7 @@ class Parser: outs[name + '_stds'] = pred_std_final.reshape(final_shape) def parse_dynamic_outputs(self, outs: dict[str, np.ndarray]) -> None: - if self.generation >= 12: + if self._params.get_bool("DynamicModeldOutputs") or (self.generation >= 12): if 'lead' in outs: if outs['lead'].shape[1] == 2 * SplitModelConstants.LEAD_MHP_SELECTION *SplitModelConstants.LEAD_TRAJ_LEN * SplitModelConstants.LEAD_WIDTH: self.parse_mdn('lead', outs, in_N=0, out_N=0, diff --git a/system/manager/manager.py b/system/manager/manager.py index b68207b691..c0c8813e48 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -55,6 +55,7 @@ def manager_init() -> None: ("CustomAccShortPressIncrement", "1"), ("DeviceBootMode", "0"), ("DynamicExperimentalControl", "0"), + ("DynamicModeldOutputs", "0"), ("HyundaiLongitudinalTuning", "0"), ("InteractivityTimeout", "0"), ("LagdToggle", "1"),