From bdb3c0a09c355016403ac3365c3e8d28b59b8887 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sun, 7 Jul 2024 22:23:46 -0400 Subject: [PATCH 1/2] Update CHANGELOGS.md --- CHANGELOGS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 2748876a6b..9d66bf8c58 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -28,6 +28,8 @@ sunnypilot - 0.9.8.0 (2024-xx-xx) * UPDATED: Driving Model Selector v5 * NEW❗: Driving Model additions * Notre Dame (July 01, 2024) - NDv3 +* UPDATED: Neural Network Lateral Control (NNLC) + * FIXED: Hotfix for "lazy" steering performance in tighter curves thanks to twilsonco! * UPDATED: Toyota: Continued support for Smart DSU (SDSU) and Radar CAN Filter * In response to the official deprecation of support for Smart DSU (SDSU) and Radar CAN Filter in the upstream ([commaai/openpilot#32777](https://github.com/commaai/openpilot/pull/32777)), sunnypilot will continue maintaining software support for Smart DSU (SDSU) and Radar CAN Filter * UPDATED: Continued support for Mapbox navigation @@ -105,7 +107,6 @@ sunnypilot - 0.9.7.1 (2024-06-13) * Reset self-service access tokens for Mapbox, Amap, and Google Maps * UPDATED: Upstream native support for Gap Adjust Cruise * UPDATED: Neural Network Lateral Control (NNLC) - * FIXED: Hotfix for "lazy" steering performance in tighter curves thanks to twilsonco! * Due to upstream changes with platform simplifications, most platforms will match and fallback to combined platform model * This will be updated when the new mapping of platforms are restructured (thanks @twilsonco 😉) * UI Updates From 8e256ee6c50d9034501a20f63e40436a9a859740 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sun, 7 Jul 2024 23:11:18 -0400 Subject: [PATCH 2/2] Add toggles and update CHANGELOGS.md --- CHANGELOGS.md | 2 + .../offroad/sunnypilot/sunnypilot_settings.cc | 43 ++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 9d66bf8c58..f8d25f602c 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -29,6 +29,8 @@ sunnypilot - 0.9.8.0 (2024-xx-xx) * NEW❗: Driving Model additions * Notre Dame (July 01, 2024) - NDv3 * UPDATED: Neural Network Lateral Control (NNLC) + * NEW❗: Remove Lateral Jerk Response (Alpha) + * * FIXED: Hotfix for "lazy" steering performance in tighter curves thanks to twilsonco! * UPDATED: Toyota: Continued support for Smart DSU (SDSU) and Radar CAN Filter * In response to the official deprecation of support for Smart DSU (SDSU) and Radar CAN Filter in the upstream ([commaai/openpilot#32777](https://github.com/commaai/openpilot/pull/32777)), sunnypilot will continue maintaining software support for Smart DSU (SDSU) and Radar CAN Filter diff --git a/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc index 8db23500b4..fdbad474a5 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc @@ -59,12 +59,24 @@ SunnypilotPanel::SunnypilotPanel(QWidget *parent) : QFrame(parent) { "", "../assets/offroad/icon_blank.png", }, + { + "NNFFNoLateralJerk", + tr("NNLC: Remove Lateral Jerk Response (Alpha)"), + tr("When NNLC is active, enable this to disables the use of lateral jerk in steering torque calculations, focusing solely on lateral acceleration for a simplified control response."), + "../assets/offroad/icon_blank.png", + }, { "EnforceTorqueLateral", tr("Enforce Torque Lateral Control"), tr("Enable this to enforce sunnypilot to steer with Torque lateral control."), "../assets/offroad/icon_blank.png", }, + { + "TorqueLateralJerk", + tr("Lateral Jerk with Torque Lateral Control (Alpha)"), + tr("Utilizes limited lateral jerk control for improved steering response, leveraging stock torque lateral controller capabilities. Designed to mimic NNLC behavior without training models or data collection."), + "../assets/offroad/icon_blank.png", + }, { "LiveTorque", tr("Enable Self-Tune"), @@ -312,6 +324,17 @@ SunnypilotPanel::SunnypilotPanel(QWidget *parent) : QFrame(parent) { } }); + connect(toggles["EnforceTorqueLateral"], &ToggleControl::toggleFlipped, [=](bool state) { + if (state) { + toggles["NNFF"]->setEnabled(false); + params.putBool("NNFF", false); + toggles["NNFF"]->refresh(); + } else { + toggles["NNFF"]->setEnabled(true); + toggles["NNFF"]->refresh(); + } + }); + // trigger updateToggles() when toggleFlipped for (const auto& updateToggleName : updateTogglesNames) { if (toggles.find(updateToggleName) != toggles.end()) { @@ -541,7 +564,7 @@ void SunnypilotPanel::updateToggles() { } // toggle names to update when EnforceTorqueLateral is flipped - std::vector torqueLateralGroup{"CustomTorqueLateral", "LiveTorque", "LiveTorqueRelaxed", "TorquedOverride"}; + std::vector torqueLateralGroup{"CustomTorqueLateral", "TorqueLateralJerk", "LiveTorque", "LiveTorqueRelaxed", "TorquedOverride"}; for (const auto& torqueLateralToggle : torqueLateralGroup) { if (toggles.find(torqueLateralToggle) != toggles.end()) { if (nnff_toggle->isToggled()) { @@ -558,6 +581,24 @@ void SunnypilotPanel::updateToggles() { } } + // toggle names to update when EnforceTorqueLateral is flipped + std::vector nnffGroup{"NNFFNoLateralJerk"}; + for (const auto& nnffToggle : nnffGroup) { + if (toggles.find(nnffToggle) != toggles.end()) { + if (enforce_torque_lateral->isToggled()) { + toggles[nnffToggle]->setVisible(false); + toggles[nnffToggle]->setEnabled(false); + } + } + } + + for (const auto& nnffToggle : nnffGroup) { + if (toggles.find(nnffToggle) != toggles.end()) { + toggles[nnffToggle]->setVisible(nnff_toggle->isToggled()); + toggles[nnffToggle]->setEnabled(nnff_toggle->isToggled()); + } + } + if (enforce_torque_lateral->isToggled()) { live_torque_relaxed->setVisible(live_torque->isToggled()); torqued_override->setVisible(custom_torque_lateral->isToggled());