The delay node in action graph invalid when the ros2 camera helper is used

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim · GitHub ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Isaac Sim Version

5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: Geforce rtx 4070 super ti
  • Driver Version: 570.124.06

Topic Description

The delay node cannot work correctly when i use a ros2 camera helper node to send camera render imag msg to ros2(ros2 is humble).

Detailed Description

When I used the ros2 camera helper to send camera rendered images in the action graph, I had other business logic that required a delay node. However, I found that the node after the delay node would not execute (the execution of the graph stopped at the delay node). When I turned off the ros2 camera helper, the node after the delay node could execute.

Steps to Reproduce

  1. open isaac sim assets/samples/ROS2/ROBOTS/Nova_Carter_Joint_States_ROS.usd in isaac sim

  2. add a action graph with delay node,(On stage Event/simulation start play)–>Delay–>Print Text

  3. click play, the print node can not perform

  4. stop the simulation. disable the ROS2 Camera Helper node in the action graph under the Nova_Carter_Joint_States_ROS.usd

  5. click play, the print node can perform

(Add more steps as needed)

Error Messages

(If applicable, copy and paste any error messages you received)

Screenshots or Videos

(If applicable, add screenshots or links to videos that demonstrate the issue)

Additional Information

What I’ve Tried

(Describe any troubleshooting steps you’ve already taken)

Related Issues

(If you’re aware of any related issues or forum posts, please link them here)

Additional Context

(Add any other context about the problem here)

Thank you for posting this. The issue you’re encountering is a known limitation when using the Delay node in Isaac Sim’s Action Graph in conjunction with the ROS2 Camera Helper node, especially for ROS2 Humble. When the ROS2 Camera Helper is active and sending rendered camera images, the pipeline seems to block or prevent the correct propagation of events past the Delay node, due to synchronization or thread blocking issues within the nodes’ execution model.

Possible Workarounds

1. Use Alternative Triggering Methods

  • Instead of a Delay node, use other Action Graph nodes such as a Periodic Event or a Timer Event, which are less prone to blocking issues tied to Camera Helper threads.
  • Example:
# Sample node setup in the graph
On Simulation Start -> Timer Event (repeatable) -> Print Text

2. Isolate Camera Helper Execution

  • Split the Action Graph logic: Move the ROS2 Camera Helper and its output to a separate Action Graph, ensuring that nodes with timing or other logic (e.g., Delay, Print Text) do not directly depend on or share execution with the camera publisher.

3. Use Custom Python Extension

  • For more advanced scenarios, write a Python extension (using Isaac Sim’s extension API) to handle image publishing to ROS2 outside the Action Graph, so the Delay node’s chain is not blocked.

4. Synchronize Image Publishing

  • Limit camera image publication frequency by downsampling or throttling messages, reducing how long the Camera Helper node spends blocked, potentially letting the Delay node operate.

Thanks for your advices,
i have fixed this problem by the first method, using custom peroidic event