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.

Hi there,

My lab has the same issue. We “solved” the issue by running Omniverse in a docker container on a different computer and then use the ROS 2 parts on a separate machine.

Hello,

I got the same problem (I am using foxy and version 2022.2.1). I have tried everything commented above but I still cannot see /cmd_vel topic in turtlebot example.

Hello there,

I have the same issue as you have. It works on a docker container on a different computer but for some specific situation it is not possible to use a different computer to run the simulation. I tried both foxy and humble with Isaac version 2022.2.1 but nothing work.

I might also highlight that from time to time I have this issue appearing on the terminal:

2023-03-28 09:59:32.484 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7412: open_and_lock_file failed -> Function open_port_internal
2023-03-28 09:59:32.484 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7414: open_and_lock_file failed -> Function open_port_internal
2023-03-28 09:59:32.484 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7416: open_and_lock_file failed -> Function open_port_internal
2023-03-28 09:59:32.485 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7413: open_and_lock_file failed -> Function open_port_internal
2023-03-28 09:59:32.485 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7415: open_and_lock_file failed -> Function open_port_internal

2023-03-28 09:59:32.485 [RTPS_TRANSPORT_SHM Error] Failed init_port fastrtps_port7417: open_and_lock_file failed -> Function open_port_internal

Not sure if it is related or not.

I made it work with a workaround using Cyclone DDS

sudo apt-get update
sudo apt-get install -y ros-$ROS_DISTRO-rmw-cyclonedds-cpp

Then in my .bashrc file I set:

unset LD_LIBRARY_PATH
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export FASTRTPS_DEFAULT_PROFILES_FILE=“~/.ros/fastdds.xml”

I hope it will help.

1 Like

Oh thanks it worked !
You just made my day, thank you!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.