Tesla: Coop Steering (#1283)
* Tesla: Coop Steering * bump * bump * sync with opendbc/master * resolve comment * add oscillation warning and add confirmation * styling desc * beta --------- Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
This commit is contained in:
@@ -208,6 +208,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
|
|||||||
{"HyundaiLongitudinalTuning", {PERSISTENT | BACKUP, INT, "0"}},
|
{"HyundaiLongitudinalTuning", {PERSISTENT | BACKUP, INT, "0"}},
|
||||||
{"SubaruStopAndGo", {PERSISTENT | BACKUP, BOOL, "0"}},
|
{"SubaruStopAndGo", {PERSISTENT | BACKUP, BOOL, "0"}},
|
||||||
{"SubaruStopAndGoManualParkingBrake", {PERSISTENT | BACKUP, BOOL, "0"}},
|
{"SubaruStopAndGoManualParkingBrake", {PERSISTENT | BACKUP, BOOL, "0"}},
|
||||||
|
{"TeslaCoopSteering", {PERSISTENT | BACKUP, BOOL, "0"}},
|
||||||
|
|
||||||
{"DynamicExperimentalControl", {PERSISTENT | BACKUP, BOOL, "0"}},
|
{"DynamicExperimentalControl", {PERSISTENT | BACKUP, BOOL, "0"}},
|
||||||
{"BlindSpot", {PERSISTENT | BACKUP, BOOL, "0"}},
|
{"BlindSpot", {PERSISTENT | BACKUP, BOOL, "0"}},
|
||||||
|
|||||||
Submodule opendbc_repo updated: e0e1626820...c7126f8ba6
@@ -8,7 +8,41 @@
|
|||||||
#include "selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle/tesla_settings.h"
|
#include "selfdrive/ui/sunnypilot/qt/offroad/settings/vehicle/tesla_settings.h"
|
||||||
|
|
||||||
TeslaSettings::TeslaSettings(QWidget *parent) : BrandSettingsInterface(parent) {
|
TeslaSettings::TeslaSettings(QWidget *parent) : BrandSettingsInterface(parent) {
|
||||||
|
constexpr int coopSteeringMinKmh = 23; // minimum speed for cooperative steering (enforced by Tesla firmware)
|
||||||
|
constexpr int oemSteeringMinKmh = 48; // minimum speed for OEM lane departure avoidance (enforced by Tesla firmware)
|
||||||
|
bool is_metric = params.getBool("IsMetric");
|
||||||
|
QString unit = is_metric ? "km/h" : "mph";
|
||||||
|
int display_value_coop;
|
||||||
|
int display_value_oem;
|
||||||
|
if (is_metric) {
|
||||||
|
display_value_coop = coopSteeringMinKmh;
|
||||||
|
display_value_oem = oemSteeringMinKmh;
|
||||||
|
} else {
|
||||||
|
display_value_coop = static_cast<int>(std::round(coopSteeringMinKmh * KM_TO_MILE));
|
||||||
|
display_value_oem = static_cast<int>(std::round(oemSteeringMinKmh * KM_TO_MILE));
|
||||||
|
}
|
||||||
|
const QString coop_desc = QString("<b>%1</b><br><br>"
|
||||||
|
"%2<br>"
|
||||||
|
"%3<br>")
|
||||||
|
.arg(tr("Warning: May experience steering oscillations below %5 %6 during turns, recommend disabling this feature if you experience these."))
|
||||||
|
.arg(tr("Allows the driver to provide limited steering input while openpilot is engaged."))
|
||||||
|
.arg(tr("Only works above %4 %6."))
|
||||||
|
.arg(display_value_coop)
|
||||||
|
.arg(display_value_oem)
|
||||||
|
.arg(unit);
|
||||||
|
|
||||||
|
coopSteeringToggle = new ParamControlSP(
|
||||||
|
"TeslaCoopSteering",
|
||||||
|
tr("Cooperative Steering (Beta)"),
|
||||||
|
coop_desc,
|
||||||
|
"",
|
||||||
|
this
|
||||||
|
);
|
||||||
|
list->addItem(coopSteeringToggle);
|
||||||
|
coopSteeringToggle->showDescription();
|
||||||
|
coopSteeringToggle->setConfirmation(true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TeslaSettings::updateSettings() {
|
void TeslaSettings::updateSettings() {
|
||||||
|
coopSteeringToggle->setEnabled(offroad);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ public:
|
|||||||
void updateSettings() override;
|
void updateSettings() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool offroad = false;
|
ParamControlSP *coopSteeringToggle = nullptr;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -115,4 +115,9 @@ def initialize_params(params) -> list[dict[str, Any]]:
|
|||||||
"SubaruStopAndGoManualParkingBrake",
|
"SubaruStopAndGoManualParkingBrake",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# tesla
|
||||||
|
keys.extend([
|
||||||
|
"TeslaCoopSteering",
|
||||||
|
])
|
||||||
|
|
||||||
return [{k: params.get(k, return_default=True)} for k in keys]
|
return [{k: params.get(k, return_default=True)} for k in keys]
|
||||||
|
|||||||
Reference in New Issue
Block a user