Upgrade Isaac Lab to Beta 2#903
Conversation
alexmillane
left a comment
There was a problem hiding this comment.
Self review #1.
Greptile SummaryThis PR updates Arena for Isaac Lab 3.0 Beta 2. The main changes are:
Confidence Score: 4/5The asset-root migration needs a fix for custom or mirrored nucleus deployments.
isaaclab_arena/assets/nucleus.py Important Files Changed
Reviews (1): Last reviewed commit: "Added note about import issues bug." | Re-trigger Greptile |
| from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR | ||
|
|
||
| # TODO(2026.07.14, Point Arena assets to the production bucket before release) | ||
| ARENA_NUCLEUS_DIR: str = ISAACLAB_NUCLEUS_DIR.replace("omniverse-content-production", "omniverse-content-staging") |
There was a problem hiding this comment.
Staging Root Can Stay Production
When ISAACLAB_NUCLEUS_DIR is a custom Omniverse root, local mirror, or any value that does not contain omniverse-content-production, this replacement is a no-op. All changed Arena asset paths then keep using the non-staging Isaac Lab root, so staging-only Arena USDs and textures fail to load at runtime.
| from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR | ||
|
|
||
| # TODO(2026.07.14, Point Arena assets to the production bucket before release) | ||
| ARENA_NUCLEUS_DIR: str = ISAACLAB_NUCLEUS_DIR.replace("omniverse-content-production", "omniverse-content-staging") |
There was a problem hiding this comment.
🔵 .replace() silently no-ops if the substring isn't there
If ISAACLAB_NUCLEUS_DIR ever stops containing omniverse-content-production — a future URL change, or a user who overrides the asset root to an on-prem/custom Nucleus — this replace quietly returns the string unchanged, so ARENA_NUCLEUS_DIR points at a bucket that doesn't host Arena assets and every asset load fails with a confusing not-found. Since it's a temporary staging shim, could we at least log (or assert, if custom roots aren't a concern) when the substring isn't found, so the assumption fails loudly rather than pointing everything at the wrong bucket?
| Tracked upstream at https://github.com/isaac-sim/IsaacLab/issues/6514. | ||
| TODO: remove this workaround once IsaacLab #6514 is resolved. | ||
| """ | ||
| import sys |
There was a problem hiding this comment.
🔵 Hoist import sys to the top
sys is stdlib and doesn't need the sim running or break a cycle, so it can move to the module-level imports rather than sitting inside the function.
🤖 Isaac Lab-Arena Review BotSummaryThis PR bumps the Isaac Lab submodule to 3.0 Beta 2 and threads through the downstream fallout: repo-wide Findings🔵 🔵 Test CoverageThe new VerdictMinor fixes needed — nits only; the upgrade itself looks well-executed. (PR is still marked DRAFT / Greptile check pending.) |
…ture/upgrade_lab_to_beta2
- Migrate the two remaining 'from isaaclab.utils import configclass' imports (light_color/light_direction variations) to the module path used by the rest of the upgrade; the package no longer re-exports the decorator, so these were failing collection with 'module object is not callable'. - Import MJWarpSolverCfg/NewtonCfg from the isaaclab_newton.physics package root so it resolves whether MJWarpSolverCfg lives in newton_manager_cfg (older) or mjwarp_manager_cfg (Beta 2). Signed-off-by: alex <amillane@nvidia.com>
The test handed ArenaEnvBuilder the raw argparse Namespace, which lacks the builder-cfg fields (language_instruction) after the typed-config migration; translate the CLI args with arena_env_builder_cfg_from_argparse like the other tests. Signed-off-by: alex <amillane@nvidia.com>
…2' into alex/feature/upgrade_lab_to_beta2
peterd-NV
left a comment
There was a problem hiding this comment.
Overall looks good to me, just left some questions regarding compatibility with the curobo features that were recently merged.
| """Pytest entry point for Galbot arm reaching goal test.""" | ||
| result = run_simulation_app_function( | ||
| _test_galbot_arm_reaches_goal, | ||
| headless=False, |
There was a problem hiding this comment.
This changes headless to True now (which I assume is what we want) but just flagging in case there's a particular reason this was set to false before.
There was a problem hiding this comment.
I think this was a mistake. I just sort of noticed running tests on my machine that the GUI was popping up during testing 😓
There was a problem hiding this comment.
Does curobo related code/test image also need to bump up to Isaac Lab 3.0 Beta 2? Looks like it's still using the old Lab version right now.
@xyao-nv added some curobo features recently which I think would also need to have the registry path updated from ISAACLAB_NUCLEUS_DIR to ARENA_NUCLEUS_DIR (e.g. here)
|
|
||
| container: | ||
| image: nvcr.io/nvstaging/isaac-amr/isaaclab_arena:latest | ||
| image: nvcr.io/nvstaging/isaac-amr/isaaclab_arena:lab_beta_2_testing |
There was a problem hiding this comment.
Note: after the upgrade we could push a new image with latest tag and restore this
ARENA_NUCLEUS_DIR is defined in isaaclab_arena.assets.nucleus, not in Isaac Lab's isaaclab.utils.assets, so the previous import failed at module load. Signed-off-by: alex <amillane@nvidia.com>
Summary
Update our Isaac Lab submodule to Isaac Lab 3.0 Beta 2.
Detailed description
submodules/IsaacLabpointer to Isaac Lab 3.0 Beta 2; the rest is downstream fallout.configclassimports repo-wide (from isaaclab.utils.configclass import configclass), required now thatlazy_exportmakes the shallow import bind the submodule instead of the decorator.ARENA_NUCLEUS_DIR, since Beta 2 movedISAACLAB_NUCLEUS_DIRto the production bucket where Arena assets aren't published yet.MJWarpSolverCfgmove,set_local_poseswarp args).AppLauncherminting a duplicateArticulationCfg(which caused "Unknown asset config type for robot") by purging leakedisaaclab_assetspresets after app launch in the interop callback; also defer cfg imports in tests to avoid the same class duplication (IsaacLab #6424).