🤖 AI Summary
ROS 2 users frequently encounter runtime failures due to insufficient guidance on selecting and validating Quality of Service (QoS) policy combinations prior to deployment. This work systematically analyzes the full lifecycle of DDS publish-subscribe communication—encompassing discovery, data exchange, and unassociation—to characterize the behavioral semantics of all 16 QoS policies across each phase. We introduce the novel concept of a “QoS dependency chain” to formally model inter-policy constraints and derive 41 concrete dependency violation rules. Based on this formalization, we design QoS Guard, a lightweight static analysis tool that performs offline validation and conflict detection directly from XML-based ROS 2 QoS configurations. Our approach requires no runtime instrumentation, significantly improving configuration reliability and reducing debugging overhead. Empirical evaluation on real-world ROS 2 systems confirms its effectiveness in preventing QoS-related failures.
📝 Abstract
Robot Operating System 2 (ROS 2) relies on the Data Distribution Service (DDS), which offers more than 20 Quality of Service (QoS) policies governing availability, reliability, and resource usage. Yet ROS 2 users lack clear guidance on safe policy combinations and validation processes prior to deployment, which often leads to trial-and-error tuning and unexpected runtime failures. To address these challenges, we analyze DDS Publisher-Subscriber communication over a life cycle divided into Discovery, Data Exchange, and Disassociation, and provide a user oriented tutorial explaining how 16 QoS policies operate in each phase. Building on this analysis, we derive a QoS dependency chain that formalizes inter-policy relationships and classifies 41 dependency violation rules, capturing constraints that commonly cause communication failures in practice. Finally, we introduce QoS Guard, a ROS 2 package that statically validates DDS XML profiles offline, flags conflicts, and enables safe, predeployment tuning without establishing a live ROS 2 session. Together, these contributions give ROS 2 users both conceptual insight and a concrete tool that enables early detection of misconfigurations, improving the reliability and resource efficiency of ROS 2 based robotic systems.