better count

This commit is contained in:
royjr
2026-07-14 15:11:31 -04:00
parent 0a222d406f
commit 65ed51d908
3 changed files with 53 additions and 15 deletions
+33 -12
View File
@@ -10,7 +10,7 @@ from openpilot.selfdrive.ui.mici.onroad.hud_renderer import HudRenderer
from openpilot.selfdrive.ui.mici.onroad.model_renderer import ModelRenderer
from openpilot.selfdrive.ui.mici.onroad.confidence_ball import ConfidenceBall
from openpilot.selfdrive.ui.mici.onroad.cameraview import CameraView
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_status
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_columns
from openpilot.system.ui.lib.application import FontWeight, gui_app, MousePos, MouseEvent
from openpilot.system.ui.widgets.label import UnifiedLabel
from openpilot.system.ui.widgets import Widget
@@ -160,11 +160,16 @@ class AugmentedRoadView(CameraView):
text_color=rl.Color(255, 255, 255, int(255 * 0.9)),
alignment=rl.GuiTextAlignment.TEXT_ALIGN_CENTER,
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE)
self._radar_tracks_label = UnifiedLabel("none", 26, FontWeight.SEMI_BOLD,
text_color=rl.Color(0, 255, 64, 255),
alignment=rl.GuiTextAlignment.TEXT_ALIGN_RIGHT,
alignment_vertical=rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP,
wrap_text=False)
radar_text_args = {
"font_size": 26,
"font_weight": FontWeight.SEMI_BOLD,
"text_color": rl.Color(0, 255, 64, 255),
"alignment": rl.GuiTextAlignment.TEXT_ALIGN_RIGHT,
"alignment_vertical": rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP,
"wrap_text": False,
}
self._radar_ranges_label = UnifiedLabel("", **radar_text_args)
self._radar_counts_label = UnifiedLabel("none", **radar_text_args)
self._fade_texture = gui_app.texture("icons_mici/onroad/onroad_fade.png")
@@ -176,10 +181,12 @@ class AugmentedRoadView(CameraView):
super()._update_state()
if ui_state.sm.updated["liveTracks"]:
status = format_radar_tracks_onroad_status(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else "none"
self._radar_tracks_label.set_text(status)
status = format_radar_tracks_onroad_columns(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else ("", "none")
self._radar_ranges_label.set_text(status[0])
self._radar_counts_label.set_text(status[1])
elif not ui_state.sm.alive["liveTracks"]:
self._radar_tracks_label.set_text("none")
self._radar_ranges_label.set_text("")
self._radar_counts_label.set_text("none")
# update offroad label
if ui_state.panda_type == log.PandaState.PandaType.unknown:
@@ -234,7 +241,15 @@ class AugmentedRoadView(CameraView):
if ui_state.radar_tracks:
radar_status_width = self._content_rect.width - 90
radar_status_height = max(42, self._radar_tracks_label.get_content_height(int(radar_status_width - 16)) + 10)
radar_status_inner_width = int(radar_status_width - 16)
radar_count_width = 64
radar_column_gap = 6
radar_range_width = radar_status_inner_width - radar_count_width - radar_column_gap
radar_status_height = max(
42,
self._radar_ranges_label.get_content_height(radar_range_width) + 10,
self._radar_counts_label.get_content_height(radar_count_width) + 10,
)
radar_status_rect = rl.Rectangle(
self._content_rect.x + 78,
self._content_rect.y + 8,
@@ -242,10 +257,16 @@ class AugmentedRoadView(CameraView):
radar_status_height,
)
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
self._radar_tracks_label.render(rl.Rectangle(
self._radar_ranges_label.render(rl.Rectangle(
radar_status_rect.x + 8,
radar_status_rect.y + 5,
radar_status_rect.width - 16,
radar_range_width,
radar_status_rect.height - 10,
))
self._radar_counts_label.render(rl.Rectangle(
radar_status_rect.x + 8 + radar_range_width + radar_column_gap,
radar_status_rect.y + 5,
radar_count_width,
radar_status_rect.height - 10,
))
+12 -2
View File
@@ -24,11 +24,21 @@ def format_radar_tracks_status(live_tracks) -> str:
def format_radar_tracks_onroad_status(live_tracks) -> str:
range_text, count_text = format_radar_tracks_onroad_columns(live_tracks)
if not range_text:
return count_text
return "\n".join(f"{radar_range} {track_count}" for radar_range, track_count in zip(range_text.splitlines(), count_text.splitlines(), strict=True))
def format_radar_tracks_onroad_columns(live_tracks) -> tuple[str, str]:
sources = sorted(live_tracks.trackSources, key=lambda source: (source.startAddress, source.endAddress, source.bus))
if not sources:
return "none"
return "", "none"
return "\n".join(f"0x{source.startAddress:X}-0x{source.endAddress:X} - {source.trackCount}" for source in sources)
range_text = "\n".join(f"0x{source.startAddress:X}-0x{source.endAddress:X} -" for source in sources)
count_text = "\n".join(str(source.trackCount) for source in sources)
return range_text, count_text
class RadarTracks:
@@ -1,6 +1,7 @@
from cereal import car
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_status, format_radar_tracks_status
from openpilot.selfdrive.ui.sunnypilot.onroad.radar_tracks import format_radar_tracks_onroad_columns, format_radar_tracks_onroad_status, \
format_radar_tracks_status
def test_format_radar_tracks_status_none():
@@ -8,6 +9,7 @@ def test_format_radar_tracks_status_none():
assert format_radar_tracks_status(live_tracks) == "none"
assert format_radar_tracks_onroad_status(live_tracks) == "none"
assert format_radar_tracks_onroad_columns(live_tracks) == ("", "none")
def test_format_radar_tracks_status_range_and_count():
@@ -17,6 +19,7 @@ def test_format_radar_tracks_status_range_and_count():
assert format_radar_tracks_status(live_tracks) == "0x500-0x51F · 2 tracks"
assert format_radar_tracks_onroad_status(live_tracks) == "0x500-0x51F - 2"
assert format_radar_tracks_onroad_columns(live_tracks) == ("0x500-0x51F -", "2")
def test_format_radar_tracks_status_deduplicates_and_sorts_ranges():
@@ -30,3 +33,7 @@ def test_format_radar_tracks_status_deduplicates_and_sorts_ranges():
assert format_radar_tracks_status(live_tracks) == "0x210-0x21F, 0x500-0x51F · 1 track"
assert format_radar_tracks_onroad_status(live_tracks) == "0x210-0x21F - 1\n0x500-0x51F - 2\n0x500-0x51F - 3"
assert format_radar_tracks_onroad_columns(live_tracks) == (
"0x210-0x21F -\n0x500-0x51F -\n0x500-0x51F -",
"1\n2\n3",
)