PlotJuggler built its name on time-series plots. PlotJuggler 4 (4.0.0, 21 September 2026) keeps the plots and adds the two views robotics data always needed beside them: time-synchronised video and GPU-rendered 3D. Cameras, point clouds, robot models and numeric curves now share one timeline in one application, for recorded data and live streams alike. This guide explains what PJ4 documents about these views. Hub: PlotJuggler 4; files: Download page; installation: Install hub.
Why multimodal changes the debugging workflow
Sensor numbers rarely fail alone — they fail in a place, at a moment, often in view of a camera. The pre-PJ4 workflow forced you to reconstruct that moment across tools: plots in one window, a video player in another, a 3D viewer in a third, with three playheads to keep aligned by eye. PJ4’s premise is a single application where you load several recordings, align their timelines (including per-dataset time offsets), and move through all views together. The project describes PJ4 exactly this way: an extensible, performant, open-source multimodal visualisation platform for recorded or live data.
Video: encoded, raw and live WebRTC
PJ4 displays images and video next to your plots, synchronised to the same timeline. It handles raw and encoded video, with H.264, H.265 and AV1 named as the encoded formats, and supports live WebRTC streaming for cameras that are broadcasting now rather than recorded earlier. MP4 is among the file formats PJ4 reads, and on the live side WebRTC joins the existing streaming family (ROS 2, MQTT, ZeroMQ, UDP, WebSocket bridges, Lab Streaming Layer). In practice: scrub to the spike in your vibration plot, and the camera frame from that instant is already on screen — no manual timestamp arithmetic.
2D annotations and markers
Video in PJ4 is not a passive picture. The documentation lists 2D annotations and markers on the imagery — the visual layer you need to flag events, mark regions of interest and communicate “look here, at this moment” to a colleague reviewing the same recording. Combined with the shared timeline, an annotation ties an observation to the exact plotted data around it, which is what makes a finding reproducible instead of anecdotal.
3D: point clouds, meshes and URDF robot models
The 3D view renders point clouds — including compressed point clouds — meshes, and URDF robot models, with GPU-accelerated rendering doing the heavy lifting. URDF support is the robotics-specific gem: the same model description your ROS stack uses to describe the robot can be the thing you watch moving in sync with its plotted joint, sensor and control series. Instead of inferring the robot’s posture from a wall of numbers, you see the posture and the numbers together.
Grids, trajectories and 3D annotations
Beyond models and clouds, PJ4’s 3D documentation lists occupancy grids (2D) and elevation grids (2.5D) — the map-like layers autonomous systems build as they move — plus 3D annotations and trajectories. A trajectory drawn through space, played against the velocity and error plots beneath it, turns “the path drifted somewhere around here” into a precise, inspectable event. Point-cloud data enters through formats such as PCD and PLY, both on PJ4’s supported file list alongside MCAP, CSV, Parquet, PX4 ULog, LeRobot and MP4.
Recorded or live — the same views
These views are not record-only. PJ4 is built for comparing test runs and analysing live data in the same application: stream over ROS 2, MQTT, ZeroMQ, UDP or WebSocket, watch a camera over WebRTC, and the plots, video and 3D stay in step. Messages are understood in ROS 1/2, Protobuf, JSON, CBOR, BSON, Apache Arrow and MessagePack encodings, with OMG IDL (DDS) parsing added during the 3.999.x previews. When the session ends, layouts — including viewports and the per-dataset offsets you set — are saved under layout schema v4, so the whole multimodal arrangement can be reopened as you left it.
What this replaces in a typical setup
- A separate video player manually synced to plots — replaced by timeline-native video with annotations.
- A standalone 3D viewer for point clouds and robot models — replaced by the integrated GPU 3D view with URDF, grids and trajectories.
- Screenshot-and-describe debugging — replaced by saved layouts that reopen the same plots, video and 3D views together.
Two honest caveats. First, none of this exists in PlotJuggler 3 — video and 3D are PJ4-only, which the PJ3 vs PJ4 comparison spells out. Second, PJ4 itself is young and has platform gaps (no macOS binary in 4.0.0, for example), so check the migration guide before rebuilding a production workflow around it. For the rest of the PJ4 story — formats, Python scripting, the Marketplace — return to What’s New in PlotJuggler 4.0.
