feat(perception): project recorded results into Rerun

This commit is contained in:
DCCONSTRUCTIONS
2026-07-19 17:39:13 +03:00
parent 31fc4f6567
commit 2b53168149
13 changed files with 1328 additions and 8 deletions
+25 -1
View File
@@ -3,6 +3,7 @@
from __future__ import annotations
from contextlib import suppress
from typing import Literal
from uuid import UUID
import rerun as rr
@@ -16,6 +17,9 @@ SESSION_TIMELINE = "session_time"
RECORDED_SPATIAL_VIEW_ID = UUID("5f5f11d5-3b0a-4a81-887b-2be767cba1c0")
RECORDED_ROOT_CONTAINER_ID = UUID("b02f2aca-8471-4dcb-b786-53df5a320fc8")
RECORDED_POINTS_VISUALIZER_ID = UUID("ca037ec0-8761-4417-86ee-846fa2875303")
RECORDED_CAMERA_VIEW_ID = UUID("5c1db75b-07cd-479a-903d-f4f2ed554513")
RECORDED_METRICS_VIEW_ID = UUID("f973fc11-0867-4732-ad3c-97008621fab7")
RecordedView = Literal["spatial", "perception", "metrics"]
class RecordedBlueprintError(RuntimeError):
@@ -26,6 +30,7 @@ def recorded_blueprint(
settings: RerunSceneSettings,
*,
include_initial_playback_state: bool = True,
active_view: RecordedView = "spatial",
) -> rrb.Blueprint:
accumulation = max(0.0, settings.accumulation_seconds)
time_ranges: list[rr.VisibleTimeRange] | None = None
@@ -67,7 +72,24 @@ def recorded_blueprint(
time_ranges=time_ranges,
)
spatial_view.id = RECORDED_SPATIAL_VIEW_ID
root_container = rrb.Tabs(spatial_view)
camera_view = rrb.Spatial2DView(
origin="/perception/camera",
name="Камера · распознавание",
background=[7, 8, 10, 255],
)
camera_view.id = RECORDED_CAMERA_VIEW_ID
metrics_view = rrb.TimeSeriesView(
origin="/metrics/device",
name="Маршрут и время",
)
metrics_view.id = RECORDED_METRICS_VIEW_ID
active_tab = {"spatial": 0, "perception": 1, "metrics": 2}[active_view]
root_container = rrb.Tabs(
spatial_view,
camera_view,
metrics_view,
active_tab=active_tab,
)
root_container.id = RECORDED_ROOT_CONTAINER_ID
if include_initial_playback_state:
@@ -95,6 +117,7 @@ def recorded_blueprint_rrd(
*,
application_id: str = APPLICATION_ID,
recording_id: str,
active_view: RecordedView = "spatial",
) -> bytes:
"""Serialize a bounded active blueprint update without recorded data."""
@@ -109,6 +132,7 @@ def recorded_blueprint_rrd(
recorded_blueprint(
settings,
include_initial_playback_state=False,
active_view=active_view,
),
make_active=True,
make_default=False,