Robotics

Carto | a small Zenoh debugging tool we built internally

Open-source tool solves visibility gap for Zenoh's real-time data flows, now on GitHub.

Deep Dive

Developer Derek Diaz has open-sourced Carto, a debugging tool built to solve a persistent visibility problem when working with Zenoh, the high-performance data-centric communication protocol. The tool emerged from Diaz's team's need to see what data was actually flowing through their systems during development and debugging of live traffic, a common pain point when building with Zenoh's pub/sub and query/response models. Carto addresses this by functioning as a dedicated stream inspector, allowing engineers to monitor, filter, and interact with Zenoh data streams in real-time, filling a gap where general-purpose tools fell short.

Technically, Carto enables developers to subscribe to Zenoh streams using key expressions, apply live filters to incoming messages, and decode various payload formats including JSON, text, binary, and Protocol Buffers (protobuf). A key feature is the ability to publish test messages back onto the Zenoh bus, facilitating interactive debugging. While currently focused on 'vanilla' Zenoh traffic, Diaz notes it can observe underlying Zenoh communications in systems like ROS2 when using bridges like `zenoh-bridge-ros2dds`, though native ROS2 topic awareness isn't yet implemented. The release has been welcomed by the community, with immediate requests for containerized deployment via Docker to simplify adoption.

Key Points
  • Enables real-time subscription and filtering of Zenoh streams using key expressions for precise debugging.
  • Decodes multiple payload formats live: JSON, text, binary, and Protocol Buffers (protobuf).
  • Allows publishing of test messages back to the Zenoh bus, closing the debugging loop.

Why It Matters

Provides essential visibility into real-time data flows for teams building with Zenoh, accelerating development and troubleshooting.