Verifying Action Graph setup for custom robot arm controlled via RViz (Jetson Orin, Ubuntu 22.04) and simulated in Isaac Sim 5.1

I’m working on a setup where I control a custom robotic manipulator from RViz running on a Jetson Orin (Ubuntu 22.04), while the physical behavior is simulated in Isaac Sim 5.1 on a separate Windows PC. The two machines are connected through a network switch, and I’m using ROS 2 for communication between them.

I’ve built an Action Graph inside Isaac Sim to drive the robot’s articulation based on incoming commands (e.g., joint states or trajectory goals published from RViz). However, I’m running into a specific problem: the Jetson Orin does appear to be sending commands to the Windows machine (I can see the ROS 2 topics being published), but Isaac Sim’s Action Graph does not seem to receive any of those messages. The subscriber nodes I’ve set up in the graph show no incoming data.

This makes me suspect that my Action Graph nodes and connections might be incorrectly configured for this workflow—especially since the robot is a custom model imported into Isaac Sim.

Could someone help review whether my Action Graph wiring is appropriate for this use case, or point out common mistakes when integrating a custom robot with RViz through Isaac Sim’s Action Graph? If it helps, I can provide screenshots of the Action Graph and the USD setup.

Thank you.

Hi @daniel011010 . The Action Graph structure in your screenshot looks reasonable. Most likely root cause is DDS discovery failure between Windows and Linux.

Isaac Sim on Windows uses FastDDS. For cross-machine ROS 2 to work:

  • Windows Firewall must allow UDP multicast on DS discovery ports (7400+)
  • Both machines need the same ROS_DOMAIN_ID
  • Both need compatible DDS implementations (FastDDS on both, or explicit interop config)
  • They must be on the same subnet for multicast to work

Can you please run ros2 topic list on the Windows machine and see the Jetson’s topics? If not, it’s a network problem.

Hi, zhengwang thank you for the suggestions. I went through the checklist:

· Windows Firewall is completely turned off for testing.
· Both the Jetson Orin and the Windows PC have ROS_DOMAIN_ID=0 (confirmed from environment variables on both machines, screenshots attached).
· Both machines are using rmw_fastrtps_cpp (the RMW_IMPLEMENTATION environment variable is set to rmw_fastrtps_cpp on both sides).
· They are on the same subnet and connected through the same switch.

After applying these settings, I ran a basic ROS 2 talker on the Orin (ros2 run demo_nodes_cpp talker) and checked on the Windows machine with ros2 topic list and ros2 topic echo /chatter. I can confirm that the topics are visible and the “Hello World” messages are received on the Windows side with matching sequence numbers (screenshot attached). So the DDS discovery and cross-machine communication itself seems to be working fine now.

However, inside Isaac Sim, the Action Graph subscriber nodes I set up for my custom robot arm still do not show any incoming data. I now strongly suspect that the ROS 2 subscribe joint state nodes in my Action Graph are simply not receiving the messages at all, which would explain why there is no response from the robot arm. This makes me think the issue is now within the Action Graph configuration itself (e.g., wrong topic name, node name mismatch, or incorrect graph wiring) rather than a network/DDS problem.

Could you or anyone advise on the common pitfalls when setting up ROS 2 subscribe joint state in the Isaac Sim Action Graph for a custom robot? For example, are there specific topic namespaces or message types expected when driving articulations, or do I need to manually tick the “Enabled” checkbox on the graph nodes in a particular way? I’m happy to provide screenshots of my current Action Graph setup.

Thank you again for the help.

Hi @daniel011010 it is good that you can receive ROS topic on windows. Then something is likely wrong on Isaac Sim side.
Once you start playing on Isaac Sim (triangle button on the left side), you can check data flow via ROS topics. For example, you can do

  • ros2 topic list and see what are the available topics.
  • ros2 topic info {$topic_name} to check which node is publishing/subscribing to the topic.
  • ros2 topic echo {$topic_name} to check if there are messaging coming through (like what you did to check the windows side)

The above commands should be enough to help you check if there is topic name mismatch or message type mismatch and if the data flow is correct.

For action graph nodes, you can refer to tutorials
Create Joint State Publisher and Subscriber — Going Further With Robotics
Articulation Controller — Isaac Sim Documentation

Make sure the robotPath, targetPrim are correct. enabled should be checked if there is one.

Another thing to check is QoS profile. QoS mismatch might also cause message delivery failure.
You can refer to this tutorial ROS 2 Quality of Service (QoS) — Isaac Sim Documentation
Here is a discussion on github [ROS2] QOS profile options and subscribing problem · Issue #187 · ros-visualization/rqt · GitHub

As a quick diagnosis, you can manually publish a message to joint state in windows while Isaac Sim is running and see if Isaac Sim is able to receive it.

Please let me know what you have tried. If things still don’t work out for you, you can either share screenshots or your files with me.

Hello!

We noticed that this topic hasn’t received any recent updates from anyone reporting this issue, so we are closing it for now to help keep the forum organized.

If you are still experiencing this issue or have related questions, please create a GitHub Discussion or Issue in the Isaac Sim repository and include a link to this topic along with updated details. Mentioning or linking to this original topic provides helpful context and makes it easier for others to assist you.

Thank you for being part of the NVIDIA Isaac Sim community.

Best regards,
The NVIDIA Isaac Sim Forum Team