Docker container: Isaac Sim - ROS2 Birdge startup failed

I [https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_container.html](https://these instructions) to set up the Container installation of Isaac Sim. My host OS is Ubuntu 20.04 with ROS Foxy (not sure if that matters).

I can run the container and start Isaac Sim with ./runheadless.native.sh -v per the instructions. But the ROS2 bridge is failing in the container. I was hoping that using the Dockerized version would prevent any issues with having a host system running a different ROS2 version and OS version.

Here’s the error in the container when I run Isaac Sim:

RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/isaac-sim/exts/omni.isaac.ros2_bridge/humble/lib
Before starting Isaac Sim
2024-07-13 20:18:34 [18,417ms] [Error] [omni.isaac.ros2_bridge.scripts.extension] ROS2 Bridge startup failed

I have the same issue, did you find how to fix it?

Unfortunately, I did not find a solution. Instead, I moved to using the Desktop version of Isaac Sim on Ubuntu 22.04 with ROS2 Humble.

[Error] [omni.isaac.ros2_bridge.scripts.extension] ROS2 Bridge startup failed
To resolve this error in our Isaac Sim Docker version, I followed these steps:
We edit the .bashrc file using nano inside the Docker container:

nano ~/.bashrc

Add the following lines:

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/isaac-sim/exts/omni.isaac.ros2_bridge/humble/lib
export AMENT_PREFIX_PATH=/opt/ros/humble

Save the changes with Ctrl+O and close with Ctrl+X.
Apply the changes with:

source ~/.bashrc

You can check that the changes have been applied by running:

echo $RMW_IMPLEMENTATION
echo $LD_LIBRARY_PATH
echo $AMENT_PREFIX_PATH

This issue primarily occurs because the directories are not correctly set in the commands for launching the ROS2 bridge service.

1 Like

Thank you for sharing the solution that worked for you.

According to ROS and ROS 2 Installation — Omniverse IsaacSim latest documentation, it’s important to set specific environment variables before running Isaac Sim, especially if you do not have a system-level ROS 2 installation. Isaac Sim includes a minimal set of ROS 2 libraries, and to use the Humble ROS 2 libraries, you should set the following environment variables in a new terminal or command prompt before launching Isaac Sim:

export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/isaac-sim/exts/omni.isaac.ros2_bridge/humble/lib
export AMENT_PREFIX_PATH=/opt/ros/humble

This setup ensures that the directories are correctly configured for launching the ROS2 bridge service, preventing startup failures.

Are these variables not set in the container installation? This post is specifically for the container version of IsaacSim. It seems odd that you would need to set these on your host system, then run the container for it to work. Doesn’t that defeat the purpose of using containers somewhat?

InstallationGuide.docx (133.8 KB)
If you follow this guide I made, the bridge problem will disappear after installing ROS2. The explanations are in Spanish, but you can easily translate them with ChatGPT.

1 Like

@VickNV

I am running isaac-sim container version 4.1.0. I am working with ROS noetic. I followed this link that states what you should do to enable isaac-sim container talking to a ROS container. In particular, I accessed the following file from my isaac sim container:
/isaac-sim/apps/omni.isaac.sim.base.kit

and I made the suggested changes as:
isaac.startup.ros_bridge_extension = "omni.isaac.ros_bridge"

The run command for my docker looks like following:

docker run --name isaac-sim --entrypoint bash -it --runtime=nvidia --gpus all -e "ACCEPT_EULA=Y" --rm --network=host --ipc=host \
    -e "PRIVACY_CONSENT=Y" \
    -v ~/docker/isaac-sim/cache/kit:/isaac-sim/kit/cache:rw \
    -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
    -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
    -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
    -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
    -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
    -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
    -v ~/docker/isaac-sim/documents:/root/Documents:rw \
    -v ~/catkin_ws:/root/catkin_ws \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    nvcr.io/nvidia/isaac-sim:4.1.0

I am running roscore in my ROS container, and I have a node that is publishing on some topics, I cannot seem to access those within my isaac container. rostopic list, rosnode list commands are not recognized. What can be done?

What kind of exports I need for ros 1 conenction, Do I need these exports inside a terminal out of container, or within container.

Thank you for reaching out with your question. It seems that you’re experiencing a different issue than the one discussed in this topic, which is specifically about the ROS2 bridge startup failure in Isaac Sim 2023.1.1.
To better address your concerns regarding ROS1 (Noetic) integration with Isaac Sim 4.1.0, I recommend creating a new forum topic. This will allow us to focus on your specific setup and provide more targeted assistance.

@VickNV thanks,
I posted a new issue.

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