[Bug] ROS2 Publishers don't work in Compound Subgraph if the subgraph has inputs

I’m trying to use compound subgraphs so that I can set some constants outside, e.g. the ROS_DOMAIN_ID, and feed that to multiple compounds that handle TF publishing and sensor publishing.

It seems that if a compound takes any outside input, it breaks and does not publish. It publishes fine if it is entirely self contained, but not if I want to feed in a variable.

Here is a simple example that fails:


This is a known limitation with how OmniGraph compound subgraphs handle data flow between external inputs and internal execution nodes. When a compound graph has external inputs, the evaluation order can cause ROS2 publisher nodes inside the
compound to not receive their execution trigger or context data correctly.

Workaround options:

  1. Use OmniGraph variables instead of compound inputs. Create a graph-level variable (e.g., for ROS_DOMAIN_ID) and read it inside the compound with a Read Variable node. This avoids the external input data flow issue entirely. Variables are
    accessible across the graph without neding compound input ports.
  2. Use the ROS2 Context node’s built-in ROS_DOMAIN_ID support. Since Isaac Sim 4.2+, the ROS2 Context node reads ROS_DOMAIN_ID from environment variables by default (changelog entry from 2023-10-07). Set ROS_DOMAIN_ID in your environment
    before launching Isaac Sim, and every ROS2 node will pick it up — no need to wire it as an input at all:
  export ROS_DOMAIN_ID=42                                                                                                                                                                                                                        
  1. Flatten the graph. If you need other external parameters, move the publisher nodes out of the compound subgraph and keep them in the parent graph. Use the compound only for non-ROS logic.

This topic has had no activity since September 2024 and the compound subgraph data flow limitation is an OmniGraph architecture issue rather than a ROS2 bridge bug. Closing this — if the issue persists on a current Isaac Sim version, please
open a GitHub issue (Issues · isaac-sim/IsaacSim · GitHub) with a minimal reproduction USD file.