Set speed offset
Added toggle to apply an offset to the set speed. Co-Authored-By: Tim Wilson <7284371+twilsonco@users.noreply.github.com>
This commit is contained in:
@@ -356,6 +356,7 @@ std::unordered_map<std::string, uint32_t> keys = {
|
|||||||
{"ScreenTimeout", PERSISTENT},
|
{"ScreenTimeout", PERSISTENT},
|
||||||
{"ScreenTimeoutOnroad", PERSISTENT},
|
{"ScreenTimeoutOnroad", PERSISTENT},
|
||||||
{"SearchInput", PERSISTENT},
|
{"SearchInput", PERSISTENT},
|
||||||
|
{"SetSpeedOffset", PERSISTENT},
|
||||||
{"SilentMode", PERSISTENT},
|
{"SilentMode", PERSISTENT},
|
||||||
{"ShowCPU", PERSISTENT},
|
{"ShowCPU", PERSISTENT},
|
||||||
{"ShowGPU", PERSISTENT},
|
{"ShowGPU", PERSISTENT},
|
||||||
|
|||||||
@@ -1108,6 +1108,7 @@ class Controls:
|
|||||||
quality_of_life = self.params.get_bool("QOLControls")
|
quality_of_life = self.params.get_bool("QOLControls")
|
||||||
self.pause_lateral_on_signal = self.params.get_int("PauseLateralOnSignal") * (CV.KPH_TO_MS if self.is_metric else CV.MPH_TO_MS) if quality_of_life else 0
|
self.pause_lateral_on_signal = self.params.get_int("PauseLateralOnSignal") * (CV.KPH_TO_MS if self.is_metric else CV.MPH_TO_MS) if quality_of_life else 0
|
||||||
self.frogpilot_variables.reverse_cruise_increase = quality_of_life and self.params.get_bool("ReverseCruise")
|
self.frogpilot_variables.reverse_cruise_increase = quality_of_life and self.params.get_bool("ReverseCruise")
|
||||||
|
self.frogpilot_variables.set_speed_offset = self.params.get_int("SetSpeedOffset") * (1 if self.is_metric else CV.MPH_TO_KPH) if quality_of_life else 0
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
controls = Controls()
|
controls = Controls()
|
||||||
|
|||||||
@@ -114,6 +114,12 @@ class VCruiseHelper:
|
|||||||
else:
|
else:
|
||||||
self.v_cruise_kph += v_cruise_delta * CRUISE_INTERVAL_SIGN[button_type]
|
self.v_cruise_kph += v_cruise_delta * CRUISE_INTERVAL_SIGN[button_type]
|
||||||
|
|
||||||
|
# Apply offset
|
||||||
|
v_cruise_offset = (frogpilot_variables.set_speed_offset * CRUISE_INTERVAL_SIGN[button_type]) if long_press else 0
|
||||||
|
if v_cruise_offset < 0:
|
||||||
|
v_cruise_offset = frogpilot_variables.set_speed_offset - v_cruise_delta
|
||||||
|
self.v_cruise_kph += v_cruise_offset
|
||||||
|
|
||||||
# If set is pressed while overriding, clip cruise speed to minimum of vEgo
|
# If set is pressed while overriding, clip cruise speed to minimum of vEgo
|
||||||
if CS.gasPressed and button_type in (ButtonType.decelCruise, ButtonType.setCruise):
|
if CS.gasPressed and button_type in (ButtonType.decelCruise, ButtonType.setCruise):
|
||||||
self.v_cruise_kph = max(self.v_cruise_kph, CS.vEgo * CV.MS_TO_KPH)
|
self.v_cruise_kph = max(self.v_cruise_kph, CS.vEgo * CV.MS_TO_KPH)
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil
|
|||||||
{"NavChill", "Navigate on Chill Mode", "Allows cars without longitudinal support to navigate. Allows navigation without experimental mode.", ""},
|
{"NavChill", "Navigate on Chill Mode", "Allows cars without longitudinal support to navigate. Allows navigation without experimental mode.", ""},
|
||||||
{"PauseLateralOnSignal", "Pause Lateral On Turn Signal Below", "Temporarily disable lateral control during turn signal use below the set speed.", ""},
|
{"PauseLateralOnSignal", "Pause Lateral On Turn Signal Below", "Temporarily disable lateral control during turn signal use below the set speed.", ""},
|
||||||
{"ReverseCruise", "Reverse Cruise Increase", "Reverses the 'long press' functionality when increasing the max set speed. Useful to increase the max speed quickly.", ""},
|
{"ReverseCruise", "Reverse Cruise Increase", "Reverses the 'long press' functionality when increasing the max set speed. Useful to increase the max speed quickly.", ""},
|
||||||
|
{"SetSpeedOffset", "Set Speed Offset", "Set an offset for your desired set speed.", ""},
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const auto &[param, title, desc, icon] : controlToggles) {
|
for (const auto &[param, title, desc, icon] : controlToggles) {
|
||||||
@@ -284,6 +285,8 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil
|
|||||||
std::vector<QString> reverseCruiseToggles{"ReverseCruiseUI"};
|
std::vector<QString> reverseCruiseToggles{"ReverseCruiseUI"};
|
||||||
std::vector<QString> reverseCruiseNames{tr("Control Via UI")};
|
std::vector<QString> reverseCruiseNames{tr("Control Via UI")};
|
||||||
toggle = new FrogPilotParamToggleControl(param, title, desc, icon, reverseCruiseToggles, reverseCruiseNames);
|
toggle = new FrogPilotParamToggleControl(param, title, desc, icon, reverseCruiseToggles, reverseCruiseNames);
|
||||||
|
} else if (param == "SetSpeedOffset") {
|
||||||
|
toggle = new FrogPilotParamValueControl(param, title, desc, icon, 0, 99, std::map<int, QString>(), this, false, " mph");
|
||||||
|
|
||||||
} else if (param == "NudgelessLaneChange") {
|
} else if (param == "NudgelessLaneChange") {
|
||||||
FrogPilotParamManageControl *laneChangeToggle = new FrogPilotParamManageControl(param, title, desc, icon, this);
|
FrogPilotParamManageControl *laneChangeToggle = new FrogPilotParamManageControl(param, title, desc, icon, this);
|
||||||
@@ -396,12 +399,14 @@ void FrogPilotControlsPanel::updateMetric() {
|
|||||||
params.putIntNonBlocking("LaneDetectionWidth", std::nearbyint(params.getInt("LaneDetectionWidth") * distanceConversion));
|
params.putIntNonBlocking("LaneDetectionWidth", std::nearbyint(params.getInt("LaneDetectionWidth") * distanceConversion));
|
||||||
params.putIntNonBlocking("MTSCLimit", std::nearbyint(params.getInt("MTSCLimit") * speedConversion));
|
params.putIntNonBlocking("MTSCLimit", std::nearbyint(params.getInt("MTSCLimit") * speedConversion));
|
||||||
params.putIntNonBlocking("PauseLateralOnSignal", std::nearbyint(params.getInt("PauseLateralOnSignal") * speedConversion));
|
params.putIntNonBlocking("PauseLateralOnSignal", std::nearbyint(params.getInt("PauseLateralOnSignal") * speedConversion));
|
||||||
|
params.putIntNonBlocking("SetSpeedOffset", std::nearbyint(params.getInt("SetSpeedOffset") * speedConversion));
|
||||||
params.putIntNonBlocking("StoppingDistance", std::nearbyint(params.getInt("StoppingDistance") * distanceConversion));
|
params.putIntNonBlocking("StoppingDistance", std::nearbyint(params.getInt("StoppingDistance") * distanceConversion));
|
||||||
}
|
}
|
||||||
|
|
||||||
FrogPilotParamValueControl *laneWidthToggle = static_cast<FrogPilotParamValueControl*>(toggles["LaneDetectionWidth"]);
|
FrogPilotParamValueControl *laneWidthToggle = static_cast<FrogPilotParamValueControl*>(toggles["LaneDetectionWidth"]);
|
||||||
FrogPilotParamValueControl *mtscLimitToggle = static_cast<FrogPilotParamValueControl*>(toggles["MTSCLimit"]);
|
FrogPilotParamValueControl *mtscLimitToggle = static_cast<FrogPilotParamValueControl*>(toggles["MTSCLimit"]);
|
||||||
FrogPilotParamValueControl *pauseLateralToggle = static_cast<FrogPilotParamValueControl*>(toggles["PauseLateralOnSignal"]);
|
FrogPilotParamValueControl *pauseLateralToggle = static_cast<FrogPilotParamValueControl*>(toggles["PauseLateralOnSignal"]);
|
||||||
|
FrogPilotParamValueControl *setSpeedOffsetToggle = static_cast<FrogPilotParamValueControl*>(toggles["SetSpeedOffset"]);
|
||||||
FrogPilotParamValueControl *stoppingDistanceToggle = static_cast<FrogPilotParamValueControl*>(toggles["StoppingDistance"]);
|
FrogPilotParamValueControl *stoppingDistanceToggle = static_cast<FrogPilotParamValueControl*>(toggles["StoppingDistance"]);
|
||||||
|
|
||||||
if (isMetric) {
|
if (isMetric) {
|
||||||
@@ -409,6 +414,7 @@ void FrogPilotControlsPanel::updateMetric() {
|
|||||||
|
|
||||||
mtscLimitToggle->updateControl(0, 99, " kph");
|
mtscLimitToggle->updateControl(0, 99, " kph");
|
||||||
pauseLateralToggle->updateControl(0, 150, " kph");
|
pauseLateralToggle->updateControl(0, 150, " kph");
|
||||||
|
setSpeedOffsetToggle->updateControl(0, 150, " kph");
|
||||||
|
|
||||||
stoppingDistanceToggle->updateControl(0, 5, " meters");
|
stoppingDistanceToggle->updateControl(0, 5, " meters");
|
||||||
} else {
|
} else {
|
||||||
@@ -416,6 +422,7 @@ void FrogPilotControlsPanel::updateMetric() {
|
|||||||
|
|
||||||
mtscLimitToggle->updateControl(0, 99, " mph");
|
mtscLimitToggle->updateControl(0, 99, " mph");
|
||||||
pauseLateralToggle->updateControl(0, 99, " mph");
|
pauseLateralToggle->updateControl(0, 99, " mph");
|
||||||
|
setSpeedOffsetToggle->updateControl(0, 99, " mph");
|
||||||
|
|
||||||
stoppingDistanceToggle->updateControl(0, 10, " feet");
|
stoppingDistanceToggle->updateControl(0, 10, " feet");
|
||||||
}
|
}
|
||||||
@@ -423,6 +430,7 @@ void FrogPilotControlsPanel::updateMetric() {
|
|||||||
laneWidthToggle->refresh();
|
laneWidthToggle->refresh();
|
||||||
mtscLimitToggle->refresh();
|
mtscLimitToggle->refresh();
|
||||||
pauseLateralToggle->refresh();
|
pauseLateralToggle->refresh();
|
||||||
|
setSpeedOffsetToggle->refresh();
|
||||||
stoppingDistanceToggle->refresh();
|
stoppingDistanceToggle->refresh();
|
||||||
|
|
||||||
previousIsMetric = isMetric;
|
previousIsMetric = isMetric;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ private:
|
|||||||
std::set<QString> lateralTuneKeys = {"ForceAutoTune", "NNFF"};
|
std::set<QString> lateralTuneKeys = {"ForceAutoTune", "NNFF"};
|
||||||
std::set<QString> longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "AggressiveAcceleration", "StoppingDistance"};
|
std::set<QString> longitudinalTuneKeys = {"AccelerationProfile", "DecelerationProfile", "AggressiveAcceleration", "StoppingDistance"};
|
||||||
std::set<QString> mtscKeys = {"DisableMTSCSmoothing", "MTSCAggressiveness", "MTSCCurvatureCheck", "MTSCLimit"};
|
std::set<QString> mtscKeys = {"DisableMTSCSmoothing", "MTSCAggressiveness", "MTSCCurvatureCheck", "MTSCLimit"};
|
||||||
std::set<QString> qolKeys = {"DisableOnroadUploads", "HigherBitrate", "NavChill", "PauseLateralOnSignal", "ReverseCruise"};
|
std::set<QString> qolKeys = {"DisableOnroadUploads", "HigherBitrate", "NavChill", "PauseLateralOnSignal", "ReverseCruise", "SetSpeedOffset"};
|
||||||
std::set<QString> speedLimitControllerKeys = {};
|
std::set<QString> speedLimitControllerKeys = {};
|
||||||
std::set<QString> speedLimitControllerControlsKeys = {};
|
std::set<QString> speedLimitControllerControlsKeys = {};
|
||||||
std::set<QString> speedLimitControllerQOLKeys = {};
|
std::set<QString> speedLimitControllerQOLKeys = {};
|
||||||
|
|||||||
Reference in New Issue
Block a user