Robotics

Design discussion: “discoverable not serviceable” ROS interfaces for lifecycle nodes

Nav2 team proposes new state model to prevent data loss during inactive lifecycle phases.

Deep Dive

The ROS 2 community is tackling a fundamental design gap in lifecycle node management through a new proposal for 'discoverable not serviceable' interfaces. Led by contributor Lotusymt from the Nav2 navigation stack team, the discussion centers on how to make node interfaces (topics, services, actions) visible to system introspection tools while preventing them from executing callbacks or consuming data when nodes are in an Inactive state. This addresses a critical issue in Nav2 where subscriptions could permanently lose latched or Transient Local QoS data if they consume from middleware queues before activation. The current ROS 2/rclcpp architecture creates discoverable entities immediately upon creation, making it difficult to prevent callback execution during inactive phases.

The proposal introduces a three-state LifecycleEntity model: Unconfigured (not discoverable), Inactive (discoverable but not serviceable), and Active (normal operation). The technical challenge lies in implementing 'not serviceable' for subscriptions without data loss - either through rclcpp-level gating that skips take() operations or rmw-level paused states in middleware like DDS or Zenoh. Community feedback suggests this could evolve toward node modeling where interfaces are predefined, enabling system-wide validation of connections and startup sequences. This foundational work could significantly improve reliability in autonomous systems where data preservation during initialization is critical.

Key Points
  • Addresses data loss risk for Transient Local QoS topics when lifecycle nodes are inactive
  • Proposes rclcpp-level gating or rmw-level paused states to prevent queue consumption
  • Enables better system introspection and validation through predefined interface modeling

Why It Matters

Prevents critical data loss in autonomous systems during initialization, improving reliability for navigation and robotics applications.