Skip to content

Isaac Lab Interop.#413

Draft
alexmillane wants to merge 15 commits intomainfrom
alex/prototype/env_registration_callback
Draft

Isaac Lab Interop.#413
alexmillane wants to merge 15 commits intomainfrom
alex/prototype/env_registration_callback

Conversation

@alexmillane
Copy link
Collaborator

@alexmillane alexmillane commented Feb 12, 2026

Summary

[DO NOT MERGE]. Cont. on #465

Prototype of the features needed for Isaac Lab interop.

Detailed description

  • Provides an Isaac Lab-compatible callback for registering external environments.
  • Removes JSON agent config dependency: RslRlActionPolicy now auto-loads params/agent.yaml saved alongside the checkpoint by IsaacLab's train.py.

Usage

Train a few iterations (override any agent field via Hydra CLI args- for example agent.policy.activation):

/isaac-sim/python.sh submodules/IsaacLab/scripts/reinforcement_learning/rsl_rl/train.py \
  --external_callback isaaclab_arena.environments.isaaclab_interop.environment_registration_callback \
  --task lift_object --num_envs 512 \
  agent.max_iterations=4000 agent.policy.activation=relu

Evaluate (checkpoint path is the only required argument — agent config is loaded automatically from params/agent.yaml in the same directory):

/isaac-sim/python.sh isaaclab_arena/evaluation/policy_runner.py \
  --policy_type rsl_rl \
  --num_episodes 1 \
  --checkpoint_path logs/rsl_rl/generic_experiment/<timestamp>/model_0.pt \
  lift_object --rl_training_mode False

alexmillane and others added 7 commits February 12, 2026 15:20
Remove the separate JSON agent config file. RslRlActionPolicy now
auto-detects params/agent.yaml saved alongside the checkpoint by
IsaacLab's train.py, making the checkpoint the single source of truth.

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Copy link
Collaborator Author

@alexmillane alexmillane left a comment

Choose a reason for hiding this comment

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

Thanks for doing this! The docs need a bit of rework to account for the massive simplification.

- Delete rigid_object_variant.py (prototype scratch file)
- Move base_rsl_rl_policy.py to isaaclab_arena_examples/policy/
- Update lift_object_environment.py import for new module path
- Replace WIP comment in cameras.py with clean TODO(cvolk)
- Add TODO(cvolk) to RL workflow docs for follow-up rewrite

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Replace the outdated Docker-based instructions with the correct
host workflow using a Python 3.11 venv.

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
AppLauncher's enable_pinocchio path wraps _start_app() with a patch that
calls from pxr import Gf immediately after startup. If Isaac Sim's extension
loading is incomplete (e.g. due to a version constraint in the experience
file), pxr is never added to sys.path and the patch crashes with
ModuleNotFoundError.

Setting disable_pinocchio_patch=True tells AppLauncher to skip the patch.
Pinocchio is already imported before AppLauncher is constructed, which is
sufficient for it to work correctly.

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
…back

- Replace Arena's removed train.py with IsaacLab's train.py + --external_callback
- Add explanation of how the callback registers the environment before training
- Add Hydra override examples for hyperparameter tuning
- Update tensorboard command to use /isaac-sim/python.sh -m tensorboard.main
- Rewrite evaluation section: drop removed play.py method, update commands
  to remove --agent_cfg_path (checkpoint now auto-loads params/agent.yaml)
- Update step 1 validation command to use IsaacLab train.py

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Signed-off-by: Clemens Volk <cvolk@nvidia.com>
- Switch base image from nvcr.io/nvidia/isaac-sim:5.0.0 to 5.1.0
- Add USER root after FROM (5.1.0 runs as non-root by default)
- Replace bare pip/pip3 calls with /isaac-sim/python.sh -m pip to
  target the Isaac Sim Python environment; add --break-system-packages
  where the system pip is still required (huggingface-hub CLI)
- Add chmod a+x /isaac-sim needed by 5.1.0
- Fix OSQP check to use /isaac-sim/python.sh -c
- Add isaac-sim group to the runtime user in entrypoint.sh

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
The disable_pinocchio_patch workaround was added to prevent AppLauncher's
pxr.Gf.Matrix4d patch from crashing when extension loading was incomplete
due to the isaacsim.asset.importer.urdf version mismatch. With Isaac Sim
5.1.0 the correct URDF extension version is present, so extensions load
cleanly and the patch works as intended.

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
@cvolkcvolk cvolkcvolk changed the title DRAFT: Isaac Lab Interop. Isaac Lab Interop. Mar 3, 2026
@cvolkcvolk cvolkcvolk marked this pull request as draft March 6, 2026 08:26
cvolkcvolk added a commit that referenced this pull request Mar 6, 2026
## Summary
Original MR [Isaac Lab Interop.
#413](#413)

## Detailed description

Provides an Isaac Lab-compatible callback for registering external
environments.
Removes JSON agent config dependency: RslRlActionPolicy now auto-loads
params/agent.yaml saved alongside the checkpoint by IsaacLab's train.py.
Usage
Train a few iterations (override any agent field via Hydra CLI args- for
example agent.policy.activation):

```
/isaac-sim/python.sh submodules/IsaacLab/scripts/reinforcement_learning/rsl_rl/train.py \
  --external_callback isaaclab_arena.environments.isaaclab_interop.environment_registration_callback \
  --task lift_object --num_envs 512 \
  agent.max_iterations=4000 agent.policy.activation=relu
```
  
  
Evaluate (checkpoint path is the only required argument — agent config
is loaded automatically from params/agent.yaml in the same directory):

```
/isaac-sim/python.sh isaaclab_arena/evaluation/policy_runner.py \
  --policy_type rsl_rl \
  --num_episodes 1 \
  --checkpoint_path logs/rsl_rl/generic_experiment/<timestamp>/model_0.pt \
  lift_object --rl_training_mode False
```

---------

Signed-off-by: Clemens Volk <cvolk@nvidia.com>
Co-authored-by: Qian Lin <qianl@nvidia.com>
Co-authored-by: alex <amillane@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants