Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions .github/workflows/license-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,20 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12' # Adjust as needed
python-version: '3.11' # Adjust as needed

- name: Install dependencies using ./isaaclab.sh -i
env:
OMNI_KIT_ACCEPT_EULA: yes
ACCEPT_EULA: Y
ISAACSIM_ACCEPT_EULA: YES
run: |
# first install isaac sim
pip install --upgrade pip
pip install 'isaacsim[all,extscache]==${{ vars.ISAACSIM_BASE_VERSION || '5.0.0' }}' --extra-index-url https://pypi.nvidia.com
pip install 'isaacsim[all,extscache]==${{ vars.ISAACSIM_BASE_VERSION || '5.1.0' }}' --extra-index-url https://pypi.nvidia.com
chmod +x ./isaaclab.sh # Make sure the script is executable
# Install torch
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128
# install all lab dependencies
./isaaclab.sh -i

Expand Down Expand Up @@ -83,6 +89,11 @@ jobs:

# Loop through the installed packages and their licenses
for pkg in $(jq -r '.[].Name' licenses.json); do
# Skip packages starting with nvidia (case-insensitive)
if [[ "${pkg,,}" == nvidia* ]]; then
continue
fi

LICENSE=$(jq -r --arg pkg "$pkg" '.[] | select(.Name == $pkg) | .License' licenses.json)

# Check if any of the allowed licenses are a substring of the package's license
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ Installation

Installing the Newton physics integration branch requires three things:

1) Isaac sim 5.0
1) Isaac sim 6.0
2) The ``feature/newton`` branch of Isaac Lab
3) Ubuntu 22.04 or 24.04 (Windows will be supported soon)

To begin, verify the version of Isaac Sim by checking the title of the window created when launching the simulation app. Alternatively, you can
find more explicit version information under the ``Help -> About`` menu within the app.
If your version is less than 5.0, you must first `update or reinstall Isaac Sim <https://docs.isaacsim.omniverse.nvidia.com/latest/installation/quick-install.html>`_ before
If your version is less than 6.0, you must first `update or reinstall Isaac Sim <https://docs.isaacsim.omniverse.nvidia.com/latest/installation/quick-install.html>`_ before
you can proceed further.

Next, navigate to the root directory of your local copy of the Isaac Lab repository and open a terminal.
Expand Down Expand Up @@ -44,13 +44,13 @@ Install the correct version of torch and torchvision:

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128

Install Isaac Sim 5.0:
Install Isaac Sim 6.0:

.. code-block:: bash

pip install "isaacsim[all,extscache]==5.0.0" --extra-index-url https://pypi.nvidia.com
pip install "isaacsim[all,extscache]==6.0.0" --extra-index-url https://pypi.nvidia.com

Install Isaac Lab extensions and dependencies:

Expand Down
25 changes: 2 additions & 23 deletions docs/source/setup/installation/isaaclab_pip_installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,6 @@ Installing dependencies
In case you used UV to create your virtual environment, please replace ``pip`` with ``uv pip``
in the following commands.

- Install a CUDA-enabled PyTorch 2.7.0 build for CUDA 12.8:

.. code-block:: none

pip install torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128

- If you want to use ``rl_games`` for training and inferencing, install the
its Python 3.11+ enabled fork:

.. code-block:: none

pip install git+https://github.com/isaac-sim/rl_games.git@python3.11

- Install the Isaac Lab packages along with Isaac Sim:

.. code-block:: none

pip install isaaclab[isaacsim,all]==2.2.0 --extra-index-url https://pypi.nvidia.com

In case you used UV to create your virtual environment, please replace ``pip`` with ``uv pip``
in the following commands.

- Install the Isaac Lab packages along with Isaac Sim:

Expand All @@ -63,14 +42,14 @@ Installing dependencies

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128

.. tab-item:: :icon:`fa-brands fa-windows` Windows (x86_64)
:sync: windows-x86_64

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128

.. tab-item:: :icon:`fa-brands fa-linux` Linux (aarch64)
:sync: linux-aarch64
Expand Down
4 changes: 2 additions & 2 deletions docs/source/setup/installation/pip_installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@ Installing dependencies

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128

.. tab-item:: :icon:`fa-brands fa-windows` Windows (x86_64)
:sync: windows-x86_64

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128

.. tab-item:: :icon:`fa-brands fa-linux` Linux (aarch64)
:sync: linux-aarch64
Expand Down
4 changes: 2 additions & 2 deletions docs/source/setup/quickstart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,11 @@ To begin, we first define our virtual environment.
env_isaaclab\Scripts\activate


Next, install a CUDA-enabled PyTorch 2.7.0 build.
Next, install a CUDA-enabled PyTorch build.

.. code-block:: bash

pip install -U torch==2.7.0 torchvision==0.22.0 --index-url https://download.pytorch.org/whl/cu128
pip install -U torch==2.9.0 torchvision==0.24.0 --index-url https://download.pytorch.org/whl/cu128


