Drag & drop your .json and .mp4 files onto the window, or use the Load JSON / Load Video buttons.
Press Play (or Spacebar). The app automatically syncs the radar data to the video based on their timestamps.
Use the timeline, sidebar (M), zoom (G), and Data Explorer (I) to analyze the synchronized data.
Main p5.js visualization. Shows:
- Point Clouds (Points)
- Object Trajectories (Lines)
- Track Markers (+)
- Ego Vehicle (Box at bottom)
Overlays (top-left):
Frame: 123 Time: 12:30:01.456
Mode: Color by SNR Drift: -15ms
Shows the synchronized video feed.
Overlays (top-left):
Frame: 110 Time: 12:30:01.440
Shows Ego Speed vs. CAN Speed over time.
A red line indicates the current playback position.
Main controls for playback.
- Play / Pause (Space), Stop
- Timeline slider (Click, drag, or Scroll Wheel to seek)
- Playback Speed slider
Click โฐ (or M)
to open all toggles.
Click โถ (or I)
to open data inspector.
Load .json and .mp4 files via Drag & Drop anywhere on the page or by using the Load buttons. Files are cached in `IndexedDB` for instant reloads.
The app uses a `performance.now()` master clock to drive playback, correcting any video drift. The time offset is automatically calculated from filenames (e.g., `fHist_...` and `WIN_...`).
Click or drag the timeline to seek. You can also hover your mouse wheel over the slider to seek frame-by-frame (slow scroll) or scrub quickly (fast scroll).
Toggle visibility of: Tracks (T), Details
(D), Predicted Pos (P), Covariance, and
Confirmed Tracks.
Color Modes: Switch between SNR (1), Cluster (2),
Inlier (3), or Stationary (4).
TTC Colors: Customize the Time-to-Collision (TTC) risk colors.
Activates a separate, high-fidelity p5.js canvas that follows your mouse, showing a magnified view. Hover over points/tracks to see a detailed tooltip. Use the mouse wheel while in this mode to zoom in/out.
Opens a resizable panel to inspect the raw data of the *current frame*.
Tree View: Shows the full JSON structure.
Grid View: Sortable/filterable AG-Grid of point clouds or tracks.
Plot View: Click a grid header to plot that data with Chart.js.
The Load CAN button has been removed. The visualizer now expects CAN speed data
(canVehSpeed_kmph) to be included directly within the main JSON
file, associated with each radar frame.
Save Session downloads a .json file with your current file names, offset, and all UI toggle states. Load Session restores this state (requires files to be cached).
Large JSON files are parsed in a background Web Worker using a streaming parser. This prevents the UI from freezing and shows a real-time progress bar.
The app must be run from a local server due to browser security rules for modules.