Skip to content

Commit 752f047

Browse files
authored
Merge branch 'develop' into feature/rlinf-gr00t-n1d6-n1d7-converters
2 parents a8162b8 + fc7a387 commit 752f047

37 files changed

Lines changed: 805 additions & 1023 deletions

README.md

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
---
44

5-
# Isaac Lab
5+
# Isaac Lab 3.0.0 Beta 2
66

77
[![IsaacSim](https://img.shields.io/badge/IsaacSim-6.0.0-silver.svg)](https://docs.isaacsim.omniverse.nvidia.com/latest/index.html)
88
[![Python](https://img.shields.io/badge/python-3.12-blue.svg)](https://docs.python.org/3/whatsnew/3.12.html)
@@ -14,19 +14,6 @@
1414
[![License](https://img.shields.io/badge/license-Apache--2.0-yellow.svg)](https://opensource.org/license/apache-2-0)
1515

1616

17-
This branch is a development branch for Isaac Sim 6.0, which is currently only available through the Isaac Sim [GitHub repo](https://github.com/isaac-sim/IsaacSim).
18-
For installation, please refer to the Isaac Sim GitHub repo to build the latest Isaac Sim branch, and follow the binary installation method in the
19-
Isaac Lab documentation for Isaac Lab installation.
20-
21-
> [!WARNING]
22-
> A recent breaking change on the Isaac Lab `develop` branch is not compatible with the `develop` branch of Isaac Sim on GitHub.
23-
> To run Isaac Lab with Isaac Sim's GitHub `develop` branch, use Isaac Lab commit [`f0234a82e432e2a0b0f0a26ca3c5b59e527ddaaa`](https://github.com/isaac-sim/IsaacLab/commit/f0234a82e432e2a0b0f0a26ca3c5b59e527ddaaa) or an earlier commit.
24-
> Alternatively, use the Isaac Lab [`v3.0.0-beta`](https://github.com/isaac-sim/IsaacLab/tree/v3.0.0-beta) tag.
25-
26-
Note that this branch is currently under active development and may experience breaking changes or error messages.
27-
Performance issues and regressions may also be observed in some use cases.
28-
29-
3017
**Isaac Lab** is a GPU-accelerated, open-source framework designed to unify and simplify robotics research workflows,
3118
such as reinforcement learning, imitation learning, and motion planning. Built on [NVIDIA Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/latest/index.html),
3219
it combines fast and accurate physics and sensor simulation, making it an ideal choice for sim-to-real
@@ -76,6 +63,7 @@ dependency versions for Isaac Sim.
7663

7764
| Isaac Lab Version | Isaac Sim Version |
7865
| ----------------------------- | ------------------------- |
66+
| `release/3.0.0-beta` branch | Isaac Sim 6.0 |
7967
| `develop` branch | Isaac Sim 6.0 |
8068
| `main` branch | Isaac Sim 4.5 / 5.0 / 5.1 |
8169
| `v3.0.0*` | Isaac Sim 6.0 |
@@ -84,11 +72,6 @@ dependency versions for Isaac Sim.
8472
| `v2.1.X` | Isaac Sim 4.5 |
8573
| `v2.0.X` | Isaac Sim 4.5 |
8674

87-
## Limitations
88-
89-
The `develop` branch of Isaac Lab 3.0-Beta is currently available on Ubuntu. Windows
90-
support and Isaac Lab pip wheels will be available soon.
91-
9275
## Contributing to Isaac Lab
9376

9477
We wholeheartedly welcome contributions from the community to make this framework mature and useful for everyone.
@@ -141,7 +124,10 @@ The Isaac Lab framework is released under [BSD-3 License](LICENSE). The `isaacla
141124
corresponding standalone scripts are released under [Apache 2.0](LICENSE-mimic). The license files of its
142125
dependencies and assets are present in the [`docs/licenses`](docs/licenses) directory.
143126

144-
Note that Isaac Lab requires Isaac Sim, which includes components under proprietary licensing terms. Please see the [Isaac Sim license](docs/licenses/dependencies/isaacsim-license.txt) for information on Isaac Sim licensing.
127+
Note that full-featured workflows (PhysX, RTX rendering, ROS, URDF/MJCF importers) require
128+
[Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/latest/index.html), which includes
129+
components under proprietary licensing terms. Kit-less Newton workflows do not require Isaac Sim.
130+
Please see the [Isaac Sim license](docs/licenses/dependencies/isaacsim-license.txt) for details.
145131

146132
Note that the `isaaclab_mimic` extension requires cuRobo, which has proprietary licensing terms that can be found in [`docs/licenses/dependencies/cuRobo-license.txt`](docs/licenses/dependencies/cuRobo-license.txt).
147133

docs/index.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ Table of Contents
100100
:titlesonly:
101101

102102
source/setup/quickstart
103-
source/setup/quick_installation
104103
source/overview/own-project/index
105104
source/setup/walkthrough/index
106105
source/tutorials/index

docs/source/experimental-features/rlinf_vla_posttraining.rst

Lines changed: 87 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ From the Isaac Lab root directory:
7373
export OMNI_KIT_ACCEPT_EULA=yes
7474
7575
# Step 1: Install safe dependencies via the isaaclab_contrib[rlinf] extra
76+
# NOTE: On DGX Spark / aarch64 systems, build decord from source first
77+
# (see "Building decord on DGX Spark / aarch64" below), then run this step.
7678
uv pip install -e "source/isaaclab_contrib[rlinf]"
7779
7880
# Step 2: Install packages with conflicting constraints (--no-deps to bypass resolver)
@@ -100,9 +102,48 @@ If Step 4 fails, skip installation of flash-attn and apply this patch instead:
100102
cd Isaac-GR00T
101103
git apply /path/to/IsaacLab/scripts/imitation_learning/locomanipulation_sdg/gr00t/no_flash_attn.patch
102104
105+
.. note::
106+
107+
**Windows 11**: If ``git apply`` fails with ``error: corrupt patch at line 41``,
108+
use ``patch.exe`` (bundled with Git for Windows) instead:
109+
110+
.. code-block:: bash
111+
112+
cd Isaac-GR00T
113+
"C:\Program Files\Git\usr\bin\patch.exe" -p1 < \path\to\IsaacLab\scripts\imitation_learning\locomanipulation_sdg\gr00t\no_flash_attn.patch
114+
103115
The patch switches GR00T to PyTorch SDPA, so flash-attn is no longer required.
104116
The training and evaluation commands below work unchanged.
105117

118+
.. _rlinf-decord-aarch64:
119+
120+
Building decord on DGX Spark / aarch64
121+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122+
123+
The ``decord`` package only publishes pre-built wheels for ``manylinux2010_x86_64``
124+
and ``win_amd64``, so installation fails on aarch64 hosts (e.g. DGX Spark / Grace).
125+
Build decord from source **before** Step 1:
126+
127+
.. code-block:: bash
128+
129+
git clone --recursive https://github.com/jasontitus/decord
130+
cd decord && mkdir -p build && cd build
131+
cmake .. -DUSE_CUDA=0 -DCMAKE_BUILD_TYPE=Release
132+
make -j$(nproc)
133+
cd ../python && pip install -e .
134+
135+
Then preload the OpenMP library so it can be loaded into the Python process
136+
(see the IsaacLab `pip installation guide
137+
<https://isaac-sim.github.io/IsaacLab/develop/source/setup/installation/pip_installation.html#installing-dependencies>`_):
138+
139+
.. code-block:: bash
140+
141+
unset LD_PRELOAD
142+
export LD_PRELOAD=/lib/aarch64-linux-gnu/libgomp.so.1
143+
144+
Now re-run Step 1; the resolver will see the locally-installed decord and stop trying to fetch a wheel.
145+
146+
106147
Quick Start
107148
-----------
108149

@@ -114,20 +155,64 @@ Quick Start
114155
--config_name isaaclab_ppo_gr00t_assemble_trocar \
115156
--model_path /path/to/checkpoint
116157
117-
**Evaluation** — Evaluate a trained checkpoint with video recording:
158+
**Evaluation** — Evaluate a pretrained (base) model with video recording:
159+
160+
.. code-block:: bash
161+
162+
python scripts/reinforcement_learning/rlinf/play.py \
163+
--config_name isaaclab_ppo_gr00t_assemble_trocar \
164+
--model_path /path/to/base_model \
165+
--video
166+
167+
**Evaluation** — Evaluate an RL-finetuned checkpoint with video recording:
118168

119169
.. code-block:: bash
120170
121171
python scripts/reinforcement_learning/rlinf/play.py \
122172
--config_name isaaclab_ppo_gr00t_assemble_trocar \
123-
--model_path /path/to/checkpoint \
173+
--model_path /path/to/base_model \
174+
--rl_model_path /path/to/checkpoints/global_step_N \
124175
--video
125176
177+
Here ``--model_path`` points to the HuggingFace-format base model (with
178+
``config.json``), and ``--rl_model_path`` points to the RLinf checkpoint
179+
directory (the ``global_step_<N>`` folder). The script loads the model
180+
architecture from the base model and overlays the RL-finetuned weights
181+
(``full_weights.pt``) from the checkpoint.
182+
126183
.. note::
127184

128185
The ``--config_path`` flag is optional. When omitted, the scripts automatically
129186
search the ``isaaclab_tasks`` package for the matching YAML configuration file.
130187

188+
Checkpoints
189+
-----------
190+
191+
Checkpoints are saved every ``save_interval`` epochs (default: ``2``) to::
192+
193+
scripts/reinforcement_learning/rlinf/logs/rlinf/<timestamp>-Isaac-Assemble-Trocar-G129-Dex3-v0/<experiment_name>/checkpoints/global_step_<N>/
194+
195+
The placeholders are configurable in the task YAML
196+
(``source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/assemble_trocar/config/isaaclab_ppo_gr00t_assemble_trocar.yaml``):
197+
198+
- ``<experiment_name>`` — ``runner.logger.experiment_name`` (default: ``test_gr00t``)
199+
- ``<N>`` — increments every ``runner.save_interval`` epochs
200+
201+
The exact path is printed at startup as ``[INFO] Logging to: ...``. To resume,
202+
pass the ``global_step_<N>`` directory via ``--resume_dir``.
203+
204+
.. tip::
205+
206+
Training throughput scales with the number of parallel environments. If your
207+
GPU has spare memory, increase ``env.train.total_num_envs`` (default: ``4``)
208+
in the task YAML.
209+
210+
.. tip::
211+
212+
Each checkpoint can be several gigabytes. To avoid filling up disk space,
213+
increase ``save_interval`` in the task YAML so that fewer
214+
intermediate checkpoints are saved during training.
215+
131216
Configuration
132217
-------------
133218

docs/source/how-to/record_video.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ the Rerun visualizer rather than producing ``--video`` clips, and Viser does not
8181
``--video`` recording backend.
8282

8383
Set ``VideoRecorderCfg.backend_source = "renderer"`` to ignore active visualizers and choose from the
84-
physics/renderer stack instead. In that mode, PhysX physics (``presets=physx,...``) or Isaac RTX
85-
(``presets=isaac_rtx_renderer,...``) selects the Kit path. Newton physics (``presets=newton_mjwarp,...``) or
86-
the Newton Warp renderer (``presets=newton_renderer,...``) selects the Newton GL path when no Kit
87-
signal is present. OVRTX (``presets=ovrtx_renderer,...`` from ``isaaclab_ov``) can pair with IsaacSim
84+
physics/renderer stack instead. In that mode, PhysX physics (``physics=physx``) or Isaac RTX
85+
(``renderer=isaacsim_rtx_renderer``) selects the Kit path. Newton physics (``physics=newton_mjwarp``) or
86+
the Newton Warp renderer (``renderer=newton_renderer``) selects the Newton GL path when no Kit
87+
signal is present. OVRTX (``renderer=ovrtx_renderer`` from ``isaaclab_ov``) can pair with IsaacSim
8888
or Newton physics; in that case the video backend is selected via the physics preset. If both Kit and
8989
Newton GL signals are present, the Kit path is chosen.
9090

@@ -143,16 +143,16 @@ Summary
143143
:widths: 40 22 38
144144
:header-rows: 1
145145

146-
* - Stack example (``presets=...``)
146+
* - Stack example (``physics=`` / ``renderer=``)
147147
- Video backend
148148
- Capture mechanism
149-
* - ``physx,...`` or ``isaac_rtx_renderer,...``
149+
* - ``physics=physx`` or ``renderer=isaacsim_rtx_renderer``
150150
- Kit (``"kit"``)
151151
- ``/OmniverseKit_Persp`` + Replicator RGB
152-
* - ``newton_mjwarp,...`` or ``newton_renderer,...`` (no Kit signals)
152+
* - ``physics=newton_mjwarp`` or ``renderer=newton_renderer`` (no Kit signals)
153153
- Newton GL (``"newton_gl"``)
154154
- ``newton.viewer.ViewerGL`` on the SDP Newton model
155-
* - ``newton_mjwarp,...,ovrtx_renderer,...`` (OVRTX + Newton physics)
155+
* - ``physics=newton_mjwarp`` + ``renderer=ovrtx_renderer`` (OVRTX + Newton physics)
156156
- Newton GL (``"newton_gl"``)
157157
- ``newton.viewer.ViewerGL`` on the SDP Newton model
158158
* - ``--visualizer kit`` with default ``backend_source``

docs/source/migration/migrating_to_isaaclab_3-0.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,18 +599,19 @@ when no CLI override is given. Other fields are named presets selectable with
599599
@configclass
600600
class MyPhysicsCfg(PresetCfg):
601601
default: PhysxCfg = PhysxCfg(...) # used when no override is given
602-
physx: PhysxCfg = PhysxCfg(...) # selected by presets=physx
603-
newton_mjwarp: NewtonCfg = NewtonCfg(...) # selected by presets=newton_mjwarp
602+
physx: PhysxCfg = PhysxCfg(...) # selected by physics=physx
603+
newton_mjwarp: NewtonCfg = NewtonCfg(...) # selected by physics=newton_mjwarp
604604
605605
Selecting a preset at launch
606606
-----------------------------
607607

608-
Pass ``presets=newton_mjwarp`` (or ``presets=physx``) on the CLI to swap the entire config section:
608+
Pass ``physics=newton_mjwarp`` (or ``physics=physx``) on the CLI to swap the entire config section.
609+
The legacy ``presets=NAME`` form still works for the same values.
609610

610611
.. code-block:: bash
611612
612613
# Run with Newton backend
613-
python train.py task=Isaac-Franka-Cabinet-v0 presets=newton_mjwarp
614+
python train.py task=Isaac-Franka-Cabinet-v0 physics=newton_mjwarp
614615
615616
# Run with default (PhysX) backend
616617
python train.py task=Isaac-Franka-Cabinet-v0

docs/source/overview/core-concepts/physical-backends/newton/installation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,4 @@ To verify that the installation was successful, run the following command from t
7575

7676
.. code-block:: bash
7777
78-
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton presets=newton_mjwarp
78+
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton physics=newton_mjwarp

docs/source/overview/core-concepts/physical-backends/newton/kamino-solver.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ Before adding Kamino, first make sure the task runs with the Newton backend:
2020

2121
.. code-block:: bash
2222
23-
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton presets=newton_mjwarp
23+
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton physics=newton_mjwarp
2424
2525
Then run the same task with the Kamino preset if it is available:
2626

2727
.. code-block:: bash
2828
29-
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton presets=newton_kamino
29+
./isaaclab.sh -p scripts/environments/zero_agent.py --task Isaac-Cartpole-Direct-v0 --num_envs 128 --viz newton physics=newton_kamino
3030
3131
At the time of writing, the ``newton_kamino`` preset is defined for
3232
``Isaac-Cartpole-Direct-v0``, ``Isaac-Ant-Direct-v0``, ``Isaac-Cartpole-v0``,
33-
and ``Isaac-Ant-v0``. Passing ``presets=newton_kamino`` to another task does not
33+
and ``Isaac-Ant-v0``. Passing ``physics=newton_kamino`` to another task does not
3434
automatically enable Kamino; the task must define and validate its own ``newton_kamino``
3535
preset.
3636

@@ -66,7 +66,7 @@ You can select the preset globally:
6666

6767
.. code-block:: bash
6868
69-
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Cartpole-v0 presets=newton_kamino
69+
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Cartpole-v0 physics=newton_kamino
7070
7171
or select the physics field directly:
7272

@@ -75,7 +75,7 @@ or select the physics field directly:
7575
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Cartpole-v0 env.sim.physics=newton_kamino
7676
7777
Use the direct path override when only one task field should use the Kamino preset.
78-
Use ``presets=newton_kamino`` when you want every matching preset field in the task config
78+
Use ``physics=newton_kamino`` when you want every matching preset field in the task config
7979
to resolve to ``newton_kamino``.
8080
Isaac Lab training scripts accept these Hydra overrides after the regular command
8181
line flags; no separator is needed for the examples above.
@@ -87,7 +87,7 @@ Check Task and Asset Compatibility
8787
Kamino uses the Newton model built from the task assets. When adding Kamino to a
8888
new task, validate the following before tuning solver parameters:
8989

90-
* The task must already be compatible with the Newton backend. If ``presets=newton_mjwarp``
90+
* The task must already be compatible with the Newton backend. If ``physics=newton_mjwarp``
9191
fails during model construction, fix the asset or task configuration first.
9292
* The assets should use Newton-supported rigid bodies, articulations, and collision
9393
geometry. PhysX-only features, unsupported schemas, or missing collision shapes
@@ -226,7 +226,7 @@ Tuning Workflow
226226

227227
Use the following sequence when bringing up a new Kamino task:
228228

229-
1. Run the task with ``presets=newton_mjwarp`` and fix Newton model construction or task
229+
1. Run the task with ``physics=newton_mjwarp`` and fix Newton model construction or task
230230
compatibility issues first.
231231
2. Add a ``newton_kamino`` preset with conservative values copied from the closest
232232
validated task.

docs/source/overview/core-concepts/physical-backends/newton/supported-features.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ currently supports Newton:
1717
1818
grep -rln "newton_mjwarp" source/isaaclab_tasks/
1919
20-
Passing ``presets=newton_mjwarp`` to a task without that preset will raise an
20+
Passing ``physics=newton_mjwarp`` to a task without that preset will raise an
2121
error at launch. The :doc:`mjwarp-solver` page covers how to add a Newton
2222
preset to your own task.
2323

docs/source/overview/core-concepts/physical-backends/newton/using-vbd-solver.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ You can select the deformable Newton preset globally:
9191

9292
.. code-block:: bash
9393
94-
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Lift-Soft-Franka-v0 presets=newton_mjwarp_vbd
94+
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Lift-Soft-Franka-v0 physics=newton_mjwarp_vbd
9595
9696
or select the physics field directly:
9797

@@ -100,7 +100,7 @@ or select the physics field directly:
100100
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=Isaac-Lift-Soft-Franka-v0 env.sim.physics=newton_mjwarp_vbd
101101
102102
Use the direct path override when only one task field should use the VBD preset.
103-
Use ``presets=newton_mjwarp_vbd`` when you want every matching preset field in
103+
Use ``physics=newton_mjwarp_vbd`` when you want every matching preset field in
104104
the task config to resolve to that preset. Isaac Lab training scripts accept
105105
these Hydra overrides after the regular command line flags; no separator is
106106
needed for the examples above.

docs/source/overview/core-concepts/physical-backends/newton/warp-environments.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ specific to warp envs; for Newton physics limitations see :doc:`supported-featur
228228
``class_type`` fields resolve to ``isaaclab_physx.*`` classes that depend on
229229
``omni.physics.tensors`` (a Kit module the warp runtime does not initialise), and several
230230
warp APIs (env-mask reset, CUDA graph capture) require the Newton articulation. Configure
231-
the cfg with a Newton physics block (or ``presets=newton_mjwarp``).
231+
the cfg with a Newton physics block (or ``physics=newton_mjwarp``).
232232

233233
**MDP coverage**
234234

0 commit comments

Comments
 (0)