Compare commits

..

19 Commits

Author SHA1 Message Date
royjr
978366d817 Merge branch 'master' into visuals-hide-camera 2026-06-08 23:54:39 -04:00
royjr
e97dd7f9cd Merge branch 'master' into visuals-hide-camera 2026-06-08 23:45:45 -04:00
royjr
d3c05b2ef8 yaml 2026-06-08 23:45:28 -04:00
royjr
74f4f0f10e Merge branch 'master' into visuals-hide-camera 2026-06-08 23:23:11 -04:00
royjr
0491242b4a Merge branch 'master' into visuals-hide-camera 2026-03-15 15:14:12 -04:00
royjr
1b89608ccc Merge branch 'master' into visuals-hide-camera 2026-03-02 02:42:15 -05:00
royjr
53a24655d2 move to visuals 2026-02-13 22:18:08 -05:00
royjr
c9f92a8c76 no mici toggle 2026-02-13 22:11:36 -05:00
royjr
10b1d673c9 Apply description suggestion from @sunnyhaibin
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2026-02-13 22:10:02 -05:00
Jason Wen
7080167daf Merge branch 'master' into visuals-hide-camera 2026-02-13 17:03:34 -05:00
Jason Wen
c7a1c70504 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into visuals-hide-camera
# Conflicts:
#	selfdrive/ui/sunnypilot/ui_state.py
2026-02-13 16:55:01 -05:00
royjr
c6a6caf6ff Merge branch 'master' into visuals-hide-camera 2026-02-05 00:52:57 -05:00
royjr
8d49a44f52 Merge branch 'master' into visuals-hide-camera 2025-12-31 15:09:29 -05:00
royjr
3434ca9d3e bool 2025-12-31 14:19:32 -05:00
royjr
e4f8a5edd1 Update params_keys.h 2025-12-29 14:45:47 -05:00
royjr
1f4f9bd4bd big ui 2025-12-29 02:00:42 -05:00
royjr
455e730c4c simpler 2025-12-29 01:53:12 -05:00
royjr
b243d4e356 fix param 2025-12-29 01:12:00 -05:00
royjr
de0550d47b init 2025-12-29 01:06:47 -05:00
13 changed files with 17 additions and 44 deletions

View File

@@ -54,6 +54,7 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"GsmRoaming", {PERSISTENT | BACKUP, BOOL}},
{"HardwareSerial", {PERSISTENT, STRING}},
{"HasAcceptedTerms", {PERSISTENT, STRING, "0"}},
{"HideCamera", {PERSISTENT | BACKUP, BOOL, "0"}},
{"InstallDate", {PERSISTENT, TIME}},
{"IsDriverViewEnabled", {CLEAR_ON_MANAGER_START, BOOL}},
{"IsEngaged", {PERSISTENT, BOOL}},
@@ -178,7 +179,6 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"OnroadUploads", {PERSISTENT | BACKUP, BOOL, "1"}},
{"QuickBootToggle", {PERSISTENT | BACKUP, BOOL, "0"}},
{"QuietMode", {PERSISTENT | BACKUP, BOOL, "0"}},
{"RadarTracks", {PERSISTENT | BACKUP, BOOL, "0"}},
{"RainbowMode", {PERSISTENT | BACKUP, BOOL, "0"}},
{"RocketFuel", {PERSISTENT | BACKUP, BOOL, "0"}},
{"ShowAdvancedControls", {PERSISTENT | BACKUP, BOOL, "0"}},

View File