Before we can install Isaac Sim, we need to make sure pip is updated. To update pip, run
Expand Down
4 changes: 2 additions & 2 deletions isaaclab.bat
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ rem --- Ensure CUDA PyTorch helper ------------------------------------------
:ensure_cuda_torch
rem expects: !python_exe! set by :extract_python_exe
setlocal EnableExtensions EnableDelayedExpansion
set "TORCH_VER=2.7.0"
set "TV_VER=0.22.0"
set "TORCH_VER=2.9.0"
set "TV_VER=0.24.0"
set "CUDA_TAG=cu128"
set "PYTORCH_INDEX=https://download.pytorch.org/whl/%CUDA_TAG%"

Expand Down
7 changes: 3 additions & 4 deletions isaaclab.sh
Original file line number Diff line number Diff line change
Expand Up @@ -112,13 +112,12 @@ ensure_cuda_torch() {

# choose pins per arch
local torch_ver tv_ver cuda_ver
torch_ver="2.9.0"
tv_ver="0.24.0"

if is_arm; then
torch_ver="2.9.0"
tv_ver="0.24.0"
cuda_ver="130"
else
torch_ver="2.7.0"
tv_ver="0.22.0"
cuda_ver="128"
fi

Expand Down
3 changes: 2 additions & 1 deletion scripts/benchmarks/benchmark_rsl_rl.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,11 @@
import torch
from datetime import datetime

from rsl_rl.runners import OnPolicyRunner

from isaaclab.envs import DirectMARLEnvCfg, DirectRLEnvCfg, ManagerBasedRLEnvCfg
from isaaclab.utils.dict import print_dict
from isaaclab.utils.io import dump_yaml
from rsl_rl.runners import OnPolicyRunner

from isaaclab_rl.rsl_rl import RslRlOnPolicyRunnerCfg, RslRlVecEnvWrapper

Expand Down
2 changes: 1 addition & 1 deletion scripts/demos/h1_locomotion.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@
from omni.kit.viewport.utility import get_viewport_from_window_name
from omni.kit.viewport.utility.camera_state import ViewportCameraState
from pxr import Gf, Sdf
from rsl_rl.runners import OnPolicyRunner

from isaaclab.envs import ManagerBasedRLEnv
from isaaclab.utils.math import quat_apply
from isaaclab.utils.pretrained_checkpoint import get_published_pretrained_checkpoint
from rsl_rl.runners import OnPolicyRunner

from isaaclab_rl.rsl_rl import RslRlOnPolicyRunnerCfg, RslRlVecEnvWrapper

Expand Down
3 changes: 2 additions & 1 deletion scripts/reinforcement_learning/rsl_rl/play.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@
import time
import torch

from rsl_rl.runners import DistillationRunner, OnPolicyRunner

from isaaclab.envs import (
DirectMARLEnv,
DirectMARLEnvCfg,
Expand All @@ -68,7 +70,6 @@
from isaaclab.utils.assets import retrieve_file_path
from isaaclab.utils.dict import print_dict
from isaaclab.utils.pretrained_checkpoint import get_published_pretrained_checkpoint
from rsl_rl.runners import DistillationRunner, OnPolicyRunner

from isaaclab_rl.rsl_rl import RslRlBaseRunnerCfg, RslRlVecEnvWrapper, export_policy_as_jit, export_policy_as_onnx

Expand Down
3 changes: 2 additions & 1 deletion scripts/reinforcement_learning/rsl_rl/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@
import torch
from datetime import datetime

from rsl_rl.runners import DistillationRunner, OnPolicyRunner
Copy link
Collaborator

Choose a reason for hiding this comment

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

is this linter change?


from isaaclab.envs import (
DirectMARLEnv,
DirectMARLEnvCfg,
Expand All @@ -90,7 +92,6 @@
)
from isaaclab.utils.dict import print_dict
from isaaclab.utils.io import dump_yaml
from rsl_rl.runners import DistillationRunner, OnPolicyRunner

from isaaclab_rl.rsl_rl import RslRlBaseRunnerCfg, RslRlVecEnvWrapper

Expand Down
3 changes: 2 additions & 1 deletion scripts/sim2sim_transfer/rsl_rl_transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@
import torch
import yaml

from rsl_rl.runners import DistillationRunner, OnPolicyRunner

from isaaclab.envs import (
DirectMARLEnv,
DirectMARLEnvCfg,
Expand All @@ -72,7 +74,6 @@
)
from isaaclab.utils.assets import retrieve_file_path
from isaaclab.utils.dict import print_dict
from rsl_rl.runners import DistillationRunner, OnPolicyRunner

from isaaclab_rl.rsl_rl import RslRlBaseRunnerCfg, RslRlVecEnvWrapper, export_policy_as_jit, export_policy_as_onnx

Expand Down
2 changes: 1 addition & 1 deletion source/isaaclab/config/extension.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]

# Note: Semantic Versioning is used: https://semver.org/
version = "0.48.0"
version = "0.49.0"

# Description
title = "Isaac Lab framework for Robot Learning"
Expand Down
10 changes: 10 additions & 0 deletions source/isaaclab/docs/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
Changelog
---------

0.49.0 (2025-11-12)
~~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

* Updated Isaac Lab to be compatible with Isaac Sim 6.0.0.
* Updated the required Python version to 3.12 for Isaac Lab installation.
* Updated the required PyTorch version to 2.9.0+cu128 and torchvision to 0.24.0 for Isaac Lab installation.

0.48.0 (2025-11-03)
~~~~~~~~~~~~~~~~~~~

Expand Down
2 changes: 1 addition & 1 deletion source/isaaclab/isaaclab/sim/simulation_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,8 +617,8 @@ async def reset_async(self, soft: bool = False):
"""

def _init_stage(self, *args, **kwargs) -> Usd.Stage:
_ = super()._init_stage(*args, **kwargs)
with use_stage(self.get_initial_stage()):
_ = super()._init_stage(*args, **kwargs)
# a stage update here is needed for the case when physics_dt != rendering_dt, otherwise the app crashes
# when in headless mode
self.set_setting("/app/player/playSimulations", False)
Expand Down
23 changes: 18 additions & 5 deletions source/isaaclab/isaaclab/sim/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1134,7 +1134,14 @@ def is_current_stage_in_memory() -> bool:
def use_stage(stage: Usd.Stage) -> Generator[None, None, None]:
"""Context manager that sets a thread-local stage, if supported.

In Isaac Sim < 5.0, this is a no-op to maintain compatibility.
For Isaac Sim >= 6.0, this function sets the thread-local stage context in both the regular
and experimental stage utils modules. This is necessary because Isaac Sim has two separate
stage utility modules with independent thread-local storage:
- ``isaacsim.core.utils.stage`` (used by PhysicsContext)
- ``isaacsim.core.experimental.utils.stage`` (used by SimulationManager)

When using an in-memory stage, both contexts must be set to ensure that physics scene
validation and other operations work correctly.

Args:
stage: The stage to set temporarily.
Expand All @@ -1143,12 +1150,18 @@ def use_stage(stage: Usd.Stage) -> Generator[None, None, None]:
None
"""
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 5:
logger.warning("[Compat] Isaac Sim < 5.0 does not support thread-local stage contexts. Skipping use_stage().")
yield # no-op
else:
if isaac_sim_version < 6:
# Set context in both modules to ensure all Isaac Sim subsystems see the correct stage
with stage_utils.use_stage(stage):
yield
else:
# Import both stage utils modules for Isaac Sim 5.0+
import isaacsim.core.experimental.utils.stage as experimental_stage_utils

# Set context in both modules to ensure all Isaac Sim subsystems see the correct stage
with stage_utils.use_stage(stage):
with experimental_stage_utils.use_stage(stage):
yield
Comment on lines 1152 to +1164
Copy link
Contributor

Choose a reason for hiding this comment

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

logic: inverted version comparison logic - code for Isaac Sim 6.0+ runs when version < 6, and code for Isaac Sim < 6.0 runs when version >= 6

Suggested change
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 5:
logger.warning("[Compat] Isaac Sim < 5.0 does not support thread-local stage contexts. Skipping use_stage().")
yield # no-op
else:
if isaac_sim_version < 6:
# Set context in both modules to ensure all Isaac Sim subsystems see the correct stage
with stage_utils.use_stage(stage):
yield
else:
# Import both stage utils modules for Isaac Sim 5.0+
import isaacsim.core.experimental.utils.stage as experimental_stage_utils
# Set context in both modules to ensure all Isaac Sim subsystems see the correct stage
with stage_utils.use_stage(stage):
with experimental_stage_utils.use_stage(stage):
yield
isaac_sim_version = float(".".join(get_version()[2]))
if isaac_sim_version < 6:
# For Isaac Sim < 6.0, use single stage context
with stage_utils.use_stage(stage):
yield
else:
# Import both stage utils modules for Isaac Sim 6.0+
import isaacsim.core.experimental.utils.stage as experimental_stage_utils
# Set context in both modules to ensure all Isaac Sim subsystems see the correct stage
with stage_utils.use_stage(stage):
with experimental_stage_utils.use_stage(stage):
yield



def create_new_stage_in_memory() -> Usd.Stage:
Expand Down
3 changes: 2 additions & 1 deletion source/isaaclab/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
INSTALL_REQUIRES = [
# generic
"numpy<2",
"torch>=2.7",
"torch>=2.9",
"onnx>=1.18.0", # 1.16.2 throws access violation on Windows
"prettytable==3.3.0",
"toml",
Expand All @@ -43,6 +43,7 @@
"pytest",
"pytest-mock",
"junitparser",
"coverage==7.6.1",
"flatdict==4.0.1",
"flaky",
]
Expand Down
3 changes: 2 additions & 1 deletion source/isaaclab_rl/isaaclab_rl/rsl_rl/vecenv_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
import torch
from tensordict import TensorDict

from isaaclab.envs import DirectRLEnv, ManagerBasedRLEnv
from rsl_rl.env import VecEnv

from isaaclab.envs import DirectRLEnv, ManagerBasedRLEnv


class RslRlVecEnvWrapper(VecEnv):
"""Wraps around Isaac Lab environment for the RSL-RL library
Expand Down
Loading