diff --git a/selfdrive/assets/offroad/icon_acc_change.png b/selfdrive/assets/offroad/icon_acc_change.png new file mode 100644 index 0000000000..e1e80cd172 Binary files /dev/null and b/selfdrive/assets/offroad/icon_acc_change.png differ diff --git a/selfdrive/assets/offroad/icon_blank.png b/selfdrive/assets/offroad/icon_blank.png new file mode 100644 index 0000000000..a1d2ae57e3 Binary files /dev/null and b/selfdrive/assets/offroad/icon_blank.png differ diff --git a/selfdrive/assets/offroad/icon_dynamic_gac.png b/selfdrive/assets/offroad/icon_dynamic_gac.png new file mode 100644 index 0000000000..973715dad1 Binary files /dev/null and b/selfdrive/assets/offroad/icon_dynamic_gac.png differ diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index 0f28f5ccc3..5fd0936a44 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -24,7 +24,8 @@ widgets_src = ["ui.cc", "qt/widgets/input.cc", "qt/widgets/drive_stats.cc", "qt/widgets/ssh_keys.cc", "qt/widgets/toggle.cc", "qt/widgets/controls.cc", "qt/widgets/offroad_alerts.cc", "qt/widgets/prime.cc", "qt/widgets/keyboard.cc", "qt/widgets/scrollview.cc", "qt/widgets/cameraview.cc", "#third_party/qrcode/QrCode.cc", - "qt/request_repeater.cc", "qt/qt_window.cc", "qt/offroad/networking.cc", "qt/offroad/wifiManager.cc"] + "qt/request_repeater.cc", "qt/qt_window.cc", "qt/offroad/networking.cc", "qt/offroad/wifiManager.cc", + "qt/offroad/sunnypilot_settings.cc"] qt_env['CPPDEFINES'] = [] if maps: diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 63b87149d4..a6d11b0267 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -16,6 +16,7 @@ #include "common/watchdog.h" #include "common/util.h" #include "system/hardware/hw.h" +#include "selfdrive/ui/qt/offroad/sunnypilot_settings.h" #include "selfdrive/ui/qt/widgets/controls.h" #include "selfdrive/ui/qt/widgets/input.h" #include "selfdrive/ui/qt/widgets/scrollview.h" @@ -31,8 +32,8 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { std::vector> toggle_defs{ { "OpenpilotEnabledToggle", - tr("Enable openpilot"), - tr("Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off."), + tr("Enable sunnypilot"), + tr("Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off."), "../assets/offroad/icon_openpilot.png", }, { @@ -70,7 +71,7 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { { "DisengageOnAccelerator", tr("Disengage on Accelerator Pedal"), - tr("When enabled, pressing the accelerator pedal will disengage openpilot."), + tr("When enabled, pressing the accelerator pedal will disengage sunnypilot."), "../assets/offroad/icon_disengage_on_accelerator.svg", }, #ifdef ENABLE_MAPS @@ -198,7 +199,7 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { addItem(resetCalibBtn); if (!params.getBool("Passive")) { - auto retrainingBtn = new ButtonControl(tr("Review Training Guide"), tr("REVIEW"), tr("Review the rules, features, and limitations of openpilot")); + auto retrainingBtn = new ButtonControl(tr("Review Training Guide"), tr("REVIEW"), tr("Review the rules, features, and limitations of sunnypilot")); connect(retrainingBtn, &ButtonControl::clicked, [=]() { if (ConfirmationDialog::confirm(tr("Are you sure you want to review the training guide?"), tr("Review"), this)) { emit reviewTrainingGuide(); @@ -264,8 +265,8 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { void DevicePanel::updateCalibDescription() { QString desc = - tr("openpilot requires the device to be mounted within 4° left or right and " - "within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required."); + tr("sunnypilot requires the device to be mounted within 4° left or right and " + "within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required."); std::string calib_bytes = Params().get("CalibrationParams"); if (!calib_bytes.empty()) { try { @@ -378,7 +379,12 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { QObject::connect(map_panel, &MapPanel::closeSettings, this, &SettingsWindow::closeSettings); #endif - const int padding = panels.size() > 3 ? 25 : 35; + panels.push_back({tr("SP - General"), new SPGeneralPanel(this)}); + panels.push_back({tr("SP - Controls"), new SPControlsPanel(this)}); + panels.push_back({tr("SP - Vehicles"), new SPVehiclesPanel(this)}); + panels.push_back({tr("SP - Visuals"), new SPVisualsPanel(this)}); + + const int padding = panels.size() > 3 ? 5 : 35; nav_btns = new QButtonGroup(this); for (auto &[name, panel] : panels) { @@ -390,7 +396,7 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { color: grey; border: none; background: none; - font-size: 65px; + font-size: 50px; font-weight: 500; padding-top: %1px; padding-bottom: %1px; diff --git a/selfdrive/ui/qt/offroad/sunnypilot_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot_settings.cc new file mode 100644 index 0000000000..19cc3f0793 --- /dev/null +++ b/selfdrive/ui/qt/offroad/sunnypilot_settings.cc @@ -0,0 +1,1670 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "common/watchdog.h" +#include "selfdrive/ui/qt/api.h" +#include "selfdrive/ui/qt/offroad/sunnypilot_settings.h" +#include "selfdrive/ui/qt/widgets/input.h" +#include "selfdrive/ui/qt/widgets/scrollview.h" +#include "selfdrive/ui/qt/util.h" + +#include "selfdrive/ui/ui.h" + +SPGeneralPanel::SPGeneralPanel(QWidget *parent) : QWidget(parent) { + main_layout = new QVBoxLayout(this); + + // General: Quiet Drive + main_layout->addWidget(new ParamControl( + "QuietDrive", + tr("Quiet Drive 🤫"), + tr("sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on."), + "../assets/offroad/icon_mute.png" + )); + + // General: Green Traffic Light Chime + endToEndLongAlert = new ParamControl( + "EndToEndLongAlert", + tr("Green Traffic Light Chime (Beta)"), + QString("%1
" + "

%2


") + .arg(tr("A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged.")) + .arg(tr("Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly.")), + "../assets/offroad/icon_road.png" + ); + endToEndLongAlert->setConfirmation(true, false); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(endToEndLongAlert); + + // General: Custom Boot Screen + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "CustomBootScreen", + tr("Custom Boot Screen"), + tr("Display sunnypilot welcome screen while booting the device."), + "../assets/offroad/icon_shell.png" + )); + + // General: Max Time Offroad (Shutdown timer) + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new MaxTimeOffroad()); + + // General: Onroad Screen Off (Auto Onroad Screen Timer) + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new OnroadScreenOff()); + + // General: Onroad Screen Off Brightness + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new OnroadScreenOffBrightness()); + + // General: Brightness Control (Global) + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new BrightnessControl()); + + // General: Disable Onroad Uploads + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "DisableOnroadUploads", + tr("Disable Onroad Uploads"), + tr("Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC)."), + "../assets/offroad/icon_network.png" + )); + + // General: Error Troubleshoot + auto errorBtn = new ButtonControl( + tr("Error Troubleshoot"), + tr("VIEW"), + tr("Display error from the tmux session when an error has occurred from a system process.") + ); + QFileInfo file("/data/community/crashes/error.txt"); + QDateTime modifiedTime = file.lastModified(); + QString modified_time = modifiedTime.toString("yyyy-MM-dd hh:mm:ss "); + connect(errorBtn, &ButtonControl::clicked, [=]() { + const std::string txt = util::read_file("/data/community/crashes/error.txt"); + ConfirmationDialog::rich(modified_time + QString::fromStdString(txt), this); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(errorBtn); + + // General: Debug snapshot on screen center tap + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "EnableDebugSnapshot", + tr("Debug snapshot on screen center tap"), + tr("Stores snapshot file with current state of some modules."), + "../assets/offroad/icon_calibration.png" + )); +} + +SPControlsPanel::SPControlsPanel(QWidget *parent) : QWidget(parent) { + main_layout = new QVBoxLayout(this); + + // M.A.D.S. + madsMainControl = new QWidget(); + madsSubControl = new QVBoxLayout(madsMainControl); + // Controls: Enable M.A.D.S. + madsControl = new ParamControl( + "EnableMads", + tr("Enable M.A.D.S."), + tr("Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement."), + "../assets/offroad/icon_openpilot.png" + ); + madsControl->setConfirmation(true, false); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + madsControl->setEnabled(offroad); + }); + madsSubControl->setContentsMargins(QMargins()); + madsSubControl->addWidget(horizontal_line()); + + // Controls: Disengage ALC On Brake Pedal + disengageLateralOnBrake = new ParamControl( + "DisengageLateralOnBrake", + tr("Disengage ALC On Brake Pedal ℹ"), + QString("%1
" + "

%2


" + "

%3


") + .arg(tr("Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled.")) + .arg(tr("Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot.")) + .arg(tr("Disabled: Pressing the brake pedal will NOT disengage Automatic Lane Centering (ALC) on sunnypilot.")), + "../assets/offroad/icon_openpilot.png" + ); + disengageLateralOnBrake->setConfirmation(true, false); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + disengageLateralOnBrake->setEnabled(offroad); + }); + madsSubControl->addWidget(disengageLateralOnBrake); + madsSubControl->addWidget(horizontal_line()); + + // Controls: Enable ACC+MADS with RES+/SET- + accMadsCombo = new ParamControl( + "AccMadsCombo", + tr("Enable ACC+MADS with RES+/SET-"), + QString("%1
" + "

%2


") + .arg(tr("Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button.")) + .arg(tr("Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off.")), + "../assets/offroad/icon_openpilot.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + accMadsCombo->setEnabled(offroad); + }); + madsSubControl->addWidget(accMadsCombo); + connect(madsControl, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(madsControl); + main_layout->addWidget(madsMainControl); + + + // Controls: Pause Lateral Below Speed w/ Blinker + belowSpeed = new ParamControl( + "BelowSpeedPause", + tr("Pause Lateral Below Speed w/ Blinker"), + tr("Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H."), + "../assets/offroad/icon_openpilot.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + belowSpeed->setEnabled(offroad); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(belowSpeed); + + // D.L.P. + dlpMain = new QWidget(); + dlpSub = new QVBoxLayout(dlpMain); + // Controls: Enable Dynamic Lane Profile + dlpControl = new ParamControl( + "DynamicLaneProfileToggle", + tr("Enable Dynamic Lane Profile"), + tr("Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only."), + "../assets/offroad/icon_road.png" + ); + + // Controls: Laneless for Curves in Auto lane + dlpCurve = new ParamControl( + "VisionCurveLaneless", + tr("Laneless for Curves in \"Auto lane\""), + tr("While in Auto Lane, switch to Laneless for current/future curves."), + "../assets/offroad/icon_blank.png" + ); + dlpSub->addWidget(horizontal_line()); + dlpSub->addWidget(dlpCurve); + connect(dlpControl, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(dlpControl); + main_layout->addWidget(dlpMain); + + + // Custom Offsets + customOffsetsMain = new QWidget(); + customOffsetsSub = new QVBoxLayout(customOffsetsMain); + // Controls: Custom Offsets + customOffsets = new ParamControl( + "CustomOffsets", + tr("Custom Offsets"), + tr("Add custom offsets to Camera and Path in sunnypilot."), + "../assets/offroad/icon_metric.png" + ); + customOffsetsSub->setContentsMargins(QMargins()); + + // Controls: Camera Offset (cm) + customOffsetsSub->addWidget(horizontal_line()); + customOffsetsSub->addWidget(new CameraOffset()); + + // Controls: Path Offset (cm) + customOffsetsSub->addWidget(horizontal_line()); + customOffsetsSub->addWidget(new PathOffset()); + connect(customOffsets, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(customOffsets); + main_layout->addWidget(customOffsetsMain); + + // Controls: Auto Lane Change Timer + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new AutoLaneChangeTimer()); + + // G.A.C. + gacMain = new QWidget(); + gacSub = new QVBoxLayout(gacMain); + // Controls: Enable Gap Adjust Cruise + gapAdjustCruise = new ParamControl( + "GapAdjustCruise", + tr("Enable Gap Adjust Cruise ℹ"), + QString("%1
" + "

%2

") + .arg(tr("Enable the Interval button on the steering wheel to adjust the cruise gap.")) + .arg(tr("Only available to cars with openpilot Longitudinal Control")), + "../assets/offroad/icon_dynamic_gac.png" + ); + gapAdjustCruise->setConfirmation(true, false); + gacSub->setContentsMargins(QMargins()); + + // Controls: Mode + gacSub->addWidget(horizontal_line()); + gacSub->addWidget(new GapAdjustCruiseMode()); + connect(gapAdjustCruise, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(gapAdjustCruise); + main_layout->addWidget(gacMain); + + // Torque Lateral Control + torqueMain = new QWidget(); + torqueSub = new QVBoxLayout(torqueMain); + customTorqueMain = new QWidget(); + customTorqueSub = new QVBoxLayout(customTorqueMain); + // Controls: Enforce Torque Lateral Control + torqueLateral = new ParamControl( + "EnforceTorqueLateral", + tr("Enforce Torque Lateral Control"), + tr("Enable this to enforce sunnypilot to steer with Torque lateral control."), + "../assets/offroad/icon_calibration.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + torqueLateral->setEnabled(offroad); + }); + // Torque Lateral Control Live Tune + customTorqueLateral = new ParamControl( + "CustomTorqueLateral", + tr("Torque Lateral Control Live Tune"), + tr("Enables live tune for Torque lateral control."), + "../assets/offroad/icon_calibration.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + customTorqueLateral->setEnabled(offroad); + }); + customTorqueSub->setContentsMargins(QMargins()); + // Control: FRICTION + customTorqueSub->addWidget(horizontal_line()); + customTorqueSub->addWidget(new TorqueFriction()); + // Controls: LAT_ACCEL_FACTOR + customTorqueSub->addWidget(horizontal_line()); + customTorqueSub->addWidget(new TorqueMaxLatAccel()); + connect(customTorqueLateral, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + ConfirmationDialog::alert(tr("\"Torque Lateral Control Live Tune\"
You must restart your car or your device to apply these changes."), this); + }); + torqueSub->addWidget(horizontal_line()); + torqueSub->addWidget(customTorqueLateral); + torqueSub->addWidget(customTorqueMain); + // Controls: Torque Lateral Controller Self-Tune + liveTorque = new ParamControl( + "LiveTorque", + tr("Torque Lateral Controller Self-Tune"), + tr("Enables self-tune for Torque lateral control."), + "../assets/offroad/icon_calibration.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + liveTorque->setEnabled(offroad); + }); + connect(liveTorque, &ToggleControl::toggleFlipped, [=]() { + updateToggles(); + ConfirmationDialog::alert(tr("\"Torque Lateral Controller Self-Tune\"
You must restart your car or your device to apply these changes."), this); + }); + torqueSub->addWidget(horizontal_line()); + torqueSub->addWidget(liveTorque); + connect(torqueLateral, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(torqueLateral); + main_layout->addWidget(torqueMain); + + + // Controls: Enable Hands on Wheel Monitoring + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "HandsOnWheelMonitoring", + tr("Enable Hands on Wheel Monitoring"), + tr("Monitor and alert when driver is not keeping the hands on the steering wheel."), + "../assets/offroad/icon_openpilot.png" + )); + + // Controls: Enable Vision Based Turn Speed Control (V-TSC) + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "TurnVisionControl", + tr("Enable Vision Based Turn Speed Control (V-TSC)"), + tr("Use vision path predictions to estimate the appropriate speed to drive through turns ahead."), + "../assets/offroad/icon_road.png")); + + // S.L.C. + speedLimitMain = new QWidget(); + speedLimitSub = new QVBoxLayout(speedLimitMain); + speedOffsetMain = new QWidget(); + speedOffsetSub = new QVBoxLayout(speedOffsetMain); + // Controls: Enable Speed Limit Control (SLC) + main_layout->addWidget(horizontal_line()); + speedLimitControl = new ParamControl( + "SpeedLimitControl", + tr("Enable Speed Limit Control (SLC)"), + tr("Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits."), + "../assets/offroad/icon_speed_limit.png" + ); + speedLimitSub->setContentsMargins(QMargins()); + + // Controls: MUTCD: US/Canada\nVienna: Europe/Asia/etc. + speedLimitSub->addWidget(horizontal_line()); + speedLimitSub->addWidget(new SpeedLimitStyle()); + + // Controls: Enable Speed Limit % Offset + speedLimitSub->addWidget(horizontal_line()); + speedPercControl = new ParamControl( + "SpeedLimitPercOffset", + tr("Enable Speed Limit % Offset"), + tr("Set speed limit slightly higher than actual speed limit for a more natural drive."), + "../assets/offroad/icon_speed_limit.png" + ); + speedOffsetSub->setContentsMargins(QMargins()); + + // Controls: Speed Limit Offset (MPH / KM/H) + speedOffsetSub->addWidget(horizontal_line()); + speedOffsetSub->addWidget(new SpeedLimitValueOffset()); + connect(speedPercControl, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + + speedLimitSub->addWidget(speedPercControl); + speedLimitSub->addWidget(speedOffsetMain); + + connect(speedLimitControl, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + + main_layout->addWidget(speedLimitControl); + main_layout->addWidget(speedLimitMain); + + + // Controls: Enable Map Data Turn Speed Control (M-TSC) + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "TurnSpeedControl", + tr("Enable Map Data Turn Speed Control (M-TSC)"), + tr("Use curvature information from map data to define speed limits to take turns ahead."), + "../assets/offroad/icon_openpilot.png" + )); + + // Controls: ACC +/-: Long Press Reverse + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "ReverseAccChange", + tr("ACC +/-: Long Press Reverse"), + QString("%1
" + "

%2


" + "

%3


") + .arg(tr("Change the ACC +/- buttons behavior with cruise speed change in sunnypilot.")) + .arg(tr("Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric)")) + .arg(tr("Enabled: Short = 5 (imperial) / 10 (metric), Long=1")), + "../assets/offroad/icon_acc_change.png" + )); + + // Controls: OSM: Use Offline Database + osmLocalDb = new ParamControl( + "OsmLocalDb", + tr("OSM: Use Offline Database"), + "", + "../assets/img_map.png" + ); + connect(osmLocalDb, &ToggleControl::toggleFlipped, [=](bool state) { + if (!state) params.remove("OsmLocalDb"); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(osmLocalDb); +} + +void SPControlsPanel::showEvent(QShowEvent *event) { + updateToggles(); +} + +void SPControlsPanel::updateToggles() { + madsMainControl->setVisible(params.getBool("EnableMads")); + madsMainControl->update(); + + dlpMain->setVisible(params.getBool("DynamicLaneProfileToggle")); + dlpMain->update(); + + customOffsetsMain->setVisible(params.getBool("CustomOffsets")); + customOffsetsMain->update(); + + gacMain->setVisible(params.getBool("GapAdjustCruise")); + gacMain->update(); + + customTorqueMain->setVisible(params.getBool("CustomTorqueLateral")); + customTorqueMain->update(); + torqueMain->setVisible(params.getBool("EnforceTorqueLateral")); + torqueMain->update(); + if (params.getBool("EnforceTorqueLateral")) { + if (params.getBool("CustomTorqueLateral")) { + liveTorque->setEnabled(false); + params.putBool("LiveTorque", false); + } else { + liveTorque->setEnabled(true); + } + + if (params.getBool("LiveTorque")) { + customTorqueLateral->setEnabled(false); + params.putBool("CustomTorqueLateral", false); + customTorqueMain->setVisible(false); + } else { + customTorqueLateral->setEnabled(true); + } + + liveTorque->refresh(); + customTorqueLateral->refresh(); + } else { + params.putBool("LiveTorque", false); + params.putBool("CustomTorqueLateral", false); + customTorqueMain->setVisible(false); + } + + speedOffsetMain->setVisible(!params.getBool("SpeedLimitPercOffset")); + speedOffsetMain->update(); + speedLimitMain->setVisible(params.getBool("SpeedLimitControl")); + speedLimitMain->update(); +} + +SPVehiclesPanel::SPVehiclesPanel(QWidget *parent) : QWidget(parent) { + main_layout = new QStackedLayout(this); + home = new QWidget(this); + QVBoxLayout* fcr_layout = new QVBoxLayout(home); + fcr_layout->setContentsMargins(0, 20, 0, 20); + + QString set = QString::fromStdString(params.get("CarModelText")); + QPushButton* setCarBtn = new QPushButton(((set == "=== Not Selected ===") || (set.length() == 0)) ? "Select your car" : set); + setCarBtn->setObjectName("setCarBtn"); + setCarBtn->setStyleSheet("margin-right: 30px;"); + connect(setCarBtn, &QPushButton::clicked, [=]() { + QMap cars = getCarNames(); + QString currentCar = QString::fromStdString(params.get("CarModel")); + QString selection = MultiOptionDialog::getSelection("Select your car", cars.keys(), cars.key(currentCar), this); + if (!selection.isEmpty()) { + params.put("CarModel", cars[selection].toStdString()); + params.put("CarModelText", selection.toStdString()); + qApp->exit(18); + watchdog_kick(0); + } + }); + fcr_layout->addSpacing(10); + fcr_layout->addWidget(setCarBtn, 0, Qt::AlignRight); + fcr_layout->addSpacing(10); + + home_widget = new QWidget(this); + QVBoxLayout* toggle_layout = new QVBoxLayout(home_widget); + home_widget->setObjectName("homeWidget"); + + ScrollView *scroller = new ScrollView(home_widget, this); + scroller->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); + fcr_layout->addWidget(scroller, 1); + + main_layout->addWidget(home); + + setStyleSheet(R"( + #setCarBtn { + font-size: 50px; + margin: 0px; + padding: 20px; + border-width: 0; + border-radius: 30px; + color: #dddddd; + background-color: #444444; + } + )"); + + toggle_layout->addWidget(new LabelControl(tr("Hyundai/Kia/Genesis (HKG)"))); + eScc = new ParamControl( + "EnhancedScc", + tr("Enhanced SCC Radar Interceptor ℹ"), + QString("%1
" + "%2
" + "%3") + .arg(tr("sunnypilot will take over control of gas and brakes and will NOT disable the car's radar. This preserves AEB.")) + .arg(tr("Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed.")) + .arg(tr("Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information.")), + "../assets/offroad/icon_blank.png" + ); + eScc->setConfirmation(true, false); + toggle_layout->addWidget(horizontal_line()); + toggle_layout->addWidget(eScc); + toggle_layout->addWidget(horizontal_line()); + toggle_layout->addWidget(new LabelControl(tr("Toyota/Lexus"))); + stockLongToyota = new ParamControl( + "StockLongToyota", + "Enable Stock Toyota Longitudinal Control", + "sunnypilot will not take over control of gas and brakes. Stock Toyota longitudinal control will be used.", + "../assets/offroad/icon_blank.png" + ); + stockLongToyota->setConfirmation(true, false); + toggle_layout->addWidget(horizontal_line()); + toggle_layout->addWidget(stockLongToyota); + toggle_layout->addWidget(horizontal_line()); + toggle_layout->addWidget(new LabelControl(tr("Volkswagen MQB/PQ"))); + toggle_layout->addWidget(horizontal_line()); + toggle_layout->addWidget(new VwAccType()); +} + +SPVisualsPanel::SPVisualsPanel(QWidget *parent) : QWidget(parent) { + QVBoxLayout* main_layout = new QVBoxLayout(this); + + // Visuals: Display Braking Status + main_layout->addWidget(new ParamControl( + "BrakeLights", + tr("Display Braking Status"), + tr("Enable this will turn the current speed value to red while the brake is used."), + "../assets/offroad/icon_road.png" + )); + + // Visuals: Display Stand Still Timer + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "StandStillTimer", + tr("Display Stand Still Timer"), + tr("Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions)."), + "../assets/offroad/icon_road.png" + )); + + // Dev U.I. + devUiMain = new QWidget(); + devUiSub = new QVBoxLayout(devUiMain); + // Visuals: Show Developer UI + devUi = new ParamControl( + "DevUI", + tr("Show Developer UI"), + tr("Show developer UI (Dev UI) for real-time parameters from various sources."), + "../assets/offroad/icon_calibration.png" + ); + devUiSub->setContentsMargins(QMargins()); + devUiSub->addWidget(horizontal_line()); + devUiSub->addWidget(new DevUiRow()); + connect(devUi, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(devUi); + main_layout->addWidget(devUiMain); + + + // Visuals: OSM: Show debug UI elements + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(new ParamControl( + "ShowDebugUI", + tr("OSM: Show debug UI elements"), + tr("OSM: Show UI elements that aid debugging."), + "../assets/offroad/icon_calibration.png" + )); + + // Mapbox + mapboxMain = new QWidget(); + mapboxSub = new QVBoxLayout(mapboxMain); + // Visuals: Enable Mapbox Navigation + customMapbox = new ParamControl( + "CustomMapbox", + tr("Enable Mapbox Navigation*"), + QString("%1
" + "%2
" + "%3
" + "

%4

") + .arg(tr("Enable built-in navigation on sunnypilot, powered by Mapbox.")) + .arg(tr("Access via the web interface: \"http://:8082\"")) + .arg(tr("If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information.")) + .arg(tr("Huge thanks to the dragonpilot team for making this possible!")), + "../assets/img_map.png" + ); + connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { + customMapbox->setEnabled(offroad); + }); + connect(customMapbox, &ToggleControl::toggleFlipped, [=](bool state) { + if (ConfirmationDialog::confirm(tr("\"Enable Mapbox Navigation\"\nYou must restart your car or your device to apply these changes.\nReboot now?"), "Reboot", parent)) { + Hardware::reboot(); + } + }); + mapboxFullScreen = new ParamControl( + "MapboxFullScreen", + "Display Navigation Full Screen", + "Enable this will display the built-in navigation in full screen.\nTo switch back to driving view, tap on the border edge.", + "../assets/offroad/icon_blank.png" + ); + connect(mapboxFullScreen, &ToggleControl::toggleFlipped, [=](bool state) { + ConfirmationDialog::alert("\"Enable Mapbox Navigation\"\nEnable this will display the built-in navigation in full screen.\nTo switch back to driving view, tap on the border edge.", this); + }); + mapboxSub->setContentsMargins(QMargins()); + mapboxSub->addWidget(horizontal_line()); + mapboxSub->addWidget(mapboxFullScreen); + QObject::connect(customMapbox, &ToggleControl::toggleFlipped, [=](bool state) { + updateToggles(); + }); + main_layout->addWidget(horizontal_line()); + main_layout->addWidget(customMapbox); + main_layout->addWidget(mapboxMain); +} + +void SPVisualsPanel::showEvent(QShowEvent *event) { + updateToggles(); +} + +void SPVisualsPanel::updateToggles() { + devUiMain->setVisible(params.getBool("DevUI")); + devUiMain->update(); + + mapboxMain->setVisible(params.getBool("CustomMapbox")); + mapboxMain->update(); +} + +// Max Time Offroad (Shutdown timer) +MaxTimeOffroad::MaxTimeOffroad() : AbstractControl( + tr("Max Time Offroad"), + tr("Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road)."), + "../assets/offroad/icon_metric.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("MaxTimeOffroad")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("MaxTimeOffroad", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("MaxTimeOffroad")); + int value = str.toInt(); + value = value + 1; + if (value >= 12 ) { + value = 12; + } + QString values = QString::number(value); + params.put("MaxTimeOffroad", values.toStdString()); + refresh(); + }); + refresh(); +} + +void MaxTimeOffroad::refresh() { + QString option = QString::fromStdString(params.get("MaxTimeOffroad")); + QString second = tr("s"); + QString minute = tr("m"); + QString hour = tr("h"); + if (option == "0") { + label.setText(tr("Always On")); + } else if (option == "1") { + label.setText(tr("Immediate")); + } else if (option == "2") { + label.setText("30" + second); + } else if (option == "3") { + label.setText("1" + minute); + } else if (option == "4") { + label.setText("3" + minute); + } else if (option == "5") { + label.setText("5" + minute); + } else if (option == "6") { + label.setText("10" + minute); + } else if (option == "7") { + label.setText("30" + minute); + } else if (option == "8") { + label.setText("1" + hour); + } else if (option == "9") { + label.setText("3" + hour); + } else if (option == "10") { + label.setText("5" + hour); + } else if (option == "11") { + label.setText("10" + hour); + } else if (option == "12") { + label.setText("30" + hour); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Onroad Screen Off (Auto Onroad Screen Timer) +OnroadScreenOff::OnroadScreenOff() : AbstractControl( + tr("Driving Screen Off Timer"), + tr("Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs."), + "../assets/offroad/icon_metric.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("OnroadScreenOff")); + int value = str.toInt(); + value = value - 1; + if (value <= -2 ) { + value = -2; + } + uiState()->scene.onroadScreenOff = value; + QString values = QString::number(value); + params.put("OnroadScreenOff", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("OnroadScreenOff")); + int value = str.toInt(); + value = value + 1; + if (value >= 10 ) { + value = 10; + } + uiState()->scene.onroadScreenOff = value; + QString values = QString::number(value); + params.put("OnroadScreenOff", values.toStdString()); + refresh(); + }); + refresh(); +} + +void OnroadScreenOff::refresh() +{ + QString option = QString::fromStdString(params.get("OnroadScreenOff")); + QString second = tr("s"); + if (option == "-2") { + label.setText(tr("Always On")); + } else if (option == "-1") { + label.setText("15" + second); + } else if (option == "0") { + label.setText("30" + second); + } else { + label.setText(QString::fromStdString(params.get("OnroadScreenOff")) + "min(s)"); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Onroad Screen Off Brightness +OnroadScreenOffBrightness::OnroadScreenOffBrightness() : AbstractControl( + tr("Driving Screen Off Brightness (%)"), + tr("When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio."), + "../assets/offroad/icon_metric.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("OnroadScreenOffBrightness")); + int value = str.toInt(); + value = value - 10; + if (value <= 0 ) { + value = 0; + } + uiState()->scene.onroadScreenOffBrightness = value; + QString values = QString::number(value); + params.put("OnroadScreenOffBrightness", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("OnroadScreenOffBrightness")); + int value = str.toInt(); + value = value + 10; + if (value >= 100 ) { + value = 100; + } + uiState()->scene.onroadScreenOffBrightness = value; + QString values = QString::number(value); + params.put("OnroadScreenOffBrightness", values.toStdString()); + refresh(); + }); + refresh(); +} + +void OnroadScreenOffBrightness::refresh() { + QString option = QString::fromStdString(params.get("OnroadScreenOffBrightness")); + if (option == "0") { + label.setText(tr("Dark")); + } else { + label.setText(QString::fromStdString(params.get("OnroadScreenOffBrightness"))); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Brightness Control (Global) +BrightnessControl::BrightnessControl() : AbstractControl( + tr("Brightness Control (Global, %)"), + tr("Manually adjusts the global brightness of the screen."), + "../assets/offroad/icon_metric.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("BrightnessControl")); + int value = str.toInt(); + value = value - 5; + if (value <= 0 ) { + value = 0; + } + uiState()->scene.brightness = value; + QString values = QString::number(value); + params.put("BrightnessControl", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("BrightnessControl")); + int value = str.toInt(); + value = value + 5; + if (value >= 100 ) { + value = 100; + } + uiState()->scene.brightness = value; + QString values = QString::number(value); + params.put("BrightnessControl", values.toStdString()); + refresh(); + }); + refresh(); +} + +void BrightnessControl::refresh() { + QString option = QString::fromStdString(params.get("BrightnessControl")); + if (option == "0") { + label.setText(tr("Auto")); + } else { + label.setText(QString::fromStdString(params.get("BrightnessControl"))); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Camera Offset Value +CameraOffset::CameraOffset() : AbstractControl( + tr("Camera Offset (cm)"), + tr("Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately."), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + +QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("CameraOffset")); + int value = str.toInt(); + value = value - 1; + if (value <= -10 ) { + value = -10; + } + + QString values = QString::number(value); + params.put("CameraOffset", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("CameraOffset")); + int value = str.toInt(); + value = value + 1; + if (value >= 10 ) { + value = 10; + } + + QString values = QString::number(value); + params.put("CameraOffset", values.toStdString()); + refresh(); + }); + refresh(); +} + +void CameraOffset::refresh() { + QString option = QString::fromStdString(params.get("CameraOffset")); + label.setText(QString::fromStdString(params.get("CameraOffset"))); + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Path Offset Value +PathOffset::PathOffset() : AbstractControl( + tr("Path Offset (cm)"), + tr("Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately."), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + +QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("PathOffset")); + int value = str.toInt(); + value = value - 1; + if (value <= -10 ) { + value = -10; + } + + QString values = QString::number(value); + params.put("PathOffset", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("PathOffset")); + int value = str.toInt(); + value = value + 1; + if (value >= 10 ) { + value = 10; + } + + QString values = QString::number(value); + params.put("PathOffset", values.toStdString()); + refresh(); + }); + refresh(); +} + +void PathOffset::refresh() { + QString option = QString::fromStdString(params.get("PathOffset")); + label.setText(QString::fromStdString(params.get("PathOffset"))); + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Auto Lane Change Timer (ALCT) +AutoLaneChangeTimer::AutoLaneChangeTimer() : AbstractControl( + tr("Auto Lane Change Timer"), + tr("Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set.\nPlease use caution when using this feature. Only use the blinker when traffic and road conditions permit."), + "../assets/offroad/icon_road.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("AutoLaneChangeTimer")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("AutoLaneChangeTimer", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("AutoLaneChangeTimer")); + int value = str.toInt(); + value = value + 1; + if (value >= 5 ) { + value = 5; + } + QString values = QString::number(value); + params.put("AutoLaneChangeTimer", values.toStdString()); + refresh(); + }); + refresh(); +} + +void AutoLaneChangeTimer::refresh() { + QString option = QString::fromStdString(params.get("AutoLaneChangeTimer")); + QString second = tr("s"); + if (option == "0") { + label.setText(tr("Nudge")); + } else if (option == "1") { + label.setText(tr("Nudgeless")); + } else if (option == "2") { + label.setText("0.5" + second); + } else if (option == "3") { + label.setText("1" + second); + } else if (option == "4") { + label.setText("1.5" + second); + } else { + label.setText("2" + second); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// G.A.C. Mode +GapAdjustCruiseMode::GapAdjustCruiseMode() : AbstractControl( + tr("Mode"), + QString("%1
" + "%2
" + "%3") + .arg(tr("SW: Steering Wheel Button only")) + .arg(tr("UI: User Interface Button on screen only")) + .arg(tr("SW + UI: Steering Wheel Button + User Interface Button on screen")), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("GapAdjustCruiseMode")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("GapAdjustCruiseMode", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("GapAdjustCruiseMode")); + int value = str.toInt(); + value = value + 1; + if (value >= 2 ) { + value = 2; + } + QString values = QString::number(value); + params.put("GapAdjustCruiseMode", values.toStdString()); + refresh(); + }); + refresh(); +} + +void GapAdjustCruiseMode::refresh() { + QString option = QString::fromStdString(params.get("GapAdjustCruiseMode")); + if (option == "0") { + label.setText(tr("S.W.")); + } else if (option == "1") { + label.setText(tr("UI")); + } else if (option == "2") { + label.setText(tr("S.W. + UI")); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +TorqueFriction::TorqueFriction() : AbstractControl( + tr("FRICTION"), + tr("Adjust Friction for the Torque Lateral Controller"), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("TorqueFriction")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("TorqueFriction", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("TorqueFriction")); + int value = str.toInt(); + value = value + 1; + if (value >= 50 ) { + value = 50; + } + QString values = QString::number(value); + params.put("TorqueFriction", values.toStdString()); + refresh(); + }); + refresh(); +} + +void TorqueFriction::refresh() { + auto strs = QString::fromStdString(params.get("TorqueFriction")); + int valuei = strs.toInt(); + float valuef = valuei * 0.01; + QString valuefs = QString::number(valuef); + label.setText(QString::fromStdString(valuefs.toStdString())); + btnminus.setText("-"); + btnplus.setText("+"); +} + +TorqueMaxLatAccel::TorqueMaxLatAccel() : AbstractControl( + tr("LAT_ACCEL_FACTOR"), + tr("Adjust Max Lateral Acceleration for the Torque Lateral Controller"), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("TorqueMaxLatAccel")); + int value = str.toInt(); + value = value - 1; + if (value <= 1 ) { + value = 1; + } + QString values = QString::number(value); + params.put("TorqueMaxLatAccel", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("TorqueMaxLatAccel")); + int value = str.toInt(); + value = value + 1; + if (value >= 500 ) { + value = 500; + } + QString values = QString::number(value); + params.put("TorqueMaxLatAccel", values.toStdString()); + refresh(); + }); + refresh(); +} + +void TorqueMaxLatAccel::refresh() { + auto strs = QString::fromStdString(params.get("TorqueMaxLatAccel")); + int valuei = strs.toInt(); + float valuef = valuei * 0.01; + QString valuefs = QString::number(valuef); + label.setText(QString::fromStdString(valuefs.toStdString())); + btnminus.setText("-"); + btnplus.setText("+"); +} + +SpeedLimitStyle::SpeedLimitStyle() : AbstractControl( + tr("Speed Limit Style"), + QString("%1
" + "%2") + .arg(tr("MUTCD: US/Canada")) + .arg(tr("Vienna: Europe/Asia/etc.")), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("SpeedLimitStyle")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("SpeedLimitStyle", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("SpeedLimitStyle")); + int value = str.toInt(); + value = value + 1; + if (value >= 1 ) { + value = 1; + } + QString values = QString::number(value); + params.put("SpeedLimitStyle", values.toStdString()); + refresh(); + }); + refresh(); +} + +void SpeedLimitStyle::refresh() { + QString option = QString::fromStdString(params.get("SpeedLimitStyle")); + if (option == "0") { + label.setText(tr("MUTCD")); + } else { + label.setText(tr("Vienna")); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Speed Limit Control Custom Offset +SpeedLimitValueOffset::SpeedLimitValueOffset() : AbstractControl( + tr("Speed Limit Offset (MPH / KM/H) ℹ"), + QString("%1
" + "%2") + .arg(tr("Set speed limit higher or lower than actual speed limit for a more personalized drive.")) + .arg(tr("To use this feature, turn off \"Enable Speed Limit % Offset\".")), + "../assets/offroad/icon_speed_limit.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("SpeedLimitValueOffset")); + int value = str.toInt(); + value = value - 1; + if (value <= -30 ) { + value = -30; + } + QString values = QString::number(value); + params.put("SpeedLimitValueOffset", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("SpeedLimitValueOffset")); + int value = str.toInt(); + value = value + 1; + if (value >= 30 ) { + value = 30; + } + QString values = QString::number(value); + params.put("SpeedLimitValueOffset", values.toStdString()); + refresh(); + }); + refresh(); +} + +void SpeedLimitValueOffset::refresh() { + label.setText(QString::fromStdString(params.get("SpeedLimitValueOffset"))); + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Volkswagen - MQB ACC Type +VwAccType::VwAccType() : AbstractControl( + tr("Short Press +1/-1 Type"), + tr("Define the type of ACC control your car has with short press to +1 or -1."), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 35px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("VwAccType")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("VwAccType", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("VwAccType")); + int value = str.toInt(); + value = value + 1; + if (value >= 1 ) { + value = 1; + } + QString values = QString::number(value); + params.put("VwAccType", values.toStdString()); + refresh(); + }); + refresh(); +} + +void VwAccType::refresh() { + QString option = QString::fromStdString(params.get("VwAccType")); + if (option == "0") { + label.setText(tr("+/-")); + } else if (option == "1") { + label.setText(tr("RES/SET")); + } + btnminus.setText("-"); + btnplus.setText("+"); +} + +// Developer UI Rows (Dev UI) +DevUiRow::DevUiRow() : AbstractControl( + tr("Developer UI List"), + tr("Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving."), + "../assets/offroad/icon_blank.png") + +{ + label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); + label.setStyleSheet("color: #e0e879"); + hlayout->addWidget(&label); + + btnminus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnplus.setStyleSheet(R"( + padding: 0; + border-radius: 50px; + font-size: 50px; + font-weight: 500; + color: #E4E4E4; + background-color: #393939; + )"); + btnminus.setFixedSize(150, 100); + btnplus.setFixedSize(150, 100); + hlayout->addWidget(&btnminus); + hlayout->addWidget(&btnplus); + + QObject::connect(&btnminus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("DevUIRow")); + int value = str.toInt(); + value = value - 1; + if (value <= 0 ) { + value = 0; + } + QString values = QString::number(value); + params.put("DevUIRow", values.toStdString()); + refresh(); + }); + + QObject::connect(&btnplus, &QPushButton::clicked, [=]() { + auto str = QString::fromStdString(params.get("DevUIRow")); + int value = str.toInt(); + value = value + 1; + if (value >= 1 ) { + value = 1; + } + QString values = QString::number(value); + params.put("DevUIRow", values.toStdString()); + refresh(); + }); + refresh(); +} + +void DevUiRow::refresh() { + QString option = QString::fromStdString(params.get("DevUIRow")); + if (option == "0") { + label.setText(tr("1-Row")); + } else { + label.setText(tr("2-Row")); + } + btnminus.setText("-"); + btnplus.setText("+"); +} diff --git a/selfdrive/ui/qt/offroad/sunnypilot_settings.h b/selfdrive/ui/qt/offroad/sunnypilot_settings.h new file mode 100644 index 0000000000..5bb9afed3a --- /dev/null +++ b/selfdrive/ui/qt/offroad/sunnypilot_settings.h @@ -0,0 +1,316 @@ +#pragma once + +#include +#include +#include +#include +#include + +#include "selfdrive/ui/qt/widgets/controls.h" + +class SPGeneralPanel : public QWidget { + Q_OBJECT + +public: + explicit SPGeneralPanel(QWidget *parent = nullptr); + +private: + QVBoxLayout *main_layout; + ParamControl *endToEndLongAlert; +}; + +class SPControlsPanel : public QWidget { + Q_OBJECT + +public: + explicit SPControlsPanel(QWidget *parent = nullptr); + void showEvent(QShowEvent *event) override; + +private: + Params params; + + QVBoxLayout *main_layout; + QWidget *madsMainControl; + QVBoxLayout *madsSubControl; + QWidget *dlpMain; + QVBoxLayout *dlpSub; + QWidget *customOffsetsMain; + QVBoxLayout *customOffsetsSub; + QWidget *gacMain; + QVBoxLayout *gacSub; + QWidget *torqueMain; + QVBoxLayout *torqueSub; + QWidget *customTorqueMain; + QVBoxLayout *customTorqueSub; + QWidget *speedLimitMain; + QVBoxLayout *speedLimitSub; + QWidget *speedOffsetMain; + QVBoxLayout *speedOffsetSub; + + ParamControl *madsControl; + ParamControl *disengageLateralOnBrake; + ParamControl *accMadsCombo; + ParamControl *belowSpeed; + ParamControl *dlpControl; + ParamControl *dlpCurve; + ParamControl *customOffsets; + ParamControl *gapAdjustCruise; + ParamControl *torqueLateral; + ParamControl *customTorqueLateral; + ParamControl *liveTorque; + ParamControl *speedLimitControl; + ParamControl *speedPercControl; + ParamControl *osmLocalDb; + + void updateToggles(); +}; + +class SPVehiclesPanel : public QWidget { + Q_OBJECT + +public: + explicit SPVehiclesPanel(QWidget *parent = nullptr); + +private: + Params params; + + QStackedLayout* main_layout = nullptr; + QWidget* home = nullptr; + + QWidget* home_widget; + + ParamControl *eScc; + ParamControl *stockLongToyota; +}; + +class SPVisualsPanel : public QWidget { + Q_OBJECT + +public: + explicit SPVisualsPanel(QWidget *parent = nullptr); + void showEvent(QShowEvent *event) override; + +private: + Params params; + + QWidget *devUiMain; + QVBoxLayout *devUiSub; + QWidget *mapboxMain; + QVBoxLayout *mapboxSub; + + ParamControl *devUi; + ParamControl *customMapbox; + ParamControl *mapboxFullScreen; + + void updateToggles(); +}; + +class MaxTimeOffroad : public AbstractControl { + Q_OBJECT + +public: + MaxTimeOffroad(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class OnroadScreenOff : public AbstractControl { + Q_OBJECT + +public: + OnroadScreenOff(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class OnroadScreenOffBrightness : public AbstractControl { + Q_OBJECT + +public: + OnroadScreenOffBrightness(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class BrightnessControl : public AbstractControl { + Q_OBJECT + +public: + BrightnessControl(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class CameraOffset : public AbstractControl { + Q_OBJECT + +public: + CameraOffset(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class PathOffset : public AbstractControl { + Q_OBJECT + +public: + PathOffset(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class AutoLaneChangeTimer : public AbstractControl { + Q_OBJECT + +public: + AutoLaneChangeTimer(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class GapAdjustCruiseMode : public AbstractControl { + Q_OBJECT + +public: + GapAdjustCruiseMode(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class TorqueFriction : public AbstractControl { + Q_OBJECT + +public: + TorqueFriction(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class TorqueMaxLatAccel : public AbstractControl { + Q_OBJECT + +public: + TorqueMaxLatAccel(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class SpeedLimitStyle : public AbstractControl { + Q_OBJECT + +public: + SpeedLimitStyle(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class SpeedLimitValueOffset : public AbstractControl { + Q_OBJECT + +public: + SpeedLimitValueOffset(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class VwAccType : public AbstractControl { + Q_OBJECT + +public: + VwAccType(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; + +class DevUiRow : public AbstractControl { + Q_OBJECT + +public: + DevUiRow(); + +private: + QPushButton btnplus; + QPushButton btnminus; + QLabel label; + Params params; + + void refresh(); +}; diff --git a/selfdrive/ui/qt/util.cc b/selfdrive/ui/qt/util.cc index 4f52310649..9f3444db49 100644 --- a/selfdrive/ui/qt/util.cc +++ b/selfdrive/ui/qt/util.cc @@ -21,7 +21,7 @@ QString getVersion() { } QString getBrand() { - return Params().getBool("Passive") ? QObject::tr("dashcam") : QObject::tr("openpilot"); + return Params().getBool("Passive") ? QObject::tr("dashcam") : QObject::tr("sunnypilot"); } QString getUserAgent() { @@ -51,6 +51,19 @@ QMap getSupportedLanguages() { return map; } +QMap getCarNames() { + QFile f("/data/openpilot/selfdrive/car/sunnypilot_carname.json"); + f.open(QIODevice::ReadOnly | QIODevice::Text); + QString val = f.readAll(); + + QJsonObject obj = QJsonDocument::fromJson(val.toUtf8()).object(); + QMap map; + for (auto key : obj.keys()) { + map[key] = obj[key].toString(); + } + return map; +} + void configFont(QPainter &p, const QString &family, int size, const QString &style) { QFont f(family); f.setPixelSize(size); diff --git a/selfdrive/ui/qt/util.h b/selfdrive/ui/qt/util.h index 3188f3f9b9..a47896a8e7 100644 --- a/selfdrive/ui/qt/util.h +++ b/selfdrive/ui/qt/util.h @@ -14,6 +14,7 @@ QString getBrand(); QString getUserAgent(); std::optional getDongleId(); QMap getSupportedLanguages(); +QMap getCarNames(); void configFont(QPainter &p, const QString &family, int size, const QString &style); void clearLayout(QLayout* layout); void setQtSurfaceFormat(); diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 2606df5efe..d863432580 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -89,6 +89,71 @@ LIMIT LIMIT + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ Ablehnen, deinstallieren %1 + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW TRAINING - - Review the rules, features, and limitations of openpilot - Wiederhole die Regeln, Fähigkeiten und Limitierungen von Openpilot - Are you sure you want to review the training guide? Bist du sicher, dass du die Trainingsanleitung wiederholen möchtest? @@ -198,10 +278,6 @@ Power Off Ausschalten - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - Damit Openpilot funktioniert, darf die Installationsposition nicht mehr als 4° nach rechts/links, 5° nach oben und 8° nach unten abweichen. Openpilot kalibriert sich durchgehend, ein Zurücksetzen ist selten notwendig. - Your device is pointed %1° %2 and %3° %4. Deine Geräteausrichtung ist %1° %2 und %3° %4. @@ -246,6 +322,14 @@ Review Überprüfen + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ ENTSPANNTER MODUS AN + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -417,6 +532,37 @@ location set Warten auf GPS + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -462,6 +608,40 @@ location set HINWEIS + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -492,6 +672,17 @@ location set Aktivieren + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -552,10 +743,6 @@ location set dashcam dashcam - - openpilot - openpilot - %n minute(s) ago @@ -577,6 +764,10 @@ location set vor %n Tagen + + sunnypilot + + Reset @@ -617,6 +808,332 @@ location set Datenpartition kann nicht geöffnet werden. Drücke Annehmen, um dein Gerät auf Werkseinstellungen zurückzusetzen. + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + ANSEHEN + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -643,6 +1160,22 @@ location set Navigation Navigation + + SP - General + + + + SP - Controls + + + + SP - Vehicles + + + + SP - Visuals + + Setup @@ -882,6 +1415,44 @@ location set Deinstallieren + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -949,14 +1520,6 @@ location set TogglesPanel - - Enable openpilot - Openpilot aktivieren - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Benutze das Openpilot System als adaptiven Tempomaten und Spurhalteassistenten. Deine Aufmerksamkeit ist jederzeit erforderlich, um diese Funktion zu nutzen. Diese Einstellung wird übernommen, wenn das Auto aus ist. - Enable Lane Departure Warnings Spurverlassenswarnungen aktivieren @@ -981,10 +1544,6 @@ location set Upload data from the driver facing camera and help improve the driver monitoring algorithm. Lade Daten der Fahreraufmerksamkeitsüberwachungskamera hoch, um die Fahreraufmerksamkeitsüberwachungsalgorithmen zu verbessern. - - When enabled, pressing the accelerator pedal will disengage openpilot. - Wenn aktiviert, deaktiviert sich Openpilot sobald das Gaspedal betätigt wird. - Use 24h format instead of am/pm Benutze das 24Stunden Format anstatt am/pm @@ -1059,6 +1618,40 @@ location set Enable experimental longitudinal control to allow Experimental mode. Aktiviere den experimentellen Openpilot Tempomaten für experimentelle Funktionen. + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1095,6 +1688,25 @@ location set Aktualisierung fehlgeschlagen + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index 16f35dffaa..12b5b692fa 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -89,6 +89,71 @@ LIMIT 制限速度 + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ 拒否して %1 をアンインストール + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW 見る - - Review the rules, features, and limitations of openpilot - openpilot の特徴を見る - Are you sure you want to review the training guide? 使い方の確認をしますか? @@ -198,10 +278,6 @@ Power Off 電源を切る - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilotの本体は、左右4°以内、上5°、下8°以内の角度で取付ける必要があります。継続してキャリブレーションを続けているので、手動でリセットを行う必要はほぼありません。 - Your device is pointed %1° %2 and %3° %4. このデバイスは%2 %1°、%4 %3°の向きに設置されています。 @@ -246,6 +322,14 @@ Review 確認 + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ チルモード + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -418,6 +533,37 @@ location set GPS信号を探しています + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -463,6 +609,40 @@ location set 警告 + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -493,6 +673,17 @@ location set を有効化 + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -553,10 +744,6 @@ location set dashcam ドライブレコーダー - - openpilot - openpilot - %n minute(s) ago @@ -575,6 +762,10 @@ location set %n 日前 + + sunnypilot + + Reset @@ -615,6 +806,332 @@ location set 「data」パーティションをマウントできません。「確認」ボタンを押すとデバイスが初期化されます。 + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + 見る + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -641,6 +1158,22 @@ location set Navigation ナビゲーション + + SP - General + + + + SP - Controls + + + + SP - Vehicles + + + + SP - Visuals + + Setup @@ -878,6 +1411,44 @@ location set アンインストール + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -945,14 +1516,6 @@ location set TogglesPanel - - Enable openpilot - openpilot を有効化 - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - openpilotによるアダプティブクルーズコントロールとレーンキーピングドライバーアシストを利用します。この機能を利用する際は、常に前方への注意が必要です。この設定を変更すると、車の電源が切れた時に反映されます。 - Enable Lane Departure Warnings 車線逸脱警報機能を有効化 @@ -985,10 +1548,6 @@ location set Disengage on Accelerator Pedal アクセルを踏むと openpilot を中断 - - When enabled, pressing the accelerator pedal will disengage openpilot. - この機能を有効化すると、openpilotを利用中にアクセルを踏むとopenpilotによる運転サポートを中断します。 - Show ETA in 24h Format 24時間表示 @@ -1053,6 +1612,40 @@ location set Enable experimental longitudinal control to allow Experimental mode. 実験段階のopenpilotによるアクセル制御を有効にしてください。 + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1089,6 +1682,25 @@ location set 更新失敗 + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index f50d2d9b3f..9fe24d4a3b 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -89,6 +89,71 @@ LIMIT LIMIT + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ 거절, %1 제거 + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW 다시보기 - - Review the rules, features, and limitations of openpilot - openpilot의 규칙, 기능 및 제한 다시보기 - Are you sure you want to review the training guide? 트레이닝 가이드를 다시보시겠습니까? @@ -198,10 +278,6 @@ Power Off 전원 종료 - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot은 좌우측은 4° 이내, 위쪽은 5° 아래쪽은 8° 이내로 장치를 설치해야 합니다. openpilot은 지속적으로 보정되므로 리셋은 거의 필요하지 않습니다. - Your device is pointed %1° %2 and %3° %4. 사용자의 장치가 %1° %2 및 %3° %4 위치에 설치되어있습니다. @@ -246,6 +322,14 @@ Review 다시보기 + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ 안정적 모드 사용 + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -418,6 +533,37 @@ location set GPS를 기다리는 중 + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -463,6 +609,40 @@ location set 알림 + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -493,6 +673,17 @@ location set 사용 + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -553,10 +744,6 @@ location set dashcam dashcam - - openpilot - openpilot - %n minute(s) ago @@ -575,6 +762,10 @@ location set %n 일전 + + sunnypilot + + Reset @@ -615,6 +806,332 @@ location set 데이터 파티션을 마운트할 수 없습니다. 확인 버튼을 눌러 장치를 리셋합니다. + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + 보기 + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -641,6 +1158,22 @@ location set Navigation 네비게이션 + + SP - General + + + + SP - Controls + + + + SP - Vehicles + + + + SP - Visuals + + Setup @@ -878,6 +1411,44 @@ location set 제거 + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -945,14 +1516,6 @@ location set TogglesPanel - - Enable openpilot - openpilot 사용 - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 어댑티브 크루즈 컨트롤 및 차선 유지 운전자 보조를 위해 openpilot 시스템을 사용하십시오. 이 기능을 사용하려면 항상 주의를 기울여야 합니다. 설정변경은 장치 재부팅후 적용됩니다. - Enable Lane Departure Warnings 차선 이탈 경고 사용 @@ -985,10 +1548,6 @@ location set Disengage on Accelerator Pedal 가속페달 조작시 해제 - - When enabled, pressing the accelerator pedal will disengage openpilot. - 활성화된 경우 가속 페달을 누르면 openpilot이 해제됩니다. - Show ETA in 24h Format 24시간 형식으로 도착예정시간 표시 @@ -1053,6 +1612,40 @@ location set Enable experimental longitudinal control to allow Experimental mode. 실험적 롱컨트롤을 사용하려면 실험적 모드를 활성화 하세요. + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1089,6 +1682,25 @@ location set 업데이트 실패 + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 445de72fc3..89ef52990d 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -89,6 +89,71 @@ LIMIT VELO + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ Rejeitar, desintalar %1 + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW REVISAR - - Review the rules, features, and limitations of openpilot - Revisar regras, aprimoramentos e limitações do openpilot - Are you sure you want to review the training guide? Tem certeza que quer rever o treinamento? @@ -198,10 +278,6 @@ Power Off Desligar - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - O openpilot requer que o dispositivo seja montado dentro de 4° esquerda ou direita e dentro de 5° para cima ou 8° para baixo. O openpilot está continuamente calibrando, resetar raramente é necessário. - Your device is pointed %1° %2 and %3° %4. Seu dispositivo está montado %1° %2 e %3° %4. @@ -246,6 +322,14 @@ Review Revisar + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ MODO CHILL ATIVADO + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -419,6 +534,37 @@ trabalho definido Esperando por GPS + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -464,6 +610,40 @@ trabalho definido ALERTA + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -494,6 +674,17 @@ trabalho definido Ativar + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -554,10 +745,6 @@ trabalho definido dashcam dashcam - - openpilot - openpilot - %n minute(s) ago @@ -579,6 +766,10 @@ trabalho definido há %n dias + + sunnypilot + + Reset @@ -619,6 +810,332 @@ trabalho definido Não foi possível montar a partição de dados. Pressione confirmar para resetar seu dispositivo. + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + VER + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -645,6 +1162,22 @@ trabalho definido Navigation Navegação + + SP - General + + + + SP - Controls + + + + SP - Vehicles + + + + SP - Visuals + + Setup @@ -882,6 +1415,44 @@ trabalho definido Desinstalar + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -949,14 +1520,6 @@ trabalho definido TogglesPanel - - Enable openpilot - Ativar openpilot - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - Use o sistema openpilot para controle de cruzeiro adaptativo e assistência ao motorista de manutenção de faixa. Sua atenção é necessária o tempo todo para usar esse recurso. A alteração desta configuração tem efeito quando o carro é desligado. - Enable Lane Departure Warnings Ativar Avisos de Saída de Faixa @@ -989,10 +1552,6 @@ trabalho definido Disengage on Accelerator Pedal Desacionar com Pedal do Acelerador - - When enabled, pressing the accelerator pedal will disengage openpilot. - Quando ativado, pressionar o pedal do acelerador desacionará o openpilot. - Show ETA in 24h Format Mostrar ETA em Formato 24h @@ -1057,6 +1616,40 @@ trabalho definido Enable experimental longitudinal control to allow Experimental mode. Ative o controle longitudinal experimental para permitir o modo Experimental. + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1093,6 +1686,25 @@ trabalho definido Falha na atualização + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 792a918770..d5feee5797 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -89,6 +89,71 @@ LIMIT LIMIT + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ 拒绝并卸载%1 + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW 查看 - - Review the rules, features, and limitations of openpilot - 查看openpilot的使用规则,以及其功能和限制。 - Are you sure you want to review the training guide? 您确定要查看新手指南吗? @@ -198,10 +278,6 @@ Power Off 关机 - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot要求设备安装的偏航角在左4°和右4°之间,俯仰角在上5°和下8°之间。一般来说,openpilot会持续更新校准,很少需要重置。 - Your device is pointed %1° %2 and %3° %4. 您的设备校准为%1° %2、%3° %4。 @@ -246,6 +322,14 @@ Review 预览 + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ 轻松模式运行 + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -416,6 +531,37 @@ location set 等待 GPS + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -461,6 +607,40 @@ location set 警报 + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -491,6 +671,17 @@ location set 启用 + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -551,10 +742,6 @@ location set dashcam 行车记录仪 - - openpilot - openpilot - %n minute(s) ago @@ -573,6 +760,10 @@ location set %n 天前 + + sunnypilot + + Reset @@ -613,6 +804,332 @@ location set 无法挂载数据分区。 确认以重置您的设备。 + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + 查看 + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -639,6 +1156,22 @@ location set Navigation 导航 + + SP - General + SP - 通用 + + + SP - Controls + SP - 控制 + + + SP - Vehicles + SP - 车辆 + + + SP - Visuals + SP - 界面 + Setup @@ -876,6 +1409,44 @@ location set 卸载 + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -943,14 +1514,6 @@ location set TogglesPanel - - Enable openpilot - 启用openpilot - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 使用openpilot进行自适应巡航和车道保持辅助。使用此功能时您必须时刻保持注意力。该设置的更改在熄火时生效。 - Enable Lane Departure Warnings 启用车道偏离警告 @@ -983,10 +1546,6 @@ location set Disengage on Accelerator Pedal 踩油门时取消控制 - - When enabled, pressing the accelerator pedal will disengage openpilot. - 启用后,踩下油门踏板将取消openpilot。 - Show ETA in 24h Format 以24小时格式显示预计到达时间 @@ -1051,6 +1610,40 @@ location set Enable experimental longitudinal control to allow Experimental mode. 启用试验性的纵向控制,以便允许使用试验模式。 + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1087,6 +1680,25 @@ location set 更新失败 + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index e8e2ab6bd3..56efd383df 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -89,6 +89,71 @@ LIMIT 速限 + + Lane +only + + + + Lane +less + + + + Auto +Lane + + + + + AutoLaneChangeTimer + + Auto Lane Change Timer + + + + Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set. +Please use caution when using this feature. Only use the blinker when traffic and road conditions permit. + + + + Nudge + + + + Nudgeless + + + + s + + + + + BrightnessControl + + Brightness Control (Global, %) + + + + Manually adjusts the global brightness of the screen. + + + + Auto + + + + + CameraOffset + + Camera Offset (cm) + + + + Hack to trick vehicle to be left or right biased in its lane. Decreasing the value will make the car keep more left, increasing will make it keep more right. Changes take effect immediately. + + ConfirmationDialog @@ -116,6 +181,25 @@ 拒絕並解除安裝 %1 + + DevUiRow + + Developer UI List + + + + Select the number of lists of real-time parameters you would like to display on the sunnypilot screen while driving. + + + + 1-Row + + + + 2-Row + + + DevicePanel @@ -162,10 +246,6 @@ REVIEW 觀看 - - Review the rules, features, and limitations of openpilot - 觀看 openpilot 的使用規則、功能和限制 - Are you sure you want to review the training guide? 您確定要觀看使用教學嗎? @@ -198,10 +278,6 @@ Power Off 關機 - - openpilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. openpilot is continuously calibrating, resetting is rarely required. - openpilot 需要將裝置固定在左右偏差 4° 以內,朝上偏差 5° 以内或朝下偏差 8° 以内。鏡頭在後台會持續自動校準,很少有需要重置的情况。 - Your device is pointed %1° %2 and %3° %4. 你的設備目前朝%2 %1° 以及朝%4 %3° 。 @@ -246,6 +322,14 @@ Review 回顧 + + Review the rules, features, and limitations of sunnypilot + + + + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 8° down. sunnypilot is continuously calibrating, resetting is rarely required. + + DriveStats @@ -292,6 +376,37 @@ 輕鬆模式 ON + + GapAdjustCruiseMode + + Mode + + + + SW: Steering Wheel Button only + + + + UI: User Interface Button on screen only + + + + SW + UI: Steering Wheel Button + User Interface Button on screen + + + + S.W. + + + + UI + + + + S.W. + UI + + + InputDialog @@ -418,6 +533,37 @@ location set 等待 GPS + + MaxTimeOffroad + + Max Time Offroad + + + + Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road). + + + + Always On + + + + Immediate + + + + s + + + + m + + + + h + + + MultiOptionDialog @@ -463,6 +609,40 @@ location set 提醒 + + OnroadScreenOff + + Driving Screen Off Timer + + + + Turn off the device screen or reduce brightness to protect the screen after driving starts. It automatically brightens or turns on when a touch or event occurs. + + + + Always On + + + + s + + + + + OnroadScreenOffBrightness + + Driving Screen Off Brightness (%) + + + + When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio. + + + + Dark + + + PairingPopup @@ -493,6 +673,17 @@ location set 啟用 + + PathOffset + + Path Offset (cm) + + + + Hack to trick the model path to be left or right biased of the lane. Decreasing the value will shift the model more left, increasing will shift the model more right. Changes take effect immediately. + + + PrimeAdWidget @@ -553,10 +744,6 @@ location set dashcam 行車記錄器 - - openpilot - openpilot - %n minute(s) ago @@ -575,6 +762,10 @@ location set %n 天前 + + sunnypilot + + Reset @@ -615,6 +806,332 @@ location set 無法掛載數據分區。請按確認重置您的設備。 + + SPControlsPanel + + Enable M.A.D.S. + + + + Enable the beloved M.A.D.S. feature. Disable toggle to revert back to stock openpilot engagement/disengagement. + + + + Disengage ALC On Brake Pedal ℹ + + + + Define brake pedal interactions with sunnypilot when M.A.D.S. is enabled. + + + + Enabled: Pressing the brake pedal will disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Disabled: Pressing the brake pedal will <b>NOT</b> disengage Automatic Lane Centering (ALC) on sunnypilot. + + + + Enable ACC+MADS with RES+/SET- + + + + Engage both M.A.D.S. and ACC with a single press of RES+ or SET- button. + + + + Note: Once M.A.D.S. is engaged via this mode, it will remain engaged until it is manually disabled via the M.A.D.S. button or car shut off. + + + + Pause Lateral Below Speed w/ Blinker + + + + Enable this toggle to pause lateral actuation with blinker when traveling below 30 MPH or 50 KM/H. + + + + Enable Dynamic Lane Profile + + + + Enable toggle to use Dynamic Lane Profile. Disable toggle to use Laneless only. + + + + Laneless for Curves in "Auto lane" + + + + While in Auto Lane, switch to Laneless for current/future curves. + + + + Custom Offsets + + + + Add custom offsets to Camera and Path in sunnypilot. + + + + Enable Gap Adjust Cruise ℹ + + + + Enable the Interval button on the steering wheel to adjust the cruise gap. + + + + Only available to cars with openpilot Longitudinal Control + + + + Enforce Torque Lateral Control + + + + Enable this to enforce sunnypilot to steer with Torque lateral control. + + + + Torque Lateral Control Live Tune + + + + Enables live tune for Torque lateral control. + + + + "Torque Lateral Control Live Tune"<br>You must restart your car or your device to apply these changes. + + + + Torque Lateral Controller Self-Tune + + + + Enables self-tune for Torque lateral control. + + + + "Torque Lateral Controller Self-Tune"<br>You must restart your car or your device to apply these changes. + + + + Enable Hands on Wheel Monitoring + + + + Monitor and alert when driver is not keeping the hands on the steering wheel. + + + + Enable Vision Based Turn Speed Control (V-TSC) + + + + Use vision path predictions to estimate the appropriate speed to drive through turns ahead. + + + + Enable Speed Limit Control (SLC) + + + + Use speed limit signs information from map data and car interface (if applicable) to automatically adapt cruise speed to road limits. + + + + Enable Speed Limit % Offset + + + + Set speed limit slightly higher than actual speed limit for a more natural drive. + + + + Enable Map Data Turn Speed Control (M-TSC) + + + + Use curvature information from map data to define speed limits to take turns ahead. + + + + ACC +/-: Long Press Reverse + + + + Change the ACC +/- buttons behavior with cruise speed change in sunnypilot. + + + + Disabled (Stock): Short=1, Long = 5 (imperial) / 10 (metric) + + + + Enabled: Short = 5 (imperial) / 10 (metric), Long=1 + + + + OSM: Use Offline Database + + + + + SPGeneralPanel + + Quiet Drive 🤫 + + + + sunnypilot will display alerts but only play the most important warning sounds. This feature can be toggled while the car is on. + + + + Green Traffic Light Chime (Beta) + + + + A chime will play when the traffic light you are waiting for turns green and you have no vehicle in front of you. If you are waiting behind another vehicle, the chime will play once the vehicle advances unless ACC is engaged. + + + + Note: This chime is only designed as a notification. It is the driver's responsibility to observe their environment and make decisions accordingly. + + + + Custom Boot Screen + + + + Display sunnypilot welcome screen while booting the device. + + + + Disable Onroad Uploads + + + + Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot. Turn on this feature if you are looking to utilize map-based features, such as Speed Limit Control (SLC) and Map-based Turn Speed Control (MTSC). + + + + Error Troubleshoot + + + + VIEW + 觀看 + + + Display error from the tmux session when an error has occurred from a system process. + + + + Debug snapshot on screen center tap + + + + Stores snapshot file with current state of some modules. + + + + + SPVehiclesPanel + + Hyundai/Kia/Genesis (HKG) + + + + Enhanced SCC Radar Interceptor ℹ + + + + sunnypilot will take over control of gas and brakes and will <b>NOT</b> disable the car's radar. This preserves AEB. + + + + Note: Only enable this feature if you have the Enhanced SCC Radar Interceptor hardware installed. + + + + Want to get one for your car? Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Toyota/Lexus + + + + Volkswagen MQB/PQ + + + + + SPVisualsPanel + + Display Braking Status + + + + Enable this will turn the current speed value to red while the brake is used. + + + + Display Stand Still Timer + + + + Enable this will display time spent at a stop (i.e., at a stop lights, stop signs, traffic congestions). + + + + OSM: Show debug UI elements + + + + OSM: Show UI elements that aid debugging. + + + + Enable Mapbox Navigation* + + + + Enable built-in navigation on sunnypilot, powered by Mapbox. + + + + Access via the web interface: "http://<device_ip>:8082" + + + + If you do not have comma Prime, you will need to provide your own Mapbox token at https://mapbox.com/. Reach out to sunnyhaibin#0865 on Discord for more information. + + + + Huge thanks to the dragonpilot team for making this possible! + + + + "Enable Mapbox Navigation" +You must restart your car or your device to apply these changes. +Reboot now? + + + + Show Developer UI + + + + Show developer UI (Dev UI) for real-time parameters from various sources. + + + SettingsWindow @@ -641,6 +1158,22 @@ location set Navigation 導航 + + SP - General + SP - 通用 + + + SP - Controls + SP - 控制 + + + SP - Vehicles + SP - 車輛 + + + SP - Visuals + SP - 界面 + Setup @@ -878,6 +1411,44 @@ location set 解除安裝 + + SpeedLimitStyle + + Speed Limit Style + + + + MUTCD: US/Canada + + + + Vienna: Europe/Asia/etc. + + + + MUTCD + + + + Vienna + + + + + SpeedLimitValueOffset + + Speed Limit Offset (MPH / KM/H) ℹ + + + + Set speed limit higher or lower than actual speed limit for a more personalized drive. + + + + To use this feature, turn off "Enable Speed Limit % Offset". + + + SshControl @@ -945,14 +1516,6 @@ location set TogglesPanel - - Enable openpilot - 啟用 openpilot - - - Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. - 使用 openpilot 的主動式巡航和車道保持功能,開啟後您需要持續集中注意力,設定變更在重新啟動車輛後生效。 - Enable Lane Departure Warnings 啟用車道偏離警告 @@ -985,10 +1548,6 @@ location set Disengage on Accelerator Pedal 油門取消控車 - - When enabled, pressing the accelerator pedal will disengage openpilot. - 啟用後,踩踏油門將會取消 openpilot 控制。 - Show ETA in 24h Format 預計到達時間單位改用 24 小時制 @@ -1053,6 +1612,40 @@ location set Enable experimental longitudinal control to allow Experimental mode. 啟用實驗性縱向控制以使用實驗模式。 + + Enable sunnypilot + + + + Use the sunnypilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. + + + + When enabled, pressing the accelerator pedal will disengage sunnypilot. + + + + + TorqueFriction + + FRICTION + + + + Adjust Friction for the Torque Lateral Controller + + + + + TorqueMaxLatAccel + + LAT_ACCEL_FACTOR + + + + Adjust Max Lateral Acceleration for the Torque Lateral Controller + + Updater @@ -1089,6 +1682,25 @@ location set 更新失敗 + + VwAccType + + Short Press +1/-1 Type + + + + Define the type of ACC control your car has with short press to +1 or -1. + + + + +/- + + + + RES/SET + + + WifiUI