🤖 AI Summary
This work addresses the distortion inherent in existing ROS 2 introspection tools, which perturb system behavior through intrusive probe injection. To overcome this limitation, the authors propose a non-intrusive observation framework that reconstructs the communication topology by parsing the DDS discovery protocol and performs efficient kernel-space filtering of packets belonging to specified topics. This approach enables precise, semantically complete observation of actual subscription content without introducing probe effects, while maintaining compatibility with standard tooling interfaces. Evaluated across diverse hardware platforms and DDS implementations, the method demonstrates negligible overhead: communication graph inflation remains below 0.5%, zero message loss is achieved, and CPU and memory consumption are reduced to 1/7 and 1/28, respectively, of those incurred by state-of-the-art tools.
📝 Abstract
Robot Operating System 2 (ROS 2), the de facto standard middleware framework for robots, runs each robot as a graph of nodes communicating over the Data Distribution Service (DDS), a publish/subscribe substrate. Observing this inter-node communication in real time is essential to robot development, yet it has a price. A tool can receive data only by joining the DDS domain as a subscriber that discovery has matched to the publisher, so observing folds the tool into the system it measures and perturbs it. We define this protocol-inherent perturbation as the observer's probe effect. It inflates the discovery plane, adds deserialization cost on the observer, makes the loss it reports diverge from what the subscriber actually received, and near saturation displaces the subscriber's messages. The only escape, capturing all wire traffic passively, discards ROS 2 message semantics and scales with total traffic, not what is observed. We present ros2probe, a non-intrusive observation framework that removes the probe effect. It reconstructs the full ROS 2 communication state from the domain's discovery packets at no bandwidth cost, then drives an in-kernel filter restricted to the topics the user asks for, lifting only those packets at minimal cost and observing what the real subscriber receives. Its interfaces and recordings match the standard ROS 2 tools. Across three hardware platforms (laptop, Jetson, and Raspberry Pi), two DDS implementations, and seven robot-operation workloads, ros2probe holds the discovery graph within 0.5% of an unobserved system, whereas domain-joining tools inflate discovery up to 2.6$\times$ and drop 38.5% of the subscriber's messages at saturation while ros2probe drops none. It reports loss with a recall of 1.0, cuts observer CPU and memory by up to 7$\times$ and 28$\times$, and stays practical on the embedded robots where existing tools overload the system.