Invisible topic between ROS2 local and ROS2 Isaac SIM

Hi, I’m currently trying Isaac Sim, I’m comfort with ROS and ROS2 environment and I’ve follow your tutorial (1. ROS2 Import and Drive TurtleBot3 — Omniverse Robotics documentation) for the simple turtleboat implementation.

So following your steps, I’ve add the URDF and the consequent ActionGraph. The issue is that it’s impossible to see or communicate with the topic /cmd_vel (apparently) created by Isaac Sim.

I’ve tried :

  • Changing de ROS_DOMAIN_ID and the ROS2 Context with multiple same Ids
  • Try to move the turtle bot without ROS2 subscribtion, so just by changing value in the differential controller and this work.
  • I’ve try my ROS2 local with the turtlesim publisher and subscriber and this works.
  • I didn’t have sourced the terminal from where I launch Isaac sim

So I admit that I’ve probably missed a step for make the communication possible…

In the console of Omniverse Isaac sim I see some message and I can see that the ros node seems to start because it is written :
rclcpp::init()
So I’m quiet confident in the fact that I missed something…

Thanks in advance for your answer

@bruno.darochacarvalho What is your local ROS version?

My ROS2 version is Foxy (sorry i forgot to mention it)

@bruno.darochacarvalho Do you have any errors in Isaac Sim’s terminal?
If so, make sure you don’t auto source you ROS2 installation (if you added it to your .bashrc, for example)

Otherwise, lets make sure the topics are being created by Isaac sim, you can do so with: eProsima Fast DDS Monitor

Before doing one of the following steps, make sure to stop the ros2 daemon by running ros2 daemon stop.

If you see the topics and subscribers are being created in the fast-dds-monitor, then try setting RMW_IMPLEMENTATION=rmw_fastrtps_cpp before sourcing your local ROS2 installation.

If that doesn’t help as well, you can load nvidia fastRTPS profile into your local ROS2. You do so by using this file: isaac_ros_common/rtps_udp_profile.xml at main · NVIDIA-ISAAC-ROS/isaac_ros_common · GitHub , and adding the following env variable to your ~/.bashrc:

export FASTRTPS_DEFAULT_PROFILES_FILE={PATH_TO}/rtps_udp_profile.xml

Replace PATH_TO with your actual path.

Leave the RMW_IMPLEMENTATION we set in the previous step as well.

Hello there,

I have the same issue as Bruno.

I have ROS2 Foxy installed. I do not source it in the terminal with which I launch Omniverse (it is not sourced in the bashrc file).
I use Omniverse 2022.2.0 and when I start it, I switch from the ros_bridge to the ros2_bridge, then load my USD file created following the Turtlebot tutorial. I created the node graph as explained in the tutorial.

I have my ROS_DOMAIN_ID set in the bashrc file and I use the same ID in the node graph.

When I run the simulation and then open a terminal, source Foxy and run ros2 topic list, I cannot see the /cmd_vel topic as it should be expected when following the tutorial.

In the installation page for ROS2 for IsaacSim (6. ROS & ROS 2 Installation — Omniverse Robotics documentation), they instruct to unset the variable LD_LIBRARY_PATH which I do in the bashrc file. Then, I added export FASTRTPS_DEFAULT_PROFILES_FILE="~/.ros/fastdds.xml" as indicated in the tutorial. fastDDS.xml file looks as follows:

<?xml version="1.0" encoding="UTF-8" ?>

<license>Copyright (c) 2022, NVIDIA CORPORATION.  All rights reserved.
NVIDIA CORPORATION and its licensors retain all intellectual property
and proprietary rights in and to this software, related documentation
and any modifications thereto.  Any use, reproduction, disclosure or
distribution of this software and related documentation without an express
license agreement from NVIDIA CORPORATION is strictly prohibited.</license>


<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
    <transport_descriptors>
        <transport_descriptor>
            <transport_id>UdpTransport</transport_id>
            <type>UDPv4</type>
        </transport_descriptor>
    </transport_descriptors>

    <participant profile_name="udp_transport_profile" is_default_profile="true">
        <rtps>
            <userTransports>
                <transport_id>UdpTransport</transport_id>
            </userTransports>
            <useBuiltinTransports>false</useBuiltinTransports>
        </rtps>
    </participant>
</profiles>

When I run Omniverse, IsaacSim and play back the simulation, and then go to a terminal, source ROS2 and run ros2 topic list, I again cannot see the /cmd_vel topic.

When I then run ros2 run teleop_twist_keyboard teleop_twist_keyboard I get the following error messages:

dave@adminuser-Precision-5560:~$ ros2 run teleop_twist_keyboard teleop_twist_keyboard 
2023-01-11 10:33:58.574 [XMLPARSER Error] Error opening '~/.ros/fastdds.xml' -> Function loadXML
2023-01-11 10:33:58.574 [XMLPARSER Error] Error parsing '~/.ros/fastdds.xml' -> Function loadXMLFile
2023-01-11 10:33:58.577 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port20162: open_and_lock_file failed -> Function open_port_internal
2023-01-11 10:33:58.578 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port20163: open_and_lock_file failed -> Function open_port_internal

This node takes keypresses from the keyboard and publishes them
as Twist messages. It works best with a US keyboard layout.

[...]

I checked the fastDDS.xml file with xmllint and receive the following:

dave@adminuser-Precision-5560:~/.ros$ xmllint fastdds.xml 
fastdds.xml:11: parser error : Extra content at the end of the document
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
^

This is the file I copy-paste as is from the website.

I went to copy the file manually (typing it over) line-by-line. The xmllint now gives no issues. Yet, when running the teleop node, I receive the same errors.

We also noticed that I cannot see the topics in the terminal on my machine, but my colleague can see the topics from my simulation and even move the robot from his machine. Also, I can see the topics from his simulation and control his robot.

It is just that I cannot see my own topics but my colleague can see his topics and also control his own robot.

Any updates on this issue? I have same problem.

Still no update? It seems as if a lot of people are having this issue. It is simply not possible to use isaac sim in a stable way with ROS2

@mardybum - Have you tried the latest Isaac Sim 2022.2.1 which was released last week?

Please take a look and let us know if you are still having the issue.

I updated to version 2022.2.1, but when I ran the ros2 example, I still couldn’t see the corresponding topic

fastdds is also set up with no error messages.