Repository navigation
Conversation
|
run-ci |
|
There was a problem hiding this comment.
Isaac Lab Review Bot
The PR adds the flat Franka configurations, backend-aware rigid-body resolution, and non-contiguous Newton shape selection, but several issues need correction before merge: clone-plan direct matching uses the wrong namespace, one deprecated Franka config no longer preserves its prior asset path, the deprecation bridge lacks the repository’s warning/removal form, source no-match behavior regresses, and there are smaller style and test-naming inconsistencies.
- Design and architecture: The opt-in flat Franka split and use of
root_view.body_shapesare sound design choices. However,prefer_direct_matchescompares source prototype paths with destination-space expressions under clone plans, defeating the direct-body preference for prototypes outside the environment namespace. The compatibility helpers also interrupt the module’s constants-first structure by appearing before the remaining public Franka configuration. - API: The new flat and legacy Franka symbols are exported through both lazy-export stubs, and
prefer_direct_matches=Falsepreserves resolver behavior for unchanged callers. The new option is not correct for all clone-plan producer paths, and frame-transformer source resolution now lets the resolver’s singleton count check replace the existing descriptive no-matchValueErrorwith a genericRuntimeError. - Compatibility and deprecation: Breaking changes:
FRANKA_PANDA_MENAGERIE_CFGpreviously usedfranka_panda.usdabut now resolves tofranka_panda_nestedInstance.usda, despite documentation claiming its previous asset contract remains available. The deprecated Franka names emitFutureWarningwithout a removal release rather than the establishedDeprecationWarningform, leaving the deprecation transition incomplete. Frame-transformer source paths with no rigid-body match also change exception type and message becauseexpected_num_matchesis checked beforeraise_if_no_matches=Falsecan take effect. - Implementation: The Newton material-randomization change correctly selects each requested body’s actual shape indices without assuming contiguous shape storage. The direct-match resolver must instead track the prims that directly matched the destination expression before predicate-based descendant expansion; comparing prototype prim paths to
path_exprcannot work reliably under clone plans. Frame-transformer singleton validation should separately preserve the intended no-match error path. - Style consistency: Move
__getattr__,__dir__, and the private compatibility table below all public Franka configuration constants to restore the documented constants-before-functions layout. The newly added Newton test setup should also use the already importedclone(...)helper instead of new.copy()calls, matching the current configuration-operation guidance. - Test quality: The resolver, legacy-config, mimic-constraint, and PhysX/OVPhysX nested-body tests protect distinct changed contracts, and the backend-specific frame-transformer cases are justified because both implementations changed. Rename
test_franka_newton_mimic_constraint_tracks_passive_finger: it runs the OVPhysX fixture with the PhysX asset variant and does not enable Newton-native actuators, so its current name promises coverage it does not provide.
Significant concerns. Posted 7 actionable findings inline.
Automated review; human maintainers own approval decisions.
|
run-ci |
|
run-ci |
|
run-ci |
|
Removed prefer_direct_matches in 6a36528. The distinction is source versus target cardinality, not first versus all matches: the sensor requires one source body per environment and keeps every matched target. It now filters the declared path matches directly, without falling back to descendants. The shared resolver is unchanged from develop. The existing nested-body and regex-target tests pass in both backends, along with all 10 cloner tests. Restoring descendant expansion fails with 11 source bodies; keeping only the first match fails the all-targets test. No new tests; net -27 lines (-17 production). |
|
run-ci |
|
run-ci |
|
run-ci |
|
Backported to |
## Description Make the shared flat Franka asset the main `FRANKA_PANDA_CFG` and `FRANKA_PANDA_HIGH_PD_CFG`. The main configs use gripper-only collisions, Panda effort limits (87/12 Nm), a single `panda_arm` group, and a driven leader finger with a passive mimic follower. The high-PD config has stiffer arm gains and gravity disabled. Keep the original asset settings under `FRANKA_PANDA_LEGACY_CFG` and `FRANKA_PANDA_LEGACY_HIGH_PD_CFG`. Keep the Menagerie and Robotiq configs unchanged. Remove the deprecation lookup, warnings, and `FLAT` names. Existing tasks and controller examples that need the original settings explicitly select the legacy configs. **Breaking change:** code importing the original main config names now receives the flat asset and its actuator contract. To retain the old USD path, shoulder/forearm groups, gains, and collision settings, import the corresponding `LEGACY` config. Select the backend's `Physics` variant when using the main configs. The asset-package changelog includes migration guidance and a major-version marker. Frame transformers select rigid bodies matched by the declared path expression, without implicitly searching descendants. A source must match exactly one body per environment; target expressions retain all matching bodies. The shared resolver API stays unchanged. Preserve descriptive frame-transformer errors. Make Franka Pour compatible with the synced public asset: select the MuJoCo physics payload, use the main config, and remove the obsolete duplicate-mimic workaround. The development asset is already synced. The remaining task migrations are in #8170 and #8171; those branches need refreshing to use the new main names. ## Validation - Compared all six Franka configs with the previous commit: their settings are unchanged under the new names; verified exports from the asset package and robot package. - Existing Pour and Reach configuration tests: 39 passed. - Existing Franka Pour startup integration: passed against the public asset. - Existing OvPhysX joint-command test: passed, including passive-finger tracking. - Frame-transformer checks: 4 passed across PhysX and OvPhysX, covering nested Franka bodies and the existing all-targets case. The compact Franka regression fails if descendant expansion is restored or only the first target is returned. - Existing cloner suite: 10 passed; no generic resolver test additions. - Newton viscous-friction checks: 2 passed (index and mask). - Removing mimic coupling made the retained tracking assertion fail. - Formatting, lint, changelog validation, and `git diff --check` passed. ## Release backport - [x] <!-- backport-active-release --> Backport this pull request to the active release branch after it merges into `develop` --------- Co-authored-by: Mustafa Haiderbhai <mhaiderbhai@nvidia.com> Co-authored-by: Mustafa H <34825877+StafaH@users.noreply.github.com> Co-authored-by: Octi Zhang <zhengyuz@nvidia.com> (cherry picked from commit 02b779f)
Update Arena to the Isaac Lab 3.0.0 GA pin and Isaac Sim 6.2. Keep the Isaac Sim base image while installing the pinned Lab and Arena source trees from their frozen uv locks. ## Why this change? Arena was on Lab 3.0 EA and Isaac Sim 6.1. Update to the [Isaac Lab v3.0.0 release](https://github.com/isaac-sim/IsaacLab/releases/tag/v3.0.0), pinned at [`e3f7d9ff1f5d7f8280de3ece9000b7117f66bcf4`](isaac-sim/IsaacLab@e3f7d9f), and adapt Arena to its released APIs and dependencies. ## What changes? ### Docker and uv workflow - Follow the uv-based Docker installation introduced by Isaac Lab [PR #7405](isaac-sim/IsaacLab#7405) and [commit `eed50f77c53`](isaac-sim/IsaacLab@eed50f77c53), while retaining Arena's Isaac Sim base-image stages and editable Lab source. - Interactive container shells alias `python` and `python3` to `isaaclab.sh -p`, and `pytest` to `isaaclab.sh -p -m pytest`, so commands initialize Isaac Sim and execute from `/opt/isaaclab-venv`. - Non-interactive runtime and CI commands invoke `isaaclab.sh -p` explicitly; build-time package operations use `uv pip` or `/opt/isaaclab-venv/bin/python`. `/isaac-sim/python.sh` is no longer a supported Arena entry point because it bypasses the Lab launcher and the locked Lab virtual environment. - Continue building from the Isaac Sim 6.2 image. Copy in uv 0.12.9 and create `/opt/isaaclab-venv` with Isaac Sim's Kit Python. - Sync third-party dependencies from the pinned Isaac Lab submodule's frozen `uv.lock`. The metadata-only stage skips all local path packages; after the complete submodule is copied, a second sync installs its editable packages. - Overlay Arena's non-Lab dependencies from Arena's frozen lock with `uv sync --inexact`, then install Arena editable into the same environment. - Pin uv 0.12.9 in Docker and native CI. Regenerating the lockfile with the newer serializer puts Arena's Linux x86_64 constraint in top-level `resolution-markers` and `supported-markers` and remove it from uv lock edges. ### Torch 2.11 and CUDA 13 handling - Isaac Lab [PR #8372](isaac-sim/IsaacLab#8372) deliberately selects Torch 2.11.0 on CUDA 13.0. Torch 2.12's CUDA 13 NCCL 2.29 can fail beside Kit RTX or OVRTX on Blackwell because of a driver shared-memory accounting issue. Torch 2.11 uses NCCL 2.28.9 and avoids that failure while retaining Isaac Lab's deferred-CUDA-initialization workaround. - Native uv routes `torch==2.11.0` and `torchvision==0.26.0` to the `cu130` PyTorch index. Docker takes those versions from Lab's frozen lock instead of duplicating them in a hand-written constraint list. Arena drops its direct `torchaudio` dependency, matching Lab. - Build cuRobo with the CUDA 13.0 toolkit and `CUDA_HOME=/usr/local/cuda-13.0`, matching PyTorch's CUDA major version. ### Other API and released-stack changes - **Environment reset selectors — Lab [PR #8030](isaac-sim/IsaacLab#8030) and [PR #8015](isaac-sim/IsaacLab#8015 accept Lab's tensor, slice, and `None` environment selections in Arena's environment and recorder reset paths. This is API compatibility, no behavior change. - **Camera observations — Lab [PR #8051](isaac-sim/IsaacLab#8051 replace the removed generic `mdp.image` term with the RGB, depth, normals, or segmentation observation function selected for each modality. Unsupported data types now fail explicitly. - **Newton camera pose propagation — Lab [issue #7676](isaac-sim/IsaacLab#7676), [PR #7691](isaac-sim/IsaacLab#7691), and release backport [PR #7935](isaac-sim/IsaacLab#7935 Lab 3.0 now mirrors Newton `FrameView` pose writes into Fabric so RTX sees camera movement. Remove Arena [PR #1196](#1196) and its `CameraPoseWriter` USD workaround. Camera-extrinsics variations now use Lab `set_local_poses()` directly; retained tests cover rendered images and reported poses under PhysX and Newton with Fabric enabled and disabled. - **Runtime camera intrinsics — Lab [PR #7916](isaac-sim/IsaacLab#7916 replace private USD sensor access and `_update_intrinsic_matrices()` with `Camera.set_intrinsic_matrices()`. Lab's ordinary pinhole runtime API enforces square pixels, so Arena now samples one focal-length delta and applies it to both `fx` and `fy`. **Note:** intrinsics variation has an pre-existing bug before this Lab upgrade which results in env_0 camera params being used for all parallel envs. Fix will go in a separate PR. - **Clone-plan topology — Lab [PR #8045](isaac-sim/IsaacLab#8045), backported in [PR #8073](isaac-sim/IsaacLab#8073 resolve representative scene geometry through asset-prototype IDs, prototype paths, and clone-plan topology instead of the removed `cloner.query.iter_sources()` helper. arena_world_scene_access.py was updated to essentially re-implement the removed helper. - **Franka presets — Lab [PR #8169](isaac-sim/IsaacLab#8169) and [PR #8170](isaac-sim/IsaacLab#8170 select `FRANKA_PANDA_LEGACY_CFG` and `FRANKA_PANDA_LEGACY_HIGH_PD_CFG` explicitly after Lab made the flat Franka asset the default and introduced shared minimal presets. This keeps Arena's nested `/panda` hierarchy, legacy joint names, and existing actuator grouping. - **Replicator kitchen USD — Isaac Sim 6.2 asset update:** update tests for `kitchen_peninsula.usda`, which now exposes 50 physics roots instead of 56. Its `_OnlineVisual` physics roots decrease from 24 to 18, and the previously discovered `_OnlineVisual` articulation is no longer present. - Unit test pick and place success speed thresholds were relax due to large observed residual speed. Root cause unknown yet. ## Validation Passing local checks: - `uv lock --check --no-python-downloads` with uv 0.12.9 - Docker build and Isaac Sim startup/import smoke checks with Torch 2.11.0+cu130 and NCCL 2.28.9 - All RL and IL sample workflow replay and inference commands are validated and producing expected success rate. --------- Signed-off-by: Qian Lin <qianl@nvidia.com>
Description
Make the shared flat Franka asset the main
FRANKA_PANDA_CFGandFRANKA_PANDA_HIGH_PD_CFG. The main configs use gripper-only collisions, Panda effort limits (87/12 Nm), a singlepanda_armgroup, and a driven leader finger with a passive mimic follower. The high-PD config has stiffer arm gains and gravity disabled.Keep the original asset settings under
FRANKA_PANDA_LEGACY_CFGandFRANKA_PANDA_LEGACY_HIGH_PD_CFG. Keep the Menagerie and Robotiq configs unchanged. Remove the deprecation lookup, warnings, andFLATnames. Existing tasks and controller examples that need the original settings explicitly select the legacy configs.Breaking change: code importing the original main config names now receives the flat asset and its actuator contract. To retain the old USD path, shoulder/forearm groups, gains, and collision settings, import the corresponding
LEGACYconfig. Select the backend'sPhysicsvariant when using the main configs. The asset-package changelog includes migration guidance and a major-version marker.Frame transformers select rigid bodies matched by the declared path expression, without implicitly searching descendants. A source must match exactly one body per environment; target expressions retain all matching bodies. The shared resolver API stays unchanged. Preserve descriptive frame-transformer errors.
Make Franka Pour compatible with the synced public asset: select the MuJoCo physics payload, use the main config, and remove the obsolete duplicate-mimic workaround. The development asset is already synced. The remaining task migrations are in #8170 and #8171; those branches need refreshing to use the new main names.
Validation
git diff --checkpassed.Release backport
develop