Compare commits

...

17 Commits

Author SHA1 Message Date
royjr
37eeb121cd Merge branch 'master' into visuals-radar-tracks 2026-03-27 16:27:10 -07:00
royjr
19a5202f4c Merge branch 'master' into visuals-radar-tracks 2026-03-02 02:44:58 -05:00
royjr
920ef49b32 no return 2026-02-05 01:01:07 -05:00
royjr
c7a37ca89e Merge branch 'master' into visuals-radar-tracks 2026-02-05 00:52:12 -05:00
royjr
45ca076aef Merge branch 'master' into visuals-radar-tracks 2025-12-31 15:26:12 -05:00
royjr
70cf5e6d52 Update params_metadata.json 2025-12-29 12:03:57 -05:00
royjr
f4c71e4918 lint 2025-12-29 10:05:17 -05:00
royjr
8408241495 Update toggles.py 2025-12-29 02:23:10 -05:00
royjr
640988673e mici toggle 2025-12-29 02:22:16 -05:00
royjr
1429975f1e Revert "force enable for now"
This reverts commit efd499448a.
2025-12-29 02:22:01 -05:00
royjr
efd499448a force enable for now 2025-12-29 00:42:38 -05:00
royjr
f7e636f089 use params 2025-12-29 00:42:19 -05:00
royjr
00187dc59e use checks 2025-12-29 00:37:19 -05:00
royjr
cde6368cf7 cleaner 2025-12-29 00:30:15 -05:00
royjr
08b56f9b33 better sp 2025-12-29 00:28:12 -05:00
royjr
78efe3a476 init sp 2025-12-29 00:21:08 -05:00
royjr
54578675c2 init 2025-12-29 00:19:17 -05:00
9 changed files with 42 additions and 0 deletions

View File

@@ -176,6 +176,7 @@ 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,8 +21,10 @@ 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,
@@ -35,6 +37,7 @@ class TogglesLayoutMici(NavScroller):
# Toggle lists
self._refresh_toggles = (
("RadarTracks", radar_tracks),
("ExperimentalMode", self._experimental_btn),
("IsMetric", is_metric_toggle),
("IsLdwEnabled", ldw_toggle),

View File

@@ -153,6 +153,9 @@ 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

@@ -135,6 +135,9 @@ 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

@@ -6,9 +6,12 @@ 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

@@ -0,0 +1,23 @@
"""
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

@@ -146,6 +146,7 @@ class UIStateSP:
self.true_v_ego_ui = self.params.get_bool("TrueVEgoUI")
self.turn_signals = self.params.get_bool("ShowTurnSignals")
self.boot_offroad_mode = self.params.get("DeviceBootMode", return_default=True)
self.radar_tracks = self.params.get_bool("RadarTracks")
class DeviceSP:

View File

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

View File

@@ -1086,6 +1086,10 @@
"title": "Quiet Mode",
"description": ""
},
"RadarTracks": {
"title": "Radar Tracks",
"description": ""
},
"RainbowMode": {
"title": "Rainbow Mode",
"description": ""