Compare commits

...

11 Commits

Author SHA1 Message Date
Jason Wen 24f9e0c51a Revert "translations"
This reverts commit a65aad5911.
2025-03-19 13:06:38 -04:00
Jason Wen f32678b529 Revert "ci try this"
This reverts commit da975f61c3.
2025-03-19 12:50:00 -04:00
Jason Wen da975f61c3 ci try this 2025-03-19 12:23:55 -04:00
Jason Wen 5457da4024 make sure to initialize 2025-03-19 12:09:07 -04:00
Jason Wen a65aad5911 translations 2025-03-19 10:17:33 -04:00
Jason Wen 6b4821cbe2 Merge remote-tracking branch 'sunnypilot/sunnypilot/master-new' into mads-steering-mode-on-brake 2025-03-19 10:11:51 -04:00
Jason Wen aae0dfd12b bump opendbc 2025-03-19 08:53:10 -04:00
Jason Wen 53509ff6f4 Merge remote-tracking branch 'sunnypilot/sunnypilot/master-new' into mads-steering-mode-on-brake
# Conflicts:
#	sunnypilot/mads/helpers.py
#	sunnypilot/mads/mads.py
2025-03-19 01:18:04 -04:00
Jason Wen 90972fbf8c MADS: Steering Mode on Brake Pedal Press 2025-03-19 01:14:04 -04:00
Jason Wen b72cb5f9fb Merge branch 'mads-clean' into mads-steering-mode-on-brake 2025-03-19 00:29:58 -04:00
Jason Wen 01e23477d1 MADS: cleanup param assignments 2025-03-19 00:14:23 -04:00
8 changed files with 44 additions and 20 deletions
+1 -1
View File
@@ -132,7 +132,7 @@ inline static std::unordered_map<std::string, uint32_t> keys = {
// MADS params
{"Mads", PERSISTENT | BACKUP},
{"MadsMainCruiseAllowed", PERSISTENT | BACKUP},
{"MadsPauseLateralOnBrake", PERSISTENT | BACKUP},
{"MadsSteeringMode", PERSISTENT | BACKUP},
{"MadsUnifiedEngagementMode", PERSISTENT | BACKUP},
// Model Manager params
+2 -2
View File
@@ -41,7 +41,7 @@
#define CUTOFF_IL 400
#define SATURATE_IL 1000
#define ALT_EXP_DISENGAGE_LATERAL_ON_BRAKE 2048
#define ALT_EXP_MADS_DISENGAGE_LATERAL_ON_BRAKE 2048
ExitHandler do_exit;
@@ -57,7 +57,7 @@ bool check_all_connected(const std::vector<Panda *> &pandas) {
bool process_mads_heartbeat(SubMaster *sm) {
const int &alt_exp = (*sm)["carParams"].getCarParams().getAlternativeExperience();
const bool disengage_lateral_on_brake = (alt_exp & ALT_EXP_DISENGAGE_LATERAL_ON_BRAKE) != 0;
const bool disengage_lateral_on_brake = (alt_exp & ALT_EXP_MADS_DISENGAGE_LATERAL_ON_BRAKE) != 0;
const auto &mads = (*sm)["selfdriveStateSP"].getSelfdriveStateSP().getMads();
const bool heartbeat_type = disengage_lateral_on_brake ? mads.getActive() : mads.getEnabled();
@@ -39,17 +39,19 @@ MadsSettings::MadsSettings(QWidget *parent) : QWidget(parent) {
"");
list->addItem(madsUnifiedEngagementModeToggle);
// Pause Lateral On Brake
std::vector<QString> lateral_on_brake_texts{tr("Remain Active"), tr("Pause Steering")};
madsPauseLateralOnBrake = new ButtonParamControl(
"MadsPauseLateralOnBrake",
tr("Steering Mode After Braking"),
// Steering Mode On Brake
std::vector<QString> lateral_on_brake_texts{tr("Disengage"), tr("Remain Active"), tr("Pause Steering")};
madsSteeringMode = new ButtonParamControl(
"MadsSteeringMode",
tr("Steering Mode on Brake Pedal"),
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.\nPause Steering: ALC will be paused after the brake pedal is manually pressed."),
"Disengage: ALC will be disengaged after the brake pedal is pressed.\n"
"Remain Active: ALC will remain active even after the brake pedal is pressed.\n"
"Pause Steering: ALC will be paused when the brake pedal is manually pressed."),
"",
lateral_on_brake_texts,
500);
list->addItem(madsPauseLateralOnBrake);
list->addItem(madsSteeringMode);
QObject::connect(uiState(), &UIState::offroadTransition, this, &MadsSettings::updateToggles);
@@ -61,7 +63,7 @@ void MadsSettings::showEvent(QShowEvent *event) {
}
void MadsSettings::updateToggles(bool _offroad) {
madsPauseLateralOnBrake->setEnabled(_offroad);
madsSteeringMode->setEnabled(_offroad);
offroad = _offroad;
}
@@ -32,5 +32,5 @@ private:
ParamControl *madsMainCruiseToggle;
ParamControl *madsUnifiedEngagementModeToggle;
ButtonParamControl *madsPauseLateralOnBrake;
ButtonParamControl *madsSteeringMode;
};
+18 -3
View File
@@ -11,15 +11,30 @@ from opendbc.safety import ALTERNATIVE_EXPERIENCE
from opendbc.sunnypilot.car.hyundai.values import HyundaiFlagsSP, HyundaiSafetyFlagsSP
class MadsSteeringModeOnBrake:
DISENGAGE = 0
REMAIN_ACTIVE = 1
PAUSE = 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):
enabled = params.get_bool("Mads")
pause_lateral_on_brake = params.get_bool("MadsPauseLateralOnBrake")
steering_mode = read_steering_mode_param(params)
if enabled:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS
if pause_lateral_on_brake:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISENGAGE_LATERAL_ON_BRAKE
if steering_mode == MadsSteeringModeOnBrake.DISENGAGE:
CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_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):
+10 -3
View File
@@ -8,6 +8,7 @@ See the LICENSE.md file in the root directory for more details.
from cereal import car, log, custom
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
State = custom.ModularAssistiveDrivingSystem.ModularAssistiveDrivingSystemState
@@ -41,7 +42,7 @@ class ModularAssistiveDrivingSystem:
# read params on init
self.enabled_toggle = self.params.get_bool("Mads")
self.main_enabled_toggle = self.params.get_bool("MadsMainCruiseAllowed")
self.pause_lateral_on_brake_toggle = self.params.get_bool("MadsPauseLateralOnBrake")
self.steering_mode_on_brake = read_steering_mode_param(self.params)
self.unified_engagement_mode = self.params.get_bool("MadsUnifiedEngagementMode")
def read_params(self):
@@ -83,11 +84,11 @@ class ModularAssistiveDrivingSystem:
replace_event(EventName.parkBrake, EventNameSP.silentParkBrake)
transition_paused_state()
if self.pause_lateral_on_brake_toggle:
if self.steering_mode_on_brake == MadsSteeringModeOnBrake.PAUSE:
if CS.brakePressed:
transition_paused_state()
if not (self.pause_lateral_on_brake_toggle and CS.brakePressed) and \
if not (self.steering_mode_on_brake == MadsSteeringModeOnBrake.PAUSE and CS.brakePressed) and \
not self.events_sp.contains_in_list(GEARS_ALLOW_PAUSED_SILENT):
if self.state_machine.state == State.paused:
self.events_sp.add(EventNameSP.silentLkasEnable)
@@ -123,6 +124,12 @@ class ModularAssistiveDrivingSystem:
if self.selfdrive.CS_prev.cruiseState.available:
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.buttonCancel)
self.events.remove(EventName.pedalPressed)
+1 -1
View File
@@ -46,7 +46,7 @@ def manager_init() -> None:
("DynamicExperimentalControl", "0"),
("Mads", "1"),
("MadsMainCruiseAllowed", "1"),
("MadsPauseLateralOnBrake", "0"),
("MadsSteeringMode", "1"),
("MadsUnifiedEngagementMode", "1"),
("ModelManager_LastSyncTime", "0"),
("ModelManager_ModelsCache", "")