Skip to content
CARROT-WIP / OCT 2026 EDITION

PlotJuggler: inspect driving signals ​

A development tool for comparing targets and actual responses on a time axis. For ordinary support requests, start with Carrot Web log sharing.

Useful questions ​

  • When did target and actual speed diverge?
  • Is there delay or oscillation between requested acceleration and vehicle response?
  • How do driver inputs and state transitions line up with the symptom?

Plot colors depend on the layout. Identify signals and units rather than assuming green/yellow/orange have the same meaning as in old examples.

Install in the current layout ​

From the repository root in a prepared openpilot development environment:

sh
cd openpilot/tools/plotjuggler
./juggle.py --install

This installs PC tools/plugins. It is not a device-settings backup or web-install command. Check dependencies and build requirements in the original README first.

Open a saved route ​

sh
./juggle.py "<route-name>"

Use ./juggle.py -h for range, qlog, DBC and layout options. The public log-view page can provide a PlotJuggler command with the correct route identifier.

Live streaming ​

On the device shell, on the same network:

sh
cd /data/openpilot
./openpilot/cereal/messaging/bridge

On the PC development shell, in the PlotJuggler directory:

sh
ZMQ=1 ./juggle.py --stream

Start with Streaming's Cereal Subscriber. The environment-variable syntax above is POSIX shell syntax, not Windows PowerShell syntax.

Align log time with driver intervention first and compare the same signals and units. Correlation alone does not establish the control cause.


Source reference ​

Reference checked 2026-10-30 · carrot-wip · 10bf0a56.

openpilot/tools/plotjuggler/README.md · docs/user/ko/dashcam-log-sharing.md

The development branch continues to change. Check your device’s branch, commit and current settings together.