PlotJuggler Adds Support for MCAP

Store and explore your robotics data in self-contained MCAP files
Esther WeonEsther Weon ·
3 min read
PlotJuggler Adds Support for MCAP

Time series visualization tool PlotJuggler recently announced support for the MCAP file format in its 3.6.0 release. You can now load multiple streams of robotics data with one container file format in PlotJuggler, for seamless data storage and analysis.


As a generic visualization tool for a wide range of robotics applications, PlotJuggler was designed from the ground-up to be endlessly customizable – from configurable settings to an extensible interface.

To stay flexible, PlotJuggler works hard to separate the phases of data handling – storage, transport, and parsing – as much as possible in its application logic. With frameworks like ROS, however, these phases are all quite tightly coupled.

In response to this problem, lead developer Davide Faconti decided to introduce MCAP to the PlotJuggler ecosystem, thus allowing roboticists using both ROS 1 and ROS 2 to leverage one common file format. This decouples data storage (MCAP) from data parsing (ROS 1 or ROS 2), thus achieving his guiding principle of separating concerns and keeping the tool modular and extensible.

MCAP also solves a shortcoming of rosbag2 SQLite storage. Unlike MCAP or even ROS 1, ROS 2 bag files do not store the schema of their messages alongside their actual data. This makes it difficult and sometimes impossible to visualize certain ROS 2 messages in PlotJuggler, as the information needed to parse these messages may be unavailable. With completely self-contained MCAP files, however, PlotJuggler can now load and parse ROS 2 messages without any issues.

As the main PlotJuggler developer, I am looking forward to continuing collaborating with Foxglove and contributing to the robotic ecosystem with our individual strengths.

  • Davide Faconti

Davide is excited to expand MCAP support on the upcoming PlotJuggler roadmap as well. Fortunately, MCAP already provides readers and writers for a wide array of data formats (e.g. ROS 1, ROS 2, Protobuf, JSON, etc.). This sets the stage for PlotJuggler to enable saving and reloading messages streamed into the app. For example, users may one day be able to log received JSON data using MQTT, or receive Protobuf messages using WebSockets technology, in the app.

Stay tuned

The Foxglove team is just as excited to continue collaborating with Davide and PlotJuggler to improve the MCAP ecosystem. We hope that our joint efforts to expand support across different open source tools will only accelerate progress for everyone in our industry.

If you have any feedback for us, please don’t hesitate to reach out. You can join the Foxglove Slack community, or contact us directly.

Read more:

Building a Custom React Panel with Foxglove Extensions
Building a Custom React Panel with Foxglove Extensions

Create project-specific visualization tools for your robotics team

Esther WeonEsther WeonEsther Weon
12 min read
Creating ROS 1 Actions
Creating ROS 1 Actions

Coordinate open-ended communication between your ROS nodes

Esther WeonEsther WeonEsther Weon
José L. MillánJosé L. MillánJosé L. Millán
11 min read

Get blog posts sent directly to your inbox.

Ready to try Foxglove?

Get started for free