Skip to content

PlotJuggler/pj-official-plugins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlotJuggler Ported Plugins

CI Linux CI Windows CI macOS

Plugin collection for PlotJuggler Core — CSV, Parquet, ULog, MCAP, JSON, Protobuf, ROS, ZMQ, MQTT, Foxglove Bridge, and PJ Bridge.

Building

Standalone (requires Conan 2.x)

# Build the full plugin collection
./build.sh

To work on only one plugin, pass the plugin directory:

./build.sh data_load_csv

Run ./build.sh --help to see the available arguments.

By default, build.sh installs the root conanfile.txt and builds into build/all/Release. With a plugin argument, it installs that plugin's conanfile.py, configures CMake with -DPJ_BUILD_PLUGIN=<plugin_dir>, and builds into build/<plugin_dir>/Release.

Each plugin directory has its own conanfile.py. Keep it in sync with the plugin's find_package(... REQUIRED) dependencies in CMakeLists.txt. The root conanfile.txt remains the full-repository dependency set for local full builds and scheduled CI.

As subdirectory of plotjuggler_core

No extra steps — the parent project's build system handles everything:

cd /path/to/plotjuggler_core
./build.sh

Dependencies

Via Conan (third-party)

Package Version Used by
nlohmann_json 3.12.0 Most plugins
mcap 2.1.1 data_load_mcap
arrow + parquet 23.0.1 data_load_parquet
paho-mqtt-cpp 1.5.3 data_stream_mqtt
cppzmq 4.11.0 data_stream_zmq
protobuf 6.33.5 parser_protobuf
zstd 1.5.5 data_stream_pj_bridge
date 3.0.4 data_load_csv
ixwebsocket 11.4.6 data_stream_foxglove_bridge, data_stream_pj_bridge
asio 1.28.2 data_stream_udp
kissfft 131.1.0 toolbox_fft
lua 5.4.6 toolbox_colormap, toolbox_reactive_scripts_editor
sol2 3.5.0 toolbox_colormap, toolbox_reactive_scripts_editor
pybind11 2.13.6 toolbox_reactive_scripts_editor
cpython 3.12.7 toolbox_reactive_scripts_editor
gtest 1.17.0 All plugin tests

Via CPM (GitHub-only)

Package Used by
plotjuggler_core SDK (pj_base, pj_dialog_sdk, pj_message_parser_host)
ulog_cpp data_load_ulog
rosx_introspection parser_ros
data_tamer parser_ros, parser_data_tamer

Pinned transitive dependencies

Package Version Reason
libsodium 1.0.20 1.0.21 has broken ARM NEON code that fails with GCC on aarch64

Plugins

Plugin Type Description
parser_json MessageParser JSON message parsing
parser_protobuf MessageParser Protobuf message parsing
parser_ros MessageParser ROS 1/2 message parsing
parser_data_tamer MessageParser DataTamer schema/snapshot parsing
data_load_csv DataSource CSV file loading
data_load_mcap DataSource MCAP file loading
data_load_parquet DataSource Parquet file loading
data_load_ulog DataSource ULog file loading
data_stream_zmq DataSource ZeroMQ streaming
data_stream_mqtt DataSource MQTT streaming
data_stream_foxglove_bridge DataSource Foxglove WebSocket bridge
data_stream_pj_bridge DataSource PlotJuggler WebSocket bridge

Development Checklist

When adding or changing a plugin:

  1. Keep manifest.json current; the release tag version must match it.
  2. Add or update the plugin's CMakeLists.txt.
  3. Add any Conan dependencies to the plugin's conanfile.py.
  4. Add new dependencies to the root conanfile.txt when full-repository builds need them.
  5. Add focused tests in the plugin directory when behavior changes.

Releasing Extensions

Each plugin is independently versioned and released. The release pipeline builds the tagged plugin on 6 platforms (Linux x86_64/aarch64, macOS Intel/ARM, Windows x64/ARM64), creates plugin-scoped release notes, and can automatically submit to the extension registry.

Quick Start (Recommended)

# One command: bump version, commit, tag, push, build, submit to registry
python3 scripts/release_extension.py foxglove-bridge --bump minor --submit-to-registry

This will:

  1. Update manifest.json with new version
  2. Commit and push the change
  3. Create annotated tag → triggers CI
  4. CI installs that plugin's Conan recipe, builds it on all 6 platforms, and creates a GitHub Release with notes from that plugin's directory
  5. Automatically creates a pj-plugin-registry PR for the exact version in the triggering tag

Tag-Only (Manifest Already Updated)

When manifest already has the correct version (e.g., bumped in a previous commit):

# No --bump or --version: reads version from manifest, creates tag only
python3 scripts/release_extension.py foxglove-bridge --submit-to-registry

Useful for batch releases or re-creating tags after cleanup.

Tag Convention

<source_directory>/v<semver>

Examples: data_load_csv/v1.0.6, parser_ros/v2.1.0

The source directory before /v controls the CI build scope. A data_load_csv/v1.0.6 tag installs data_load_csv/conanfile.py and configures CMake with -DPJ_BUILD_PLUGIN=data_load_csv; it does not install or compile dependencies for unrelated plugins. CI uses the same build.sh entry point as local standalone builds.

Available Scripts

Script Purpose
release_extension.py Bump version, create tag, trigger CI
submit_to_registry.py Submit release to extension registry
release_tools.py Validation and packaging utilities

Full documentation: scripts/README.md — detailed pipeline diagram, CLI reference, troubleshooting.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors