Revert "MADS: Steering Mode on Brake Pedal Press (#687)" (#789)

This reverts commit bf2731b4
This commit is contained in:
Jason Wen
2025-04-04 22:43:00 -04:00
committed by GitHub
parent 658444ca77
commit 8dec4ea5d7
8 changed files with 20 additions and 44 deletions
+1 -1
View File
@@ -135,7 +135,7 @@ inline static std::unordered_map<std::string, uint32_t> keys = {
// MADS params // MADS params
{"Mads", PERSISTENT | BACKUP}, {"Mads", PERSISTENT | BACKUP},
{"MadsMainCruiseAllowed", PERSISTENT | BACKUP}, {"MadsMainCruiseAllowed", PERSISTENT | BACKUP},
{"MadsSteeringMode", PERSISTENT | BACKUP}, {"MadsPauseLateralOnBrake", PERSISTENT | BACKUP},
{"MadsUnifiedEngagementMode", PERSISTENT | BACKUP}, {"MadsUnifiedEngagementMode", PERSISTENT | BACKUP},
// Model Manager params // Model Manager params
+2 -2
View File
@@ -41,7 +41,7 @@
#define CUTOFF_IL 400 #define CUTOFF_IL 400
#define SATURATE_IL 1000 #define SATURATE_IL 1000
#define ALT_EXP_MADS_DISENGAGE_LATERAL_ON_BRAKE 2048 #define ALT_EXP_DISENGAGE_LATERAL_ON_BRAKE 2048
ExitHandler do_exit; ExitHandler do_exit;
@@ -57,7 +57,7 @@ bool check_all_connected(const std::vector<Panda *> &pandas) {
bool process_mads_heartbeat(SubMaster *sm) { bool process_mads_heartbeat(SubMaster *sm) {
const int &alt_exp = (*sm)["carParams"].getCarParams().getAlternativeExperience(); const int &alt_exp = (*sm)["carParams"].getCarParams().getAlternativeExperience();
const bool disengage_lateral_on_brake = (alt_exp & ALT_EXP_MADS_DISENGAGE_LATERAL_ON_BRAKE) != 0; const bool disengage_lateral_on_brake = (alt_exp & ALT_EXP_DISENGAGE_LATERAL_ON_BRAKE) != 0;
const auto &mads = (*sm)["selfdriveStateSP"].getSelfdriveStateSP().getMads(); const auto &mads = (*sm)["selfdriveStateSP"].getSelfdriveStateSP().getMads();
const bool heartbeat_type = disengage_lateral_on_brake ? mads.getActive() : mads.getEnabled(); const bool heartbeat_type = disengage_lateral_on_brake ? mads.getActive() : mads.getEnabled();
@@ -39,19 +39,17 @@ MadsSettings::MadsSettings(QWidget *parent) : QWidget(parent) {
""); "");
list->addItem(madsUnifiedEngagementModeToggle); list->addItem(madsUnifiedEngagementModeToggle);
// Steering Mode On Brake // Pause Lateral On Brake
std::vector<QString> lateral_on_brake_texts{tr("Remain Active"), tr("Pause Steering"), tr("Disengage")}; std::vector<QString> lateral_on_brake_texts{tr("Remain Active"), tr("Pause Steering")};
madsSteeringMode = new ButtonParamControl( madsPauseLateralOnBrake = new ButtonParamControl(
"MadsSteeringMode", "MadsPauseLateralOnBrake",
tr("Steering Mode on Brake Pedal"), tr("Steering Mode After Braking"),
tr("Choose how Automatic Lane Centering (ALC) behaves after the brake pedal is manually pressed in sunnypilot.\n\n" tr("Choose how Automatic Lane Centering (ALC) behaves after the brake pedal is manually pressed in sunnypilot.\n\n"
"Remain Active: ALC will remain active even after the brake pedal is pressed.\n" "Remain Active: ALC will remain active even after the brake pedal is pressed.\nPause Steering: ALC will be paused after the brake pedal is manually pressed."),
"Pause Steering: ALC will be paused when the brake pedal is manually pressed."),
"Disengage: ALC will be disengaged after the brake pedal is pressed.\n"
"", "",
lateral_on_brake_texts, lateral_on_brake_texts,
500); 500);
list->addItem(madsSteeringMode); list->addItem(madsPauseLateralOnBrake);
QObject::connect(uiState(), &UIState::offroadTransition, this, &MadsSettings::updateToggles); QObject::connect(uiState(), &UIState::offroadTransition, this, &MadsSettings::updateToggles);
@@ -63,7 +61,7 @@ void MadsSettings::showEvent(QShowEvent *event) {
} }
void MadsSettings::updateToggles(bool _offroad) { void MadsSettings::updateToggles(bool _offroad) {
madsSteeringMode->setEnabled(_offroad); madsPauseLateralOnBrake->setEnabled(_offroad);
offroad = _offroad; offroad = _offroad;
} }
@@ -32,5 +32,5 @@ private:
ParamControl *madsMainCruiseToggle; ParamControl *madsMainCruiseToggle;
ParamControl *madsUnifiedEngagementModeToggle; ParamControl *madsUnifiedEngagementModeToggle;
ButtonParamControl *madsSteeringMode; ButtonParamControl *madsPauseLateralOnBrake;
}; };
+3 -18
View File
@@ -11,30 +11,15 @@ from opendbc.safety import ALTERNATIVE_EXPERIENCE
from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP, HyundaiSafetyFlagsSP from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP, HyundaiSafetyFlagsSP
class MadsSteeringModeOnBrake:
REMAIN_ACTIVE = 0
PAUSE = 1
DISENGAGE = 2
def read_steering_mode_param(params: Params):
try:
return int(params.get("MadsSteeringMode"))
except (ValueError, TypeError):
return f"{MadsSteeringModeOnBrake.REMAIN_ACTIVE}"
def set_alternative_experience(CP: structs.CarParams, params: Params): def set_alternative_experience(CP: structs.CarParams, params: Params):
enabled = params.get_bool("Mads") enabled = params.get_bool("Mads")
steering_mode = read_steering_mode_param(params) pause_lateral_on_brake = params.get_bool("MadsPauseLateralOnBrake")
if enabled: if enabled:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS
if steering_mode == MadsSteeringModeOnBrake.DISENGAGE: if pause_lateral_on_brake:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_DISENGAGE_LATERAL_ON_BRAKE CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISENGAGE_LATERAL_ON_BRAKE
elif steering_mode == MadsSteeringModeOnBrake.PAUSE:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_PAUSE_LATERAL_ON_BRAKE
def set_car_specific_params(CP: structs.CarParams, CP_SP: structs.CarParamsSP, params: Params): def set_car_specific_params(CP: structs.CarParams, CP_SP: structs.CarParamsSP, params: Params):
+3 -10
View File
@@ -8,7 +8,6 @@ See the LICENSE.md file in the root directory for more details.
from cereal import car, log, custom from cereal import car, log, custom
from opendbc.car.hyundai.values import HyundaiFlags from opendbc.car.hyundai.values import HyundaiFlags
from openpilot.sunnypilot.mads.helpers import MadsSteeringModeOnBrake, read_steering_mode_param
from openpilot.sunnypilot.mads.state import StateMachine, GEARS_ALLOW_PAUSED_SILENT from openpilot.sunnypilot.mads.state import StateMachine, GEARS_ALLOW_PAUSED_SILENT
State = custom.ModularAssistiveDrivingSystem.ModularAssistiveDrivingSystemState State = custom.ModularAssistiveDrivingSystem.ModularAssistiveDrivingSystemState
@@ -42,7 +41,7 @@ class ModularAssistiveDrivingSystem:
# read params on init # read params on init
self.enabled_toggle = self.params.get_bool("Mads") self.enabled_toggle = self.params.get_bool("Mads")
self.main_enabled_toggle = self.params.get_bool("MadsMainCruiseAllowed") self.main_enabled_toggle = self.params.get_bool("MadsMainCruiseAllowed")
self.steering_mode_on_brake = read_steering_mode_param(self.params) self.pause_lateral_on_brake_toggle = self.params.get_bool("MadsPauseLateralOnBrake")
self.unified_engagement_mode = self.params.get_bool("MadsUnifiedEngagementMode") self.unified_engagement_mode = self.params.get_bool("MadsUnifiedEngagementMode")
def read_params(self): def read_params(self):
@@ -84,11 +83,11 @@ class ModularAssistiveDrivingSystem:
replace_event(EventName.parkBrake, EventNameSP.silentParkBrake) replace_event(EventName.parkBrake, EventNameSP.silentParkBrake)
transition_paused_state() transition_paused_state()
if self.steering_mode_on_brake == MadsSteeringModeOnBrake.PAUSE: if self.pause_lateral_on_brake_toggle:
if CS.brakePressed: if CS.brakePressed:
transition_paused_state() transition_paused_state()
if not (self.steering_mode_on_brake == MadsSteeringModeOnBrake.PAUSE and CS.brakePressed) and \ if not (self.pause_lateral_on_brake_toggle and CS.brakePressed) and \
not self.events_sp.contains_in_list(GEARS_ALLOW_PAUSED_SILENT): not self.events_sp.contains_in_list(GEARS_ALLOW_PAUSED_SILENT):
if self.state_machine.state == State.paused: if self.state_machine.state == State.paused:
self.events_sp.add(EventNameSP.silentLkasEnable) self.events_sp.add(EventNameSP.silentLkasEnable)
@@ -124,12 +123,6 @@ class ModularAssistiveDrivingSystem:
if self.selfdrive.CS_prev.cruiseState.available: if self.selfdrive.CS_prev.cruiseState.available:
self.events_sp.add(EventNameSP.lkasDisable) self.events_sp.add(EventNameSP.lkasDisable)
if self.steering_mode_on_brake == MadsSteeringModeOnBrake.DISENGAGE:
# Disable on rising edge of accelerator or brake. Also disable on brake when speed > 0
if (CS.brakePressed and (not self.selfdrive.CS_prev.brakePressed or not CS.standstill)) or \
(CS.regenBraking and (not self.selfdrive.CS_prev.regenBraking or not CS.standstill)):
self.events_sp.add(EventNameSP.lkasDisable)
self.events.remove(EventName.pcmDisable) self.events.remove(EventName.pcmDisable)
self.events.remove(EventName.buttonCancel) self.events.remove(EventName.buttonCancel)
self.events.remove(EventName.pedalPressed) self.events.remove(EventName.pedalPressed)
+1 -1
View File
@@ -48,7 +48,7 @@ def manager_init() -> None:
("DynamicExperimentalControl", "0"), ("DynamicExperimentalControl", "0"),
("Mads", "1"), ("Mads", "1"),
("MadsMainCruiseAllowed", "1"), ("MadsMainCruiseAllowed", "1"),
("MadsSteeringMode", "0"), ("MadsPauseLateralOnBrake", "0"),
("MadsUnifiedEngagementMode", "1"), ("MadsUnifiedEngagementMode", "1"),
("ModelManager_LastSyncTime", "0"), ("ModelManager_LastSyncTime", "0"),
("ModelManager_ModelsCache", ""), ("ModelManager_ModelsCache", ""),