Skip to content

Commit a6b2b6e

Browse files
StafaHkellyguo11
andauthored
[Docs Overhaul] --extra usage explained, and fixes to commands (#6979)
# Description Adds a section for explain --extra usage for uv run, and links it to the install and preset. ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] 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 added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package (do **not** edit `CHANGELOG.rst` or bump `extension.toml` — CI handles that) - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: Mustafa H <34825877+StafaH@users.noreply.github.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
1 parent 2404010 commit a6b2b6e

21 files changed

Lines changed: 1189 additions & 2160 deletions

File tree

.github/workflows/license-check.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ jobs:
6161
ACCEPT_EULA: Y
6262
ISAACSIM_ACCEPT_EULA: YES
6363
run: |
64-
uv sync --extra all --extra test
65-
# Isaac Sim conflicts with --extra all under uv, so install it imperatively
66-
# after the sync. Read the pinned spec from pyproject (single source of truth).
67-
ISAACSIM_SPEC=$(.venv/bin/python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['optional-dependencies']['isaacsim'][0])")
68-
uv pip install "$ISAACSIM_SPEC"
64+
# ``all`` covers every backend (Isaac Sim included), RL library, and visualizer.
65+
# ``rlinf`` and ``mimic`` are outside ``all``, so name them to keep them scanned.
66+
# No extras conflict, so this is a single resolution -- Isaac Sim no longer needs
67+
# an imperative install after the sync.
68+
uv sync --extra all --extra test --extra rlinf --extra mimic
6969
uv pip install pip-licenses pipdeptree \
7070
-r tools/template/requirements.txt
7171
# Put the venv on PATH for later steps.

.github/workflows/wheel.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,4 +200,4 @@ jobs:
200200
--extra-index-url https://pypi.nvidia.com \
201201
--index-strategy unsafe-best-match \
202202
--prerelease=allow \
203-
"${wheel}[isaacsim,all]"
203+
"${wheel}[all]"

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ Notes:
224224
Snake-style `Test_<Filename_Stem_TitleCase>`, mirroring the filename. Each underscore-separated segment is TitleCase. Common acronyms stay uppercase when separate segments. **Do not** use CamelCase here; snake-style is the deliberate convention for these long compound names.
225225

226226
-`Test_Cli_Install_Core_In_Uvenv_Correctness`
227-
-`Test_Uv_Pip_Install_Isaaclab_All_Isaacsim_Trains_Cartpole`
227+
-`Test_Uv_Pip_Install_Isaaclab_All_Trains_Cartpole`
228228
-`TestCliInstallCoreInUvenvCorrectness`
229229

230230
#### Method naming (strict)

docs/_extensions/isaaclab_docs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ def run(self) -> list[nodes.Node]:
216216
content = f"""\
217217
.. code-block:: bash
218218
219-
uv pip install "isaaclab[isaacsim,all]" \\
219+
uv pip install "isaaclab[all]" \\
220220
--overrides "{overrides_url}" \\
221221
--extra-index-url https://pypi.nvidia.com \\
222222
--index-strategy unsafe-best-match --prerelease=allow
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.. note::
22

33
The ``isaaclab`` pip wheel bundles all Isaac Lab extensions. Install with
4-
``[isaacsim,all]`` for the full Isaac Sim workflow.
4+
``[all]`` for the full workflow: it carries Isaac Sim, both OV backends, every RL
5+
library, and every visualizer.

docs/source/setup/installation/index.rst

Lines changed: 52 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ Install ``uv``, clone Isaac Lab, and start a workflow:
142142
uv run isaaclab train --rl_library rsl_rl \
143143
--task Isaac-Cartpole-Direct physics=newton_mjwarp
144144
145-
# Add OV PhysX and OVRTX only when needed
146-
uv run --extra ovphysx,ovrtx isaaclab train --rl_library rsl_rl \
147-
--task Isaac-Cartpole-Direct physics=newton_mjwarp
145+
# OV PhysX backend
146+
uv run --extra ovphysx isaaclab train --rl_library rsl_rl \
147+
--task Isaac-Cartpole-Direct physics=ovphysx
148148
149149
# Full Isaac Sim support
150150
uv run --extra isaacsim isaaclab train --rl_library rsl_rl \
@@ -168,9 +168,9 @@ Install ``uv``, clone Isaac Lab, and start a workflow:
168168
uv run isaaclab train --rl_library rsl_rl \
169169
--task Isaac-Cartpole-Direct physics=newton_mjwarp
170170
171-
# Add OV PhysX and OVRTX only when needed
172-
uv run --extra ovphysx,ovrtx isaaclab train --rl_library rsl_rl \
173-
--task Isaac-Cartpole-Direct physics=newton_mjwarp
171+
# OV PhysX backend
172+
uv run --extra ovphysx isaaclab train --rl_library rsl_rl \
173+
--task Isaac-Cartpole-Direct physics=ovphysx
174174
175175
# Full Isaac Sim support
176176
uv run --extra isaacsim isaaclab train --rl_library rsl_rl \
@@ -208,9 +208,9 @@ Install ``uv``, clone Isaac Lab, and start a workflow:
208208
uv run isaaclab train --rl_library rsl_rl ^
209209
--task Isaac-Cartpole-Direct physics=newton_mjwarp
210210
211-
:: Add OV PhysX and OVRTX only when needed
212-
uv run --extra ovphysx,ovrtx isaaclab train --rl_library rsl_rl ^
213-
--task Isaac-Cartpole-Direct physics=newton_mjwarp
211+
:: OV PhysX backend
212+
uv run --extra ovphysx isaaclab train --rl_library rsl_rl ^
213+
--task Isaac-Cartpole-Direct physics=ovphysx
214214
215215
:: Full Isaac Sim support
216216
uv run --extra isaacsim isaaclab train --rl_library rsl_rl ^
@@ -219,15 +219,22 @@ Install ``uv``, clone Isaac Lab, and start a workflow:
219219
:: Play a policy
220220
uv run isaaclab play --rl_library rsl_rl --task Isaac-Cartpole-Direct --viz newton
221221
222-
``uv run`` installs the core dependencies automatically. Add ``--extra <name>``
223-
before ``isaaclab`` when a command needs an optional integration. Pass a
224-
comma-separated list to enable several extras, or repeat ``--extra``. For example,
225-
``--extra ovphysx,ovrtx`` enables both OV backends. Use ``--extra all`` for a
226-
larger compatible bundle.
222+
``uv run`` installs the core dependencies automatically. The ``--extra <name>``
223+
option resolves an optional integration only when that command needs it. Place it
224+
before ``isaaclab``; for example, ``--extra ov`` installs both ovphysx and ovrtx
225+
backends. Pass a comma-separated list or repeat ``--extra``. No extras conflict, so
226+
any combination resolves into one environment, and ``--extra all`` installs every
227+
backend, RL library, and visualizer at once:
228+
229+
.. code-block:: bash
230+
231+
uv run --extra all isaaclab train --rl_library rsl_rl \
232+
--task Isaac-Cartpole-Direct physics=isaacsim_physx
227233
228-
You are now ready to use Isaac Lab. Continue with the :doc:`/source/setup/quickstart`,
229-
which starts with your first task and introduces the available commands, RL libraries,
230-
backends, optional extras, and visualizers.
234+
See :ref:`installation-optional-extras` for the available extras.
235+
236+
Head over to the :doc:`/source/setup/quickstart`, which starts with your first task and
237+
introduces the available commands, RL libraries, backends, and visualizers.
231238

232239
.. _installation-legacy-installer:
233240

@@ -554,6 +561,8 @@ The project workflow records the dependency in ``pyproject.toml`` and updates ``
554561
when Isaac Lab is part of an application you maintain; use a standalone environment for exploratory
555562
or temporary work.
556563

564+
.. _installation-optional-extras:
565+
557566
Optional extras
558567
~~~~~~~~~~~~~~~
559568

@@ -567,27 +576,38 @@ use ``uv pip install "isaaclab[<extra>]"``; for a uv project, use
567576

568577
* - Extra
569578
- What it installs
570-
* - ``all``
571-
- RL framework extras for SB3, SKRL, and RSL-RL.
572579
* - ``isaacsim``
573580
- Isaac Sim (``isaacsim[all,extscache]`` version |isaacsim_version|) from
574581
`pypi.nvidia.com <https://pypi.nvidia.com>`__.
575-
576-
For example, use ``isaaclab[all]`` for the RL extras or
577-
``isaaclab[isaacsim,all]`` for a full Isaac Sim and RL workflow. Combining ``isaacsim`` and
578-
``all`` requires the checked-in uv override file because Isaac Sim's package pins currently conflict
579-
with the Newton viewer stack:
582+
* - ``ov``
583+
- Both OV backends: OV PhysX and OV RTX.
584+
* - ``ovphysx`` / ``ovrtx``
585+
- OV PhysX only / OV RTX only.
586+
* - ``rl-games`` / ``sb3`` / ``skrl`` / ``rsl-rl`` / ``rlinf``
587+
- The corresponding RL framework.
588+
* - ``rerun`` / ``viser``
589+
- The corresponding visualizer.
590+
* - ``mimic`` / ``teleop``
591+
- Imitation learning / XR teleoperation.
592+
* - ``tetrahedralization`` / ``video``
593+
- Mesh tetrahedralization / video recording.
594+
* - ``leapp``
595+
- LEAP model export support.
596+
* - ``all``
597+
- Every backend, RL library, and visualizer: ``isaacsim``, ``ov``, ``rl-games``,
598+
``sb3``, ``skrl``, ``rsl-rl``, ``rerun``, and ``viser``.
599+
* - ``test``
600+
- Developer test and documentation tooling.
601+
602+
Extras can be combined freely: none of them conflict, so any set of extras -- including
603+
the Isaac Sim and OV backend stacks together -- resolves into a single environment.
604+
Use ``all`` to get every backend, RL library, and visualizer in one flag. The
605+
specialized extras (``rlinf``, ``mimic``, ``teleop``, ``tetrahedralization``, ``video``,
606+
``leapp``) and the developer ``test`` tooling are not part of ``all``; request them by
607+
name.
580608

581609
.. isaaclab-uv-wheel-install::
582610

583-
The combined installation through ``pip`` is unsupported until the conflicting upstream Isaac Sim
584-
pins are updated. The ``rl_games`` package is not included in wheel extras; install it separately
585-
when required:
586-
587-
.. code-block:: bash
588-
589-
pip install "rl-games @ git+https://github.com/isaac-sim/rl_games.git@python3.11" gym standard-distutils
590-
591611
Install the CUDA-enabled PyTorch build appropriate for your system architecture:
592612

593613
.. tab-set::

docs/source/setup/quickstart.rst

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,18 @@ Training outputs, including checkpoints, are written under ``logs/``. Use
4040

4141
``uv run`` installs core dependencies automatically. When a command needs an
4242
optional integration, add ``--extra <name>`` before ``isaaclab``. Pass a
43-
comma-separated list to enable several extras, or repeat ``--extra``. For example:
43+
comma-separated list to enable several extras. For example:
4444

4545
.. code-block:: bash
4646
47-
uv run --extra ovphysx,ovrtx isaaclab train --rl_library rsl_rl \
47+
uv run --extra ovphysx isaaclab train --rl_library rsl_rl \
4848
--task Isaac-Cartpole-Direct physics=ovphysx
4949
5050
Extras install capabilities; task selectors choose how to use them. For example,
5151
``--extra ovphysx`` makes the OV PhysX integration available, while
52-
``physics=ovphysx`` selects it for the task. Common extras include ``rl-games``,
53-
``skrl``, ``sb3``, ``rlinf``, ``ov`` (both OV backends), ``ovphysx``, ``ovrtx``,
54-
``rerun``, ``viser``, and ``video``. Use ``--extra all`` for a larger compatible
55-
bundle.
52+
``physics=ovphysx`` selects it for the task. Extras can be combined freely, and
53+
``--extra all`` installs every backend, RL library, and visualizer at once. See
54+
:ref:`installation-optional-extras` for the complete list.
5655

5756

5857
Choose an RL library
@@ -138,27 +137,36 @@ configuration; use the task help to see the supported selectors:
138137
uv run isaaclab train --task Isaac-Cartpole-Direct --help
139138
140139
.. list-table::
141-
:widths: 28 72
140+
:widths: 28 48 24
142141
:header-rows: 1
143142

144143
* - Selector
145144
- Backend
145+
- Required extra
146146
* - ``physics=newton_mjwarp``
147147
- Newton using the MuJoCo-Warp solver. This is a good default for the quickstart.
148+
- None
148149
* - ``physics=newton_kamino``
149150
- Newton using the Kamino solver. This backend is beta and supports a limited set of tasks.
151+
- None
150152
* - ``physics=ovphysx``
151153
- OV PhysX.
154+
- ``ov`` or ``ovphysx``
152155
* - ``physics=isaacsim_physx``
153156
- Isaac Sim PhysX.
157+
- ``isaacsim``
154158
* - ``renderer=newton_renderer``
155159
- Newton Warp renderer.
160+
- None
156161
* - ``renderer=ovrtx``
157162
- OV RTX renderer.
163+
- ``ov`` or ``ovrtx``
158164
* - ``renderer=isaacsim_rtx``
159165
- Isaac Sim RTX renderer.
166+
- ``isaacsim``
160167
* - ``renderer=rtx``
161168
- Automatic RTX renderer selection.
169+
- ``isaacsim`` or ``ovrtx``
162170

163171
Add task-specific options with ``presets=<name>``; for example:
164172

@@ -179,23 +187,27 @@ Use ``--viz`` (or ``--visualizer``) to select one or more visualizers during tra
179187
comma-separated list without spaces, such as ``--viz newton,rerun``.
180188

181189
.. list-table::
182-
:widths: 18 82
190+
:widths: 18 58 24
183191
:header-rows: 1
184192

185193
* - Option
186194
- Use it to
195+
- Required extra
187196
* - ``--viz newton``
188197
- Open the Newton visualizer.
198+
- None
189199
* - ``--viz rerun``
190-
- Stream the task to the Rerun visualizer. Add ``--extra rerun`` before
191-
``isaaclab`` when it is not already installed.
200+
- Stream the task to the Rerun visualizer.
201+
- ``rerun``
192202
* - ``--viz viser``
193-
- Open the web-based Viser visualizer. Add ``--extra viser`` before
194-
``isaaclab`` when it is not already installed.
203+
- Open the web-based Viser visualizer.
204+
- ``viser``
195205
* - ``--viz kit``
196206
- Open the Kit visualizer when it is available in your environment.
207+
- ``isaacsim``
197208
* - Omit ``--viz`` or use ``--viz none``
198209
- Run headlessly.
210+
- None
199211

200212
For example, view the same task in both the Newton and Rerun visualizers:
201213

@@ -208,6 +220,41 @@ See :doc:`/source/overview/core-concepts/visualization` for visualizer setup and
208220
configuration.
209221

210222

223+
Replay a checkpoint
224+
-------------------
225+
226+
Train Cartpole to create a checkpoint:
227+
228+
.. code-block:: bash
229+
230+
uv run isaaclab train --rl_library rsl_rl \
231+
--task Isaac-Cartpole-Direct --num_envs 16 --max_iterations 10 \
232+
physics=newton_mjwarp
233+
234+
Then replay the newest checkpoint in the Newton visualizer:
235+
236+
.. code-block:: bash
237+
238+
uv run isaaclab play --rl_library rsl_rl \
239+
--task Isaac-Cartpole-Direct physics=newton_mjwarp \
240+
--checkpoint latest --viz newton
241+
242+
Choose a checkpoint with one of the following selectors:
243+
244+
.. list-table::
245+
:widths: 38 62
246+
:header-rows: 1
247+
248+
* - Selector
249+
- Loads
250+
* - ``--checkpoint <path>``
251+
- The checkpoint at the specified local path.
252+
* - ``--checkpoint best``
253+
- The library-specific best or final checkpoint. If none was saved separately, this resolves to ``latest``.
254+
* - ``--checkpoint latest``
255+
- The highest-step checkpoint from the newest compatible run.
256+
257+
211258
Next steps
212259
----------
213260

pyproject.toml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,11 @@ dependencies = [
100100
]
101101

102102
[project.optional-dependencies]
103-
# Automatic surface-to-volume tetrahedralization. PyTetWild imports PyVista eagerly,
104-
# so its ``all`` extra is required even when only the array API is used.
103+
105104
tetrahedralization = ["pytetwild[all]>=0.3.0,<0.4"]
106-
# Video recording. MoviePy bundles an FFmpeg binary through imageio-ffmpeg, so
107-
# keep this dependency explicit rather than including it in default installs.
105+
108106
video = ["moviepy>=1.0.3,<2.0.0.dev0"]
109-
# Developer/test tooling.
107+
110108
test = [
111109
"pytest",
112110
"pytest-mock",
@@ -149,7 +147,6 @@ rerun = [
149147
]
150148

151149
isaacsim = ["isaacsim[all,extscache]==6.0.1.0"]
152-
153150
ov = ["ovphysx==0.5.9", "ovrtx>=0.4.0,<0.5.0", "ovstage==0.1.0.346039"]
154151
ovphysx = ["ovphysx==0.5.9", "ovstage==0.1.0.346039"]
155152
ovrtx = ["ovrtx>=0.4.0,<0.5.0", "ovstage==0.1.0.346039"]
@@ -160,17 +157,13 @@ mimic = [
160157
"robomimic @ git+https://github.com/ARISE-Initiative/robomimic.git@v0.4.0 ; sys_platform == 'linux'",
161158
]
162159

163-
# XR teleoperation: carries Isaac Sim for the Kit XR runtime, and isaaclab_mimic because
164-
# ``isaaclab teleop record`` imports it (robomimic stays in ``mimic``).
165160
teleop = [
166161
"isaacsim[all,extscache]==6.0.1.0",
167162
"isaaclab-teleop",
168163
"isaaclab-mimic",
169-
# IsaacTeleop is Linux x86_64 only
170164
"isaacteleop[retargeters,ui,cloudxr]~=1.4.0 ; platform_system == 'Linux' and platform_machine == 'x86_64'",
171165
"dex-retargeting==0.5.0 ; platform_system == 'Linux' and platform_machine == 'x86_64'",
172166
]
173-
# RLinf VLA post-training (externally contributed).
174167
rlinf = [
175168
"ray[default]>=2.47.0",
176169
"av>=12.3.0",
@@ -183,16 +176,16 @@ rlinf = [
183176
"peft>=0.17.0",
184177
"pandas",
185178
]
186-
# Aggregate of the compatible extras. Omits teleop (would pull Isaac Sim in) and ovphysx
187-
# (packaging<24 clash with isaacsim); install those via their own extra.
188-
# Also omits tetrahedralization and video because their dependencies are large and
189-
# narrowly used; request either extra explicitly when needed.
190-
all = [
191-
"isaaclab-dev[sb3,skrl,rl-games,rsl-rl,viser,rerun,rlinf,mimic]",
192-
]
193179
leapp = [
194180
"leapp>=0.5.2",
195181
]
182+
# Every backend, RL library, and visualizer in one flag. No extra is forked in
183+
# [tool.uv].conflicts, so Isaac Sim and both OV backends resolve into a single
184+
# environment. The specialized extras (rlinf, mimic, teleop, tetrahedralization,
185+
# video, leapp) and the developer ``test`` tooling stay opt-in by name.
186+
all = [
187+
"isaaclab-dev[sb3,skrl,rl-games,rsl-rl,viser,rerun,isaacsim,ov]",
188+
]
196189

197190
# Single source of truth for externally-pinned versions, read by docs/conf.py, the
198191
# install CLI, and CI. TOML cannot interpolate, so the pins in [project.dependencies],
@@ -406,12 +399,6 @@ override-dependencies = [
406399
# platform split from [project.dependencies] so only one lands per platform.
407400
"usd-exchange>=2.2 ; platform_machine == 'aarch64'",
408401
]
409-
# ``ov`` stays forked: it pulls ovrtx, which is not validated alongside Isaac Sim.
410-
# ``teleop`` bundles isaacsim, so it inherits that pair.
411-
conflicts = [
412-
[{ extra = "teleop" }, { extra = "ov" }],
413-
[{ extra = "isaacsim" }, { extra = "ov" }],
414-
]
415402
python-preference = "only-managed"
416403
package = false
417404

0 commit comments

Comments
 (0)