ROS 2 Workspace Package Migration#

Isaac Sim 6.0 updates the ROS Workspaces package layout, renames the isaacsim ROS package to isaacsim_bringup, and converts several packages from ament_cmake to ament_python:

  • isaacsim / isaacsim_bringup

  • cmdvel_to_ackermann

  • h1_fullbody_controller

  • isaac_moveit

This guide covers workspace package changes. For Action Graph changes inside Isaac Sim, use ROS 2 OmniGraph Nodes and ROS 2 Sensor Graph Migration.

Migration Approach#

Follow these steps to migrate each workspace package:

  1. Update package references from isaacsim to isaacsim_bringup.

    Check launch files, README commands, CI scripts, package dependencies, get_package_share_directory(...) calls, and any package-specific namespace assumptions.

  2. Re-test launch behavior on each supported ROS distro and platform.

    For Windows workflows, Isaac Sim 6.0 deprecates Windows Subsystem for Linux 2 (WSL2) and supports only Jazzy. The current Windows workflow uses Pixi-managed dependencies.

Launcher Parameters#

Review every downstream launch file that wraps isaacsim_bringup/run_isaacsim.launch.py:

  • use_internal_libs defaults to true for Humble and false for Jazzy. Pass it explicitly when CI or deployment environments require a particular library source.

  • dds_type is opt-in. Leave it empty to keep the surrounding RMW_IMPLEMENTATION. Pass dds_type:=fastdds, dds_type:=cyclonedds, or dds_type:=zenoh only when the workflow must override the environment.

  • ROS 2 library selection must happen before Isaac Sim starts. If a script enables ROS 2 extensions from inside an already running SimulationApp without the matching ROS_DISTRO, RMW_IMPLEMENTATION, and LD_LIBRARY_PATH, Python modules may import while the ROS 2 bridge backend still fails to load its dynamic libraries.

  • Isaac Sim supports ROS 2 Launch on Linux and Windows with the Pixi-based installation. isaacsim_bringup does not support WSL2.

Package Layout Mapping#

5.x workspace pattern

6.0 workspace pattern

ROS package named isaacsim

ROS package named isaacsim_bringup.

find_package(ament_cmake) and CMake install rules

ament_python package export plus setup.py / setup.cfg.

scripts/<tool>.py

<package>/<tool>.py inside the package module.

CMake-installed launch and config files

setup.py data_files entries.

Direct __file__ path resolution inside installed packages

ament_index_python.packages.get_package_share_directory.

Jazzy use_internal_libs defaulting to enabled

Jazzy defaults to external/system ROS libraries. Pass use_internal_libs:=True only when the workflow requires internal libraries.

run_isaacsim.py forcing a DDS implementation by default

dds_type is opt-in. Leave it empty to preserve the surrounding RMW_IMPLEMENTATION.

Validation Checklist#

Verify the following after migrating each workspace package:

  • colcon build completes for the migrated workspace.

  • ros2 pkg list shows isaacsim_bringup and does not require the old isaacsim package name.

  • Launch files resolve package shares through get_package_share_directory.

  • Console scripts installed by setup.py can be invoked with ros2 run.

  • Existing launch workflows pass on the target distro. Test Humble and Jazzy separately when both are supported.

  • Jazzy workflows that rely on internal Isaac Sim libraries pass use_internal_libs:=True explicitly.

  • Migrated launch files pass explicit DDS choices through dds_type:=fastdds, dds_type:=cyclonedds, or dds_type:=zenoh only when required.

  • Standalone SimulationApp smoke tests start with the same ROS environment that production launch files use, instead of enabling the ROS 2 bridge after process startup.