IQ.Pilot Release Commit @ 24db8ae

This commit is contained in:
IQ.Lvbs CI [bot]
2026-08-25 22:13:17 -05:00
parent 2f0ec679ec
commit 31a37f5a3c
67 changed files with 6134 additions and 137 deletions

View File

@@ -48,6 +48,7 @@ CTRL_FLAG_MISSING_INPUTS = 1 << 0
CTRL_FLAG_RK_OVERRUN = 1 << 1
SMOOTH_STEER_W0 = 46.0
SMOOTH_STEER_ZETA = 1.0
SMOOTH_STEER_HOLD_FRAMES = 50
LAT_SMOOTH_SECONDS = 0.0
@@ -100,6 +101,7 @@ class Controls(IQControlsLayer):
self.VM = VehicleModel(self.CP)
self.smooth_steer = PT2Filter(SMOOTH_STEER_W0, SMOOTH_STEER_ZETA, DT_CTRL)
self.smooth_steer_inactive_frames = SMOOTH_STEER_HOLD_FRAMES
self.is_curvature_car = self.CP.steerControlType == car.CarParams.SteerControlType.curvatureDEPRECATED
if self.is_curvature_car and self.params.get("EnableSmoothSteer") is None:
self.params.put_bool("EnableSmoothSteer", True)
@@ -235,7 +237,8 @@ class Controls(IQControlsLayer):
else:
new_desired_curvature = model_v2.action.desiredCurvature
if self.is_curvature_car and self.enable_smooth_steer and CC.latActive:
self.smooth_steer_inactive_frames = 0 if CC.latActive else self.smooth_steer_inactive_frames + 1
if self.is_curvature_car and self.enable_smooth_steer and self.smooth_steer_inactive_frames < SMOOTH_STEER_HOLD_FRAMES:
new_desired_curvature = self.smooth_steer.update(new_desired_curvature)
else:
self.smooth_steer.reset(new_desired_curvature)

View File

