From 54ca4b537d7834668360620171c0ba01cbe22d7d Mon Sep 17 00:00:00 2001 From: royjr Date: Sun, 21 Sep 2025 12:48:32 -0400 Subject: [PATCH] VisualStyleBlendThreshold --- common/params_keys.h | 1 + selfdrive/ui/qt/onroad/model.cc | 5 +++-- .../qt/offroad/settings/visuals_panel.cc | 19 +++++++++++++++++-- .../qt/offroad/settings/visuals_panel.h | 1 + 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/common/params_keys.h b/common/params_keys.h index c7ef66106b..21f475ea9c 100644 --- a/common/params_keys.h +++ b/common/params_keys.h @@ -164,6 +164,7 @@ inline static std::unordered_map keys = { {"StandstillTimer", {PERSISTENT | BACKUP, BOOL, "0"}}, {"VisualStyle", {PERSISTENT | BACKUP, INT, "0"}}, {"VisualStyleBlend", {PERSISTENT | BACKUP, BOOL, "0"}}, + {"VisualStyleBlendThreshold", {PERSISTENT | BACKUP, INT, "20"}}, // MADS params {"Mads", {PERSISTENT | BACKUP, BOOL, "1"}}, diff --git a/selfdrive/ui/qt/onroad/model.cc b/selfdrive/ui/qt/onroad/model.cc index bfd3d09b36..821e882d3a 100644 --- a/selfdrive/ui/qt/onroad/model.cc +++ b/selfdrive/ui/qt/onroad/model.cc @@ -518,6 +518,7 @@ bool ModelRenderer::mapToScreen(float in_x, float in_y, float in_z, QPointF *out int visual_style = QString::fromStdString(Params().get("VisualStyle")).toInt(); int visual_blend = QString::fromStdString(Params().get("VisualStyleBlend")).toInt(); + float visual_blend_threshold = QString::fromStdString(Params().get("VisualStyleBlendThreshold")).toFloat(); // Force top-down if VisualStyle == 3 if (visual_style == 3) { @@ -532,9 +533,9 @@ bool ModelRenderer::mapToScreen(float in_x, float in_y, float in_z, QPointF *out static double last_t = millis_since_boot(); // Hysteresis logic - if (target_blend < 0.5f && blend_speed_mph > 50.0f) { + if (target_blend < 0.5f && blend_speed_mph > visual_blend_threshold) { target_blend = 1.0f; // switch to 2D - } else if (target_blend > 0.5f && blend_speed_mph < 45.0f) { + } else if (target_blend > 0.5f && blend_speed_mph < (visual_blend_threshold - 5)) { target_blend = 0.0f; // switch back to 3D } diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.cc index 37aeb33391..b3d3d36e32 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.cc @@ -44,8 +44,8 @@ VisualsPanel::VisualsPanel(QWidget *parent) : QWidget(parent) { }, { "VisualStyleBlend", - tr("Morph to Overhead Visual Style"), - tr("Morphing to Overhead view when using Minimal/Vision visual style."), + tr("Blend to Overhead Visual Style"), + tr("Blend to Overhead view when using Minimal/Vision visual style."), "../assets/offroad/icon_monitoring.png", false, }, @@ -75,6 +75,21 @@ VisualsPanel::VisualsPanel(QWidget *parent) : QWidget(parent) { param_watcher->addParam(param); } + // Visuals: VisualStyleBlend Threshold + visual_style_threshold_settings = new OptionControlSP("VisualStyleBlendThreshold", tr("Adjust Visual Style Blend Threshold"), + tr("Adjust the threshold when Visual Style Blend activates."), + "", {10, 40}, 5, false, nullptr, false); + + connect(visual_style_threshold_settings, &OptionControlSP::updateLabels, [=]() { + int value = QString::fromStdString(params.get("VisualStyleBlendThreshold")).toInt(); + visual_style_threshold_settings->setLabel(QString::number(value) + " mph"); + }); + + int value = QString::fromStdString(params.get("VisualStyleBlendThreshold")).toInt(); + visual_style_threshold_settings->setLabel(QString::number(value) + " mph"); + + list->addItem(visual_style_threshold_settings); + // Visuals: Visual Style std::vector visual_style_settings_texts{tr("Default"), tr("Minimal"), tr("Vision"), tr("Overhead")}; visual_style_settings = new ButtonParamControlSP( diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.h index 9cb3b55052..becf65fe15 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/visuals_panel.h @@ -30,4 +30,5 @@ protected: ButtonParamControlSP *chevron_info_settings; ButtonParamControlSP *dev_ui_settings; ButtonParamControlSP *visual_style_settings; + OptionControlSP *visual_style_threshold_settings; };