in order to create a DigitalTwin in IsaacSIM, I’m trying to use the ROS2 Bridge from IsaacSIM and wrote a message broker to translate the trajectory messages so that the real robot can move to the intended positions
The setup is as follows:
Ubuntu 20.04
IsaacSIM 2022.1.1
ROS2 Foxy
I’m sourcing ROS2 Foxy via
source /opt/ros/foxy/setup.zsh
I’m running the script in another terminal window via
Whenever I try to launch either the IsaacSIM script or my custom ROS2 MessageBroker Node after the respective other already runs, I get the following error:
The goal is to run ROS2 in the IsaacSIM workspace and to subscribe to topics which contain the positions the robot shall move to.
This behavior seems kind of odd to me because two weeks ago everything worked perfectly fine. I was able to publish the trajectories from SIM and listen to them with my MessageBroker and publish the adjusted trajectories to the real robot.
Have there been some changes recently?
Or am I doing something completely wrong?
Meanwhile I could figure out what might be the problem, but I’m still not able to fix it. Here is what I found out.
The problem is that two different ROS2 installations are running. The one from IsaacSIM (source ros2_workspace/install/local_setup.zsh) and the one on my local machine (source /opt/ros/foxy/setup.zsh).
If I start IsaacSIM and start publishing the joint trajectories via the ROS2 Bridge, and go to another PC in the same network and start listening to the published topic, I can read the messages. If I do the same on my PC in another terminal the error which I showed above gets displayed and I am not able to listen to these topics.
So basically my question is:
How is it possible to publish ROS2 topics in IsaacSIM and subscribe to these on the same PC with a node which runs with the local installation of ROS2.
I hope I was able to specify the problem a little bit more.
I came cross the same error. After working around and found a solution finally. The reason is not the ros2_workspace, which is just a workspace containing some isaac example nodes, but rather the the extension omni.isaac.ros2_bridge in folder exts. It comes with itself the fastdds (fastrtps) library (libfastrtps.so.x.x.x). Perhaps due to this open issue, it will cause the above SHM Error if the fastdds library in ros2_bridge and the one in ros2 installation are different version.
So quick fix is to check the version of fastdds library used in ros2_bridge( libfastrtps.so.2.1.1 in my case). Then download the same version fastdds from their github repo, build from source to replace the current FastDDS package in your ros2 installation folder.
Just as said it’s just a quick fix to make the ros2_bridge work, for a long-term solution we may need further commits from eProsima team. Or alternatively, a way to change rmw implementation for ros2_bridge.
Thank you very much for your detailed response!
I couldn’t make it run with your proposed solution, but it really helped me to understand the issue better.
The solution which worked for me was this ROS2 Foxy communication issue.
In my case the line export RMW_IMPLEMENTATION=rmw_fastrtps_cpp in the .bashrc was not necessary but except from that everything works as proposed in the issue.
That’s great to know you’ve worked out in another way, which brings me also some new inspiration as well! That’s exactly what I mean “Or alternatively…” in my previous post. Thank you very much.