Isaac Sim Tutorial Step 6: Difficulty setting up ROS 2 Jazzy bridge with Isaac Sim 5.1 on Ubuntu 24.04 (Python version mismatch)

Isaac Sim Version: 5.1.0

Operating System: Ubuntu 24.04

GPU Information: Model: A6000

Topic Description: I am a beginner with Isaac Sim and ROS 2, and I am trying to set up the ROS 2 Jazzy bridge following the official documentation. My goal is to use the ROS 2 UR description package with Isaac Sim. This is step 6 in the official tutorial.

Detailed Description: I followed the instructions provided in the Isaac Sim documentation for “Building and Installing the UR Description Package”:

Isaac Sim 5.1 requires Python 3.11, which is not natively supported by the ROS 2 UR description package, so we need to build the package from source.

Note

See Enabling rclpy, Custom ROS 2 Packages, and Workspaces with Python 3.11 for more information on setting up your custom ROS 2 package in your ROS workspace.

Following the link above, I followed these instructions:

Isaac Sim requires Python 3.11. A dockerfile is included that builds a ROS 2 workspace with Python 3.11. Packages built using this dockerfile can be used directly with rclpy and can be sourced to run the Isaac Sim ROS 2 Bridge.

To use the dockerfile to build ROS 2 and the workspace with Python 3.11:

  1. Clone Isaac Sim ROS Workspace.

  2. Build the dockerfile:

    cd IsaacSim-ros_workspaces
    
    ./build_ros.sh -d jazzy -v 24.04
    
    

    The minimal jazzy_ws needed to run Isaac Sim is under build_ws/jazzy/jazzy_ws. Additional workspaces can also be created and built in this dockerfile.

    While the build process inside the provided Docker container (build_ros.sh) seems to finish successfully, I encounter a runtime error as soon as I try to use rclpy. It seems there is a mismatch between the Python environment used by the build script (which defaults to Python 3.12 on Ubuntu 24.04) and the Python environment required by Isaac Sim (which expects Python 3.11).

Steps to Reproduce:

  1. Clone the IsaacSim-ros_workspaces repository.

  2. Run ./build_ros.sh -d jazzy -v 24.04.

  3. Source the resulting workspace as described in the tutorial.

  4. Attempt to run the Isaac Sim-ROS 2 bridge or import rclpy within Isaac Sim (Python 3.11).

Error Messages:

[9.090s] Could not import system rclpy: No module named 'rclpy._rclpy_pybind11'
The C extension '.../_rclpy_pybind11.cpython-311-x86_64-linux-gnu.so' isn't present on the system.

Note: It appears the system is looking for a Python 3.11 extension, but the build created files for Python 3.12:

$ find IsaacSim-ros_workspaces -name "*_rclpy_pybind*"
IsaacSim-ros_workspaces/build_ws/jazzy/jazzy_ws/install/lib/python3.12/site-packages/rclpy/_rclpy_pybind11.cpython-312-x86_64-linux-gnu.so

Also note running without sourcing this works, but then importing the robot as described in step 6 of the tutorial is not possible:

$ find /isaac-sim/ -name "*_rclpy_pybind*"
/isaac-sim/exts/isaacsim.ros2.bridge/jazzy/rclpy/rclpy/_rclpy_pybind11.cpython-311-x86_64-linux-gnu.so
/isaac-sim/exts/isaacsim.ros2.bridge/humble/rclpy/rclpy/_rclpy_pybind11.cpython-311-x86_64-linux-gnu.so

Screenshots or Videos: N/A

Additional Information: What I’ve Tried:

  • I have tried running the build script multiple times.

  • I attempted to force the use of Python 3.11 by setting PYTHON_EXECUTABLE=/usr/bin/python3.11 during the build, but the Docker environment still defaulted to its internal settings.

  • I am currently unsure if I am missing a configuration step or if the provided Docker setup is intended to handle the Python version automatically.

Additional Context: As a beginner, I am struggling to understand if I should manually install Python 3.11 inside the Docker container or if there is a way to configure the build_ros.sh script to align with the Python version that Isaac Sim 5.1 expects. Any guidance or advice on how to bridge this version gap would be greatly appreciated.