From 29afd667ccf3c72a3a2228b0608b9554e5dee1c4 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 3 Jun 2025 04:27:17 +0800 Subject: [PATCH] move onroad/driving stuff from system/ui to selfdrive/ui (#35425) * mv system/ui/onroad->selfdrive/ui/onroad * mv ui_state * fix import path * fix imports * mv cameraview * remove from application --- selfdrive/ui/onroad/__init__.py | 0 .../ui/onroad/alert_renderer.py | 2 +- .../ui/onroad/augmented_road_view.py | 13 +++++++------ .../ui/onroad}/cameraview.py | 0 .../ui/onroad}/driver_camera_view.py | 4 ++-- {system => selfdrive}/ui/onroad/driver_state.py | 2 +- {system => selfdrive}/ui/onroad/hud_renderer.py | 2 +- .../ui/onroad/model_renderer.py | 2 +- {system/ui/lib => selfdrive/ui}/ui_state.py | 0 system/ui/lib/application.py | 16 +--------------- 10 files changed, 14 insertions(+), 27 deletions(-) create mode 100644 selfdrive/ui/onroad/__init__.py rename {system => selfdrive}/ui/onroad/alert_renderer.py (99%) rename {system => selfdrive}/ui/onroad/augmented_road_view.py (93%) rename {system/ui/widgets => selfdrive/ui/onroad}/cameraview.py (100%) rename {system/ui/widgets => selfdrive/ui/onroad}/driver_camera_view.py (95%) rename {system => selfdrive}/ui/onroad/driver_state.py (99%) rename {system => selfdrive}/ui/onroad/hud_renderer.py (99%) rename {system => selfdrive}/ui/onroad/model_renderer.py (99%) rename {system/ui/lib => selfdrive/ui}/ui_state.py (100%) diff --git a/selfdrive/ui/onroad/__init__.py b/selfdrive/ui/onroad/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/system/ui/onroad/alert_renderer.py b/selfdrive/ui/onroad/alert_renderer.py similarity index 99% rename from system/ui/onroad/alert_renderer.py rename to selfdrive/ui/onroad/alert_renderer.py index 5bdfebb18c..cc1b49a6a4 100644 --- a/system/ui/onroad/alert_renderer.py +++ b/selfdrive/ui/onroad/alert_renderer.py @@ -5,7 +5,7 @@ from cereal import messaging, log from openpilot.system.hardware import TICI from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.lib.label import gui_text_box -from openpilot.system.ui.lib.ui_state import ui_state +from openpilot.selfdrive.ui.ui_state import ui_state ALERT_MARGIN = 40 diff --git a/system/ui/onroad/augmented_road_view.py b/selfdrive/ui/onroad/augmented_road_view.py similarity index 93% rename from system/ui/onroad/augmented_road_view.py rename to selfdrive/ui/onroad/augmented_road_view.py index 63404f3f9e..9a7d88e504 100644 --- a/system/ui/onroad/augmented_road_view.py +++ b/selfdrive/ui/onroad/augmented_road_view.py @@ -3,12 +3,12 @@ import pyray as rl from cereal import log from msgq.visionipc import VisionStreamType -from openpilot.system.ui.lib.ui_state import ui_state, UIStatus, UI_BORDER_SIZE -from openpilot.system.ui.onroad.alert_renderer import AlertRenderer -from openpilot.system.ui.onroad.driver_state import DriverStateRenderer -from openpilot.system.ui.onroad.hud_renderer import HudRenderer -from openpilot.system.ui.onroad.model_renderer import ModelRenderer -from openpilot.system.ui.widgets.cameraview import CameraView +from openpilot.selfdrive.ui.ui_state import ui_state, UIStatus, UI_BORDER_SIZE +from openpilot.selfdrive.ui.onroad.alert_renderer import AlertRenderer +from openpilot.selfdrive.ui.onroad.driver_state import DriverStateRenderer +from openpilot.selfdrive.ui.onroad.hud_renderer import HudRenderer +from openpilot.selfdrive.ui.onroad.model_renderer import ModelRenderer +from openpilot.selfdrive.ui.onroad.cameraview import CameraView from openpilot.system.ui.lib.application import gui_app from openpilot.common.transformations.camera import DEVICE_CAMERAS, DeviceCameraConfig, view_frame_from_device_frame from openpilot.common.transformations.orientation import rot_from_euler @@ -175,6 +175,7 @@ if __name__ == "__main__": print("***press space to switch camera view***") try: for _ in gui_app.render(): + ui_state.update() if rl.is_key_released(rl.KeyboardKey.KEY_SPACE): is_wide = road_camera_view.stream_type == VisionStreamType.VISION_STREAM_WIDE_ROAD road_camera_view.switch_stream(VisionStreamType.VISION_STREAM_ROAD if is_wide else VisionStreamType.VISION_STREAM_WIDE_ROAD) diff --git a/system/ui/widgets/cameraview.py b/selfdrive/ui/onroad/cameraview.py similarity index 100% rename from system/ui/widgets/cameraview.py rename to selfdrive/ui/onroad/cameraview.py diff --git a/system/ui/widgets/driver_camera_view.py b/selfdrive/ui/onroad/driver_camera_view.py similarity index 95% rename from system/ui/widgets/driver_camera_view.py rename to selfdrive/ui/onroad/driver_camera_view.py index 56dcbf2b9e..2f9ff2ca7a 100644 --- a/system/ui/widgets/driver_camera_view.py +++ b/selfdrive/ui/onroad/driver_camera_view.py @@ -1,11 +1,11 @@ import numpy as np import pyray as rl from cereal import messaging -from openpilot.system.ui.widgets.cameraview import CameraView from msgq.visionipc import VisionStreamType +from openpilot.selfdrive.ui.onroad.cameraview import CameraView +from openpilot.selfdrive.ui.onroad.driver_state import DriverStateRenderer from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.system.ui.lib.label import gui_label -from openpilot.system.ui.onroad.driver_state import DriverStateRenderer class DriverCameraView(CameraView): diff --git a/system/ui/onroad/driver_state.py b/selfdrive/ui/onroad/driver_state.py similarity index 99% rename from system/ui/onroad/driver_state.py rename to selfdrive/ui/onroad/driver_state.py index 8017021ee5..8e950f514e 100644 --- a/system/ui/onroad/driver_state.py +++ b/selfdrive/ui/onroad/driver_state.py @@ -1,8 +1,8 @@ import numpy as np import pyray as rl from dataclasses import dataclass +from openpilot.selfdrive.ui.ui_state import ui_state, UI_BORDER_SIZE from openpilot.system.ui.lib.application import gui_app -from openpilot.system.ui.lib.ui_state import ui_state, UI_BORDER_SIZE # Default 3D coordinates for face keypoints as a NumPy array diff --git a/system/ui/onroad/hud_renderer.py b/selfdrive/ui/onroad/hud_renderer.py similarity index 99% rename from system/ui/onroad/hud_renderer.py rename to selfdrive/ui/onroad/hud_renderer.py index 3ba2cb2280..ed0b7cc974 100644 --- a/system/ui/onroad/hud_renderer.py +++ b/selfdrive/ui/onroad/hud_renderer.py @@ -1,7 +1,7 @@ import pyray as rl from dataclasses import dataclass from cereal.messaging import SubMaster -from openpilot.system.ui.lib.ui_state import ui_state, UIStatus +from openpilot.selfdrive.ui.ui_state import ui_state, UIStatus from openpilot.system.ui.lib.application import gui_app, FontWeight from openpilot.common.conversions import Conversions as CV diff --git a/system/ui/onroad/model_renderer.py b/selfdrive/ui/onroad/model_renderer.py similarity index 99% rename from system/ui/onroad/model_renderer.py rename to selfdrive/ui/onroad/model_renderer.py index eedf10cc4f..38951fb504 100644 --- a/system/ui/onroad/model_renderer.py +++ b/selfdrive/ui/onroad/model_renderer.py @@ -4,8 +4,8 @@ import pyray as rl from cereal import messaging, car from dataclasses import dataclass, field from openpilot.common.params import Params +from openpilot.selfdrive.ui.ui_state import ui_state from openpilot.system.ui.lib.application import DEFAULT_FPS -from openpilot.system.ui.lib.ui_state import ui_state from openpilot.system.ui.lib.shader_polygon import draw_polygon diff --git a/system/ui/lib/ui_state.py b/selfdrive/ui/ui_state.py similarity index 100% rename from system/ui/lib/ui_state.py rename to selfdrive/ui/ui_state.py diff --git a/system/ui/lib/application.py b/system/ui/lib/application.py index 2e3553038a..fcef55d531 100644 --- a/system/ui/lib/application.py +++ b/system/ui/lib/application.py @@ -36,16 +36,6 @@ class FontWeight(IntEnum): BLACK = 8 -def _get_ui_state(): - """Safely import and return ui_state, or None if unavailable.""" - try: - from openpilot.system.ui.lib.ui_state import ui_state - - return ui_state - except ImportError: - return None - - class GuiApplication: def __init__(self, width: int, height: int): self._fonts: dict[FontWeight, rl.Font] = {} @@ -149,7 +139,6 @@ class GuiApplication: rl.close_window() def render(self): - ui_state = _get_ui_state() try: while not (self._window_close_requested or rl.window_should_close()): if self._render_texture: @@ -159,9 +148,6 @@ class GuiApplication: rl.begin_drawing() rl.clear_background(rl.BLACK) - if ui_state is not None: - ui_state.update() - yield if self._render_texture: @@ -206,7 +192,7 @@ class GuiApplication: # Create a character set from our keyboard layouts from openpilot.system.ui.widgets.keyboard import KEYBOARD_LAYOUTS - from openpilot.system.ui.onroad.hud_renderer import CRUISE_DISABLED_CHAR + from openpilot.selfdrive.ui.onroad.hud_renderer import CRUISE_DISABLED_CHAR all_chars = set() for layout in KEYBOARD_LAYOUTS.values(): all_chars.update(key for row in layout for key in row)