Justin Newberry 891b9a1ab4 card: prepare for separate process (#31660) 7 月之前
..
layouts 891b9a1ab4 card: prepare for separate process (#31660) 7 月之前
.gitignore ba8f7e85ba juggle: gitignore leftover rlog files 3 年之前
README.md d78ebfdc45 replay: new demo route (#29215) 1 年之前
juggle.py 08bb6d822e linux-aarch64 also works for plotjuggler 8 月之前
test_plotjuggler.py 5df01b3d22 LogReader: fix plotjuggler not reading properly (#31023) 9 月之前

README.md

PlotJuggler

PlotJuggler is a tool to quickly visualize time series data, and we've written plugins to parse openpilot logs. Check out our plugins: https://github.com/commaai/PlotJuggler.

Installation

Once you've set up the openpilot environment, this command will download PlotJuggler and install our plugins:

cd tools/plotjuggler && ./juggle.py --install

Usage

$ ./juggle.py -h
usage: juggle.py [-h] [--demo] [--qlog] [--ci] [--can] [--stream] [--layout [LAYOUT]] [--install] [--dbc DBC]
                 [route_or_segment_name] [segment_count]

A helper to run PlotJuggler on openpilot routes

positional arguments:
  route_or_segment_name
                        The route or segment name to plot (cabana share URL accepted) (default: None)
  segment_count         The number of segments to plot (default: None)

optional arguments:
  -h, --help            show this help message and exit
  --demo                Use the demo route instead of providing one (default: False)
  --qlog                Use qlogs (default: False)
  --ci                  Download data from openpilot CI bucket (default: False)
  --can                 Parse CAN data (default: False)
  --stream              Start PlotJuggler in streaming mode (default: False)
  --layout [LAYOUT]     Run PlotJuggler with a pre-defined layout (default: None)
  --install             Install or update PlotJuggler + plugins (default: False)
  --dbc DBC             Set the DBC name to load for parsing CAN data. If not set, the DBC will be automatically
                        inferred from the logs. (default: None)

Examples using route name:

./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19"

Examples using segment name:

./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19--1"

Streaming

Explore live data from your car! Follow these steps to stream from your comma device to your laptop:

  • Enable wifi tethering on your comma device
  • SSH into your device and run cd /data/openpilot && ./cereal/messaging/bridge
  • On your laptop, connect to the device's wifi hotspot
  • Start PlotJuggler with ZMQ=1 ./juggle.py --stream, find the Cereal Subscriber plugin in the dropdown under Streaming, and click Start.

If streaming to PlotJuggler from a replay on your PC, simply run: ./juggle.py --stream and start the cereal subscriber.

Demo

For a quick demo, go through the installation step and run this command:

./juggle.py --demo --qlog --layout=layouts/demo.xml

Layouts

If you create a layout that's useful for others, consider upstreaming it.

Tuning

Use this layout to improve your car's tuning and generate plots for tuning PRs. Also see the tuning wiki and tuning PR template.

--layout layouts/tuning.xml

screenshot