@@ -13,7 +13,8 @@ def dmonitoringd_thread():
sm = messaging.SubMaster(['driverStateV2', 'extrinsicsCalibration', 'carState', 'selfdriveState', 'modelV2',
'carControl'], poll='driverStateV2')
DM = DriverMonitoring(rhd_saved=params.get_bool("IsRhdDetected"), always_on=params.get_bool("AlwaysOnDM"))
DM = DriverMonitoring(rhd_saved=params.get_bool("IsRhdDetected"), always_on=params.get_bool("AlwaysOnDM"),
force_rhd=params.get_bool("ForceRHDForBSM"))
demo_mode=False
# 20Hz <- dmonitoringmodeld
@@ -36,10 +37,11 @@ def dmonitoringd_thread():
# load live always-on toggle
if sm['driverStateV2'].frameId % 40 == 1:
DM.always_on = params.get_bool("AlwaysOnDM")
DM.force_rhd = params.get_bool("ForceRHDForBSM")
demo_mode = params.get_bool("IsDriverViewEnabled")
# save rhd virtual toggle every 5 mins
if (sm['driverStateV2'].frameId % 6000 == 0 and not demo_mode and
if (sm['driverStateV2'].frameId % 6000 == 0 and not demo_mode and not DM.force_rhd and
DM.wheelpos.prob_offseter.filtered_stat.n > DM.settings._WHEELPOS_FILTER_MIN_COUNT and
DM.wheel_on_right == (DM.wheelpos.prob_offseter.filtered_stat.M > DM.settings._WHEELPOS_THRESHOLD)):
params.put_bool_nonblocking("IsRhdDetected", DM.wheel_on_right)

View File

@@ -145,7 +145,7 @@ def face_orientation_from_net(angles_desc, pos_desc, rpy_calib):
class DriverMonitoring:
def __init__(self, rhd_saved=False, settings=None, always_on=False):
def __init__(self, rhd_saved=False, settings=None, always_on=False, force_rhd=False):
# init policy settings
self.settings = settings if settings is not None else DRIVER_MONITOR_SETTINGS(device_type=HARDWARE.get_device_type())
@@ -158,6 +158,7 @@ class DriverMonitoring:
self.blink = DriverBlink()
self.always_on = always_on
self.force_rhd = force_rhd
self.distracted_types = []
self.driver_distracted = False
self.driver_distraction_filter = FirstOrderFilter(0., self.settings._DISTRACTED_FILTER_TS, self.settings._DT_DMON)
@@ -268,18 +269,20 @@ class DriverMonitoring:
def _update_states(self, driver_state, cal_rpy, car_speed, op_engaged, standstill, demo_mode=False):
rhd_pred = driver_state.wheelOnRightProb
# calibrates only when there's movement and either face detected
if car_speed > self.settings._WHEELPOS_CALIB_MIN_SPEED and (driver_state.leftDriverData.faceProb > self.settings._FACE_THRESHOLD or
if not self.force_rhd and car_speed > self.settings._WHEELPOS_CALIB_MIN_SPEED and (driver_state.leftDriverData.faceProb > self.settings._FACE_THRESHOLD or
driver_state.rightDriverData.faceProb > self.settings._FACE_THRESHOLD):
self.wheelpos.prob_offseter.push_and_update(rhd_pred)
self.wheelpos.prob_calibrated = self.wheelpos.prob_offseter.filtered_stat.n > self.settings._WHEELPOS_FILTER_MIN_COUNT
if self.wheelpos.prob_calibrated or demo_mode:
if self.force_rhd:
self.wheel_on_right = True
elif self.wheelpos.prob_calibrated or demo_mode:
self.wheel_on_right = self.wheelpos.prob_offseter.filtered_stat.M > self.settings._WHEELPOS_THRESHOLD
else:
self.wheel_on_right = self.wheel_on_right_default # use default/saved if calibration is unfinished
# make sure no switching when engaged
if op_engaged and self.wheel_on_right_last is not None and self.wheel_on_right_last != self.wheel_on_right and not demo_mode:
if not self.force_rhd and op_engaged and self.wheel_on_right_last is not None and self.wheel_on_right_last != self.wheel_on_right and not demo_mode:
self.wheel_on_right = self.wheel_on_right_last
driver_data = driver_state.rightDriverData if self.wheel_on_right else driver_state.leftDriverData
if not all(len(x) > 0 for x in (driver_data.faceOrientation, driver_data.facePosition,

View File

@@ -247,6 +247,22 @@ class TestMonitoring:
dm._update_states(ds, [0., 0., 0.], 20.0, True, False)
assert dm.wheel_on_right
def test_state_update_forces_rhd(self):
dm = DriverMonitoring(force_rhd=True)
dm.wheel_on_right_last = False
dm.wheelpos.prob_offseter.filtered_stat.M = 0.0
dm.wheelpos.prob_offseter.filtered_stat.n = dm.settings._WHEELPOS_FILTER_MIN_COUNT + 1
ds = log.DriverStateV2.new_message()
ds.wheelOnRightProb = 0.0
set_driver_data(ds.rightDriverData)
dm._update_states(ds, [0., 0., 0.], 20.0, True, False)
assert dm.wheel_on_right
assert dm.face_detected
assert dm.wheelpos.prob_offseter.filtered_stat.n == dm.settings._WHEELPOS_FILTER_MIN_COUNT + 1
assert dm.get_state_packet().driverMonitoringState.isRHD
def test_state_update_rejects_incomplete_driver_data(self):
dm = DriverMonitoring()
dm._update_states(log.DriverStateV2.new_message(), [0., 0., 0.], 0.0, False, False)

View File

@@ -93,6 +93,33 @@ class EngagedConfirmationButton(BigButton):
self.set_click_callback(lambda: _engaged_confirmation_click(callback, action_text, icon, exit_on_confirm=exit_on_confirm, red=red))
class ForceOffroadButton(BigButton):
def __init__(self):
self._offroad_icon = gui_app.texture("icons/iq/square-parking.png", 64, 64)
super().__init__(tr("force\noffroad"), "", self._offroad_icon)
self.set_press_effect_enabled(False)
self._label.set_font_size(40)
self._label.set_line_height(0.95)
self.set_click_callback(self._on_click)
self._sync_from_params()
def _forced(self) -> bool:
return ui_state.params.get_bool("IQAlwaysOffroad")
def _on_click(self):
forced = self._forced()
action = tr("disable force offroad") if forced else tr("force offroad")
_engaged_confirmation_click(lambda: ui_state.params.put_bool("IQAlwaysOffroad", not forced),
action, self._offroad_icon, exit_on_confirm=False)
def _sync_from_params(self):
self.set_text(tr("disable\nforce offroad") if self._forced() else tr("force\noffroad"))
def _update_state(self):
super()._update_state()
self._sync_from_params()
class DeviceInfoLayoutMici(Widget):
def __init__(self):
super().__init__()
@@ -226,6 +253,7 @@ class DeviceLayoutMici(NavScroller):
terms_btn,
regulatory_btn,
reset_calibration_btn,
ForceOffroadButton(),
reboot_btn,
self._power_off_btn,
])

View File

@@ -1830,6 +1830,31 @@ msgstr ""
msgid "power off"
msgstr ""
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr ""
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr ""
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
#: openpilot/selfdrive/ui/mici/layouts/onboarding.py:100
#, python-brace-format
msgid ""

View File

@@ -3386,6 +3386,20 @@ msgstr "الجهاز"
msgid "device ID"
msgstr "معرّف الجهاز"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"إلغاء\n"
"فرض التوقف"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "إلغاء فرض وضع التوقف"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3543,11 +3557,26 @@ msgstr "لـ \"{}\""
msgid "for private branch updates"
msgstr "لتحديثات الفروع الخاصة"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"فرض\n"
"وضع التوقف"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "فرض واجهة mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "فرض وضع التوقف"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3453,6 +3453,20 @@ msgstr "gerät"
msgid "device ID"
msgstr "geräte-ID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"parkmodus\n"
"freigeben"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "parkmodus freigeben"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3610,11 +3624,26 @@ msgstr "für „{}“"
msgid "for private branch updates"
msgstr "für Updates aus privaten Branches"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"parkmodus\n"
"erzwingen"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "mici-oberfläche erzwingen"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "parkmodus erzwingen"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3411,6 +3411,20 @@ msgstr "device"
msgid "device ID"
msgstr "device ID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"disable\n"
"force offroad"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "disable force offroad"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3568,11 +3582,26 @@ msgstr "for \"{}\""
msgid "for private branch updates"
msgstr "for private branch updates"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"force\n"
"offroad"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "force mici UI"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "force offroad"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3458,6 +3458,20 @@ msgstr "dispositivo"
msgid "device ID"
msgstr "ID del dispositivo"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"salir de\n"
"aparcado"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "desactivar aparcado forzado"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3615,11 +3629,26 @@ msgstr "para «{}»"
msgid "for private branch updates"
msgstr "para actualizaciones de ramas privadas"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"forzar\n"
"aparcado"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "forzar interfaz mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "forzar aparcado"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3475,6 +3475,20 @@ msgstr "appareil"
msgid "device ID"
msgstr "ID appareil"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"quitter\n"
"hors route"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "désactiver hors route forcé"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3632,11 +3646,26 @@ msgstr "pour \"{}\""
msgid "for private branch updates"
msgstr "pour les mises à jour de branches privées"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"forcer\n"
"hors route"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "forcer l'interface mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "forcer hors route"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3281,6 +3281,20 @@ msgstr "デバイス"
msgid "device ID"
msgstr "デバイスID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"強制オフロード\n"
"解除"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "強制オフロードを解除"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3438,11 +3452,26 @@ msgstr "「{}」向け"
msgid "for private branch updates"
msgstr "プライベートブランチの更新用"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"強制\n"
"オフロード"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "mici UIを強制"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "強制オフロード"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3303,6 +3303,20 @@ msgstr "기기"
msgid "device ID"
msgstr "기기 ID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"강제 오프로드\n"
"해제"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "강제 오프로드 해제"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3460,11 +3474,26 @@ msgstr "\"{}\"용"
msgid "for private branch updates"
msgstr "비공개 브랜치 업데이트용"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"강제\n"
"오프로드"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "mici UI 강제"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "강제 오프로드"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3450,6 +3450,20 @@ msgstr "urządzenie"
msgid "device ID"
msgstr "ID urządzenia"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"wyłącz\n"
"wymuszenie"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "wyłącz wymuszony postój"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3607,11 +3621,26 @@ msgstr "dla „{}”"
msgid "for private branch updates"
msgstr "do aktualizacji z prywatnych gałęzi"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"wymuś\n"
"postój"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "wymuś interfejs mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "wymuś postój"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3452,6 +3452,20 @@ msgstr "dispositivo"
msgid "device ID"
msgstr "ID do dispositivo"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"sair de\n"
"estacionado"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "desativar estacionado forçado"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3609,11 +3623,26 @@ msgstr "para \"{}\""
msgid "for private branch updates"
msgstr "para atualizações de branches privadas"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"forçar\n"
"estacionado"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "forçar interface mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "forçar estacionado"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3392,6 +3392,20 @@ msgstr "อุปกรณ์"
msgid "device ID"
msgstr "รหัสอุปกรณ์"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"ปิดโหมด\n"
"จอดบังคับ"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "ปิดโหมดจอดแบบบังคับ"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3549,11 +3563,26 @@ msgstr "สำหรับ \"{}\""
msgid "for private branch updates"
msgstr "สำหรับการอัปเดตจากสาขาส่วนตัว"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"บังคับ\n"
"โหมดจอด"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "บังคับใช้อินเทอร์เฟซ mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "บังคับโหมดจอด"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3427,6 +3427,20 @@ msgstr "cihaz"
msgid "device ID"
msgstr "cihaz kimliği"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"zorlamayı\n"
"kapat"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "park zorlamasını kapat"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3584,11 +3598,26 @@ msgstr "\"{}\" için"
msgid "for private branch updates"
msgstr "özel dal güncellemeleri için"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"park modunu\n"
"zorla"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "mici arayüzünü zorla"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "park modunu zorla"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3436,6 +3436,20 @@ msgstr "пристрій"
msgid "device ID"
msgstr "ID пристрою"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"вимкнути\n"
"примус"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "вимкнути примусовий офроуд"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3593,11 +3607,26 @@ msgstr "для \"{}\""
msgid "for private branch updates"
msgstr "для оновлень із приватних гілок"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"офроуд\n"
"примусово"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "примусовий інтерфейс mici"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "примусовий офроуд"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3260,6 +3260,20 @@ msgstr "设备"
msgid "device ID"
msgstr "设备 ID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"关闭\n"
"强制驻车"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "关闭强制驻车"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3417,11 +3431,26 @@ msgstr "用于“{}”"
msgid "for private branch updates"
msgstr "用于私有分支更新"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"强制\n"
"驻车"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "强制使用 mici 界面"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "强制驻车"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -3262,6 +3262,20 @@ msgstr "裝置"
msgid "device ID"
msgstr "裝置 ID"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"disable\n"
"force offroad"
msgstr ""
"關閉\n"
"強制駐車"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "disable force offroad"
msgstr "關閉強制駐車"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:56
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:190
#: openpilot/selfdrive/ui/mici/layouts/settings/network/network_layout.py:199
@@ -3419,11 +3433,26 @@ msgstr "適用於「{}」"
msgid "for private branch updates"
msgstr "用於私有分支更新"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:99
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:116
#, python-brace-format
msgid ""
"force\n"
"offroad"
msgstr ""
"強制\n"
"駐車"
#: openpilot/selfdrive/ui/mici/layouts/settings/display.py:28
#, python-brace-format
msgid "force mici UI"
msgstr "強制使用 mici 介面"
#: openpilot/selfdrive/ui/mici/layouts/settings/device.py:111
#, python-brace-format
msgid "force offroad"
msgstr "強制駐車"
#: openpilot/selfdrive/ui/mici/layouts/settings/network/wifi_ui.py:247
#, python-brace-format
msgid "forgetting..."

View File

@@ -13,7 +13,7 @@ from iqpilot.selfdrive.ui.ui_state import ui_state
_FPS_OVERRIDE = os.getenv("FPS")
UI_OFFROAD_FPS = int(os.getenv("UI_OFFROAD_FPS", _FPS_OVERRIDE or "60"))
UI_ONROAD_FPS = int(os.getenv("UI_ONROAD_FPS", _FPS_OVERRIDE or "20"))
UI_ONROAD_FPS = int(os.getenv("UI_ONROAD_FPS", _FPS_OVERRIDE or "60"))
def main():