@@ -21,10 +21,8 @@ class TogglesLayoutMici(NavScroller):
record_front = BigParamControl("record & upload driver camera", "RecordFront", toggle_callback=restart_needed_callback)
record_mic = BigParamControl("record & upload mic audio", "RecordAudio", toggle_callback=restart_needed_callback)
enable_openpilot = BigParamControl("enable sunnypilot", "OpenpilotEnabledToggle", toggle_callback=restart_needed_callback)
radar_tracks = BigParamControl("radar tracks", "RadarTracks")
self._scroller.add_widgets([
radar_tracks,
self._personality_toggle,
self._experimental_btn,
is_metric_toggle,
@@ -37,7 +35,6 @@ class TogglesLayoutMici(NavScroller):
# Toggle lists
self._refresh_toggles = (
("RadarTracks", radar_tracks),
("ExperimentalMode", self._experimental_btn),
("IsMetric", is_metric_toggle),
("IsLdwEnabled", ldw_toggle),

View File

@@ -213,6 +213,8 @@ class AugmentedRoadView(CameraView):
# Render the base camera view
super()._render(self._content_rect)
if ui_state.hide_camera:
rl.draw_rectangle_rec(self._content_rect, rl.BLACK)
# Draw all UI overlays
self._model_renderer.render(self._content_rect)

View File

@@ -153,9 +153,6 @@ class ModelRenderer(Widget, ModelRendererSP):
self._draw_lane_lines()
self._draw_path(sm)
if ui_state.radar_tracks and sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame:
self.radar_tracks.draw_radar_tracks(sm['liveTracks'], self._map_to_screen, self._path_offset_z, track_size=3)
# if render_lead_indicator and radar_state:
# self._draw_lead_indicator()

View File

@@ -86,6 +86,8 @@ class AugmentedRoadView(CameraView, AugmentedRoadViewSP):
# Render the base camera view
super()._render(rect)
if ui_state.hide_camera:
rl.draw_rectangle_rec(self._content_rect, rl.BLACK)
# Draw all UI overlays
self.model_renderer.render(self._content_rect)

View File

@@ -135,9 +135,6 @@ class ModelRenderer(Widget, ChevronMetrics, ModelRendererSP):
self._draw_lane_lines()
self._draw_path(sm)
if ui_state.radar_tracks and sm.valid['liveTracks'] and sm.recv_frame['liveTracks'] >= ui_state.started_frame:
self.radar_tracks.draw_radar_tracks(sm['liveTracks'], self._map_to_screen, self._path_offset_z)
if render_lead_indicator and radar_state:
self._draw_lead_indicator()
self.chevron_metrics.draw_lead_status(sm, radar_state, self._rect, self._lead_vehicles)

View File

@@ -93,6 +93,11 @@ class VisualsLayout(Widget):
"This displays what the car is currently doing, not what the planner is requesting."),
None,
),
"HideCamera": (
lambda: tr("Hide Camera"),
tr("Hide the camera live view from the driving screen."),
None,
),
}
self._toggles = {}
for param, (title, desc, callback) in self._toggle_defs.items():

View File

@@ -6,12 +6,9 @@ See the LICENSE.md file in the root directory for more details.
"""
from openpilot.selfdrive.ui.sunnypilot.onroad.chevron_metrics import ChevronMetrics
from openpilot.selfdrive.ui.sunnypilot.onroad.rainbow_path import RainbowPath
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import RadarTracks
class ModelRendererSP:
def __init__(self):
self.rainbow_path = RainbowPath()
self.chevron_metrics = ChevronMetrics()
self.radar_tracks = RadarTracks()

View File

@@ -1,23 +0,0 @@
"""
Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors.
This file is part of sunnypilot and is licensed under the MIT License.
See the LICENSE.md file in the root directory for more details.
"""
import math
import pyray as rl
class RadarTracks:
def draw_radar_tracks(self, live_tracks, map_to_screen, path_offset_z, track_size=6):
for track in live_tracks.points:
d_rel, y_rel, v_rel, a_rel = track.dRel, track.yRel, track.vRel, track.aRel
if not (math.isfinite(d_rel) and math.isfinite(y_rel) and math.isfinite(v_rel) and math.isfinite(a_rel)):
continue
pt = map_to_screen(d_rel, -y_rel, path_offset_z)
if pt is None:
continue
x, y = pt
rl.draw_circle(int(x), int(y), track_size, rl.Color(0, 255, 64, 255))

View File

@@ -150,6 +150,7 @@ class UIStateSP:
self.chevron_metrics = self.params.get("ChevronInfo")
self.custom_interactive_timeout = self.params.get("InteractivityTimeout", return_default=True)
self.developer_ui = self.params.get("DevUIInfo")
self.hide_camera = self.params.get_bool("HideCamera")
self.hide_v_ego_ui = self.params.get_bool("HideVEgoUI")
self.onroad_brightness = int(float(self.params.get("OnroadScreenOffBrightness", return_default=True)))
self.onroad_brightness_timer_param = self.params.get("OnroadScreenOffTimer", return_default=True)
@@ -169,7 +170,6 @@ class UIStateSP:
self.turn_signals = self.params.get_bool("ShowTurnSignals")
self.boot_offroad_mode = self.params.get("DeviceBootMode", return_default=True)
self.always_offroad = self.params.get_bool("OffroadMode")
self.radar_tracks = self.params.get_bool("RadarTracks")
if not self._sp_initialized:
self._sp_initialized = True

View File

@@ -63,7 +63,6 @@ class UIState(UIStateSP):
"liveParameters",
"testJoystick",
"rawAudioData",
"liveTracks",
] + self.sm_services_ext
)

View File

@@ -1297,10 +1297,10 @@
"description": "When enabled, visual turn indicators are drawn on the HUD."
},
{
"key": "RadarTracks",
"key": "HideCamera",
"widget": "toggle",
"title": "Radar Tracks",
"description": "Show radar tracks"
"title": "Hide Camera",
"description": "Hide the camera live view from the driving screen."
},
{
"key": "RoadNameToggle",

View File

@@ -24,10 +24,10 @@ sections:
widget: toggle
title: Display Turn Signals
description: When enabled, visual turn indicators are drawn on the HUD.
- key: RadarTracks
- key: HideCamera
widget: toggle
title: Radar Tracks
description: Show radar tracks
title: Hide Camera
description: Hide the camera live view from the driving screen.
- key: RoadNameToggle
widget: toggle
title: Display Road Name