IQ.Pilot Release Commit @ 24db8ae
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
])
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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..."
|
||||
|
||||
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user