Skip to content

Conversation

@therobocademy
Copy link

Description

This PR updates Dockerfile.ros2 to use ROS 2 Jazzy packages instead of ROS 2 Humble.
The change allows IsaacLab users to build ROS-enabled containers against the latest ROS 2 LTS release, enabling access to newer APIs, improved middleware behavior, and long-term platform support.

Motivation:

  • ROS 2 Jazzy is the current LTS release.
  • Many users are migrating from Humble to Jazzy.
  • Aligns IsaacLab Docker workflows with the modern ROS 2 ecosystem.

Dependencies:

  • ROS 2 Jazzy Debian packages
  • Base image that supports Jazzy (e.g., Ubuntu 24.04)

Fixes # (link issue here if applicable)


Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

Not applicable (Dockerfile change only).


Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format (or not required for Dockerfile-only change)
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

Validation

  • Docker image builds successfully.
  • ROS 2 Jazzy environment initializes correctly inside the container.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 27, 2026

Greptile Overview

Greptile Summary

This PR upgrades the ROS 2 integration from Humble to Jazzy, the current LTS release. Key changes include updating all package names from ros-humble-* to ros-jazzy-*, adding additional dependencies (ca-certificates, gnupg, lsb-release, apt-transport-https, python3-rosdep), and improving Ubuntu version detection by using $VERSION_CODENAME instead of hardcoding "jammy".

Notable improvements:

  • Dynamic Ubuntu codename detection (line 24) makes the Dockerfile more portable
  • Added rosdep initialization with error handling (|| true)
  • Updated .bashrc to source Jazzy setup script

Critical compatibility concern:

  • ROS 2 Jazzy requires Ubuntu 24.04 (Noble Numbat), while ROS 2 Humble uses Ubuntu 22.04 (Jammy)
  • The base Isaac Sim image version should be verified to ensure it's running Ubuntu 24.04, otherwise package installation will fail

Confidence Score: 3/5

  • This PR requires verification of base image Ubuntu version before merging
  • The changes are well-structured and include good improvements (dynamic version detection, additional dependencies, error handling). However, ROS 2 Jazzy strictly requires Ubuntu 24.04, and it's unclear if the base Isaac Sim 5.1.0 image has been updated to Ubuntu 24.04. Without this confirmation, the Docker build will fail when attempting to install ros-jazzy-* packages on Ubuntu 22.04.
  • Verify that the base Isaac Sim image (nvcr.io/nvidia/isaac-sim:5.1.0) uses Ubuntu 24.04

Important Files Changed

Filename Overview
docker/Dockerfile.ros2 Updated ROS 2 from Humble to Jazzy with improved Ubuntu version detection, added new dependencies and rosdep initialization

Sequence Diagram

sequenceDiagram
    participant User
    participant DockerBuild as Docker Build
    participant BaseImage as isaac-lab-base
    participant AptCache as APT Cache
    participant RosRepo as ROS APT Repository
    participant RosDep as rosdep

    User->>DockerBuild: Build with ROS2_APT_PACKAGE arg
    DockerBuild->>BaseImage: FROM isaac-lab-base
    DockerBuild->>AptCache: Mount cache for /var/cache/apt
    DockerBuild->>AptCache: Install curl, ca-certificates, gnupg, etc.
    DockerBuild->>AptCache: Add universe repository
    DockerBuild->>RosRepo: Download ROS keyring
    DockerBuild->>RosRepo: Add ROS 2 source list (using $VERSION_CODENAME)
    DockerBuild->>AptCache: apt-get update
    DockerBuild->>AptCache: Install ros-jazzy-${ROS2_APT_PACKAGE}
    DockerBuild->>AptCache: Install ros-jazzy-vision-msgs
    DockerBuild->>AptCache: Install ros-jazzy-rmw-cyclonedds-cpp
    DockerBuild->>AptCache: Install ros-jazzy-rmw-fastrtps-cpp
    DockerBuild->>AptCache: Install ros-dev-tools
    DockerBuild->>AptCache: Install python3-rosdep
    DockerBuild->>RosDep: rosdep init || true
    DockerBuild->>RosDep: rosdep update || true
    DockerBuild->>RosDep: Install extension rosdeps
    DockerBuild->>DockerBuild: Clean up apt cache
    DockerBuild->>DockerBuild: Add "source /opt/ros/jazzy/setup.bash" to .bashrc
    DockerBuild->>User: ROS 2 Jazzy environment ready
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant