PlotJuggler ROS 2 Plugin Not Loading: Package and Distro Checks

PlotJuggler itself opens fine. The problem is narrower and more frustrating: the ROS 2 side of it is not there — no topic subscriber, no rosbag loading, as if the ROS plugin never loaded. Because ROS support in PlotJuggler is a separate plugin package, “the plugin is not loading” usually means one of four checkable things: the package is not installed, it is installed for a different ROS distribution, you launched PlotJuggler in a way that bypasses the ROS environment, or your install channel confines the plugin away from what it needs. Work through them in that order. This guide is part of the Troubleshooting hub and assumes the install model from our ROS 2 install guide.

Check 1 — Is the ROS plugins package actually installed?

PlotJuggler is not itself a ROS application; ROS is supported through external plugins in the plotjuggler-ros-plugins repository. The documented Debian route installs the application and the plugins together:

sudo apt install ros-$ROS_DISTRO-plotjuggler-ros

A standalone PlotJuggler — from GitHub binaries, the snap or an AppImage — does not become ROS-capable by wishing. If you never installed this package on this machine, the plugin is not “failing to load”; it was never there. This is the same architecture explained in missing data loaders explained: the rosbag DataLoader, the topic subscriber and the re-publisher all live in this plugin set.

Check 2 — Does the package match your ROS distribution?

The ROS Index lists plotjuggler_ros at version 2.3.1 for the distributions humble, jazzy, kilted, lyrical and rolling. Three consequences follow. First, $ROS_DISTRO must actually resolve to your distribution when you install — echo it in the same terminal if you are unsure. Second, a package built for one distribution is not interchangeable with another; a Humble plugin set in a Jazzy environment is a mismatch, not a near miss. Third — and routinely missed — from v2.3 onward the plugins line supports ROS 2 only; ROS 1 plugin support is frozen in older versions, so a ROS 1 expectation against a current plugin install will present exactly like a loading failure. Availability is a live question on the tracker as well: the plugins repository carries reports such as “Package ros-lyrical-plotjuggler-ros is not available”, which is what a distribution gap looks like from the user’s side.

Check 3 — Did you launch it through the ROS environment?

The documented launch is:

ros2 run plotjuggler plotjuggler

That is logical guidance, not ritual. Launching via ros2 run in a terminal where your ROS setup is sourced guarantees that PlotJuggler starts inside the environment the plugins were built for — the same distribution, the same libraries, the same message definitions. Launching a bare executable from a desktop icon, or from a terminal where ROS was never sourced, can produce a PlotJuggler that runs perfectly and sees no ROS world at all. If the plugin appears when launched the documented way and not otherwise, you have found your cause: always launch it that way. The tracker’s ROS 2 reports underline how environment-sensitive this layer is — from “ROS2 topic subscriber is not connecting” (issue #1013) to “Custom message package not found” (issue #762), where the plugin was present but the user’s own message definitions were not visible to it.

Check 4 — Is your install channel confining the plugin?

  • Snap: the PJ3 documentation recommends the snap on Ubuntu, including for ROS users, while noting it works with ROS 2 with some limitations. Confinement is the mechanism behind most of those limitations, and the tracker has the matching report: “Snap installation doesn’t work with custom built messages” (issue #1379). If your workflow uses custom message packages, the apt ROS package is the documented route — not a workaround.
  • Source builds: the documented source route clones plotjuggler_msgs, the main repository and plotjuggler-ros-plugins into one workspace, then runs rosdep install and colcon build. A partially built or unsourced workspace produces exactly the “plugin not loading” symptom; rebuild completely and source the workspace before launching.
  • Mixed lines: PlotJuggler 4 does not make the PJ3 ROS plugin packages load — the ROS ecosystem is still on the PJ3 line. Expecting PJ4 to pick up plotjuggler_ros plugins is a line mismatch, covered in our PJ3 vs PJ4 comparison.

Putting it together

  1. In one terminal: source your ROS setup, confirm echo $ROS_DISTRO names your distribution.
  2. Confirm the package: sudo apt install ros-$ROS_DISTRO-plotjuggler-ros (it will report already-installed if present).
  3. Launch only this way for the test: ros2 run plotjuggler plotjuggler.
  4. Test with a bag or topic you know is good. If ROS features appear now, standardise on that launch method.
  5. If they still do not appear and you are on the snap with custom messages, switch to the apt route from the Install hub and retest before digging deeper.

If the plugin loads but a specific recording still refuses, the problem has moved downstream — continue with MCAP file won’t open or return to the Troubleshooting hub. Files and versions are on the Download page.

Similar Posts