Cherry-picks fixes for visualizers, SKRL template, digit limitations, teleop/mimic dependency#5829
Conversation
…y install (isaac-sim#5820) # Description Adds isaaclab_teleop as a dep to isaaclab_mimic when using `./isaaclab.sh -i mimic` Fixes # (issue) Previously when a user installs just mimic and tried to run data generation, an error would occur as isaaclab teleop was not installed. This change fixes the import error. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] 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: peterd-NV <peterd@nvidia.com>
…im#5821) ## Summary - Drop `newton_mjwarp` from the three Digit env rows in `docs/source/overview/environments.rst` (`Isaac-Velocity-Flat-Digit-v0`, `Isaac-Velocity-Rough-Digit-v0`, `Isaac-Tracking-LocoManip-Digit-v0`). - Add a "Closed-loop articulations on Newton (e.g. Agility Digit)" section to `docs/source/refs/issues.rst` describing the root cause and recommending the `physx` preset until the upstream fix lands. ## Why Robots with closed kinematic loops (Digit's achilles rod and toe push-rods) do not run correctly under the `newton_mjwarp` physics preset today. Newton's `ArticulationView` builds its per-link axis by walking `model.joint_child` over the articulation's joint range and `sorted()`-ing without deduplication, so a body that is the child of N joints occupies N slots on that axis. On Digit this gives `view.link_count = 49` against 43 unique physical bodies; the four loop-closed bodies (left/right `tarsus`, left/right `toe_roll`) account for the six extra slots. Any code path that assumes one entry per logical body breaks (e.g. tensor-shape mismatches in `feet_slide`-style rewards). The supported-environments tables previously listed `newton_mjwarp` for Digit, which is misleading. This PR removes that claim and documents the limitation under Known Issues. ## Test plan - [ ] `./isaaclab.sh -f` (pre-commit) passes locally. - [ ] Sphinx build renders the new Known Issues entry without warnings and the Digit rows in the environments tables show only `physx`.
…m#5733) <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html 💡 Please try to keep PRs small and focused. Large PRs are harder to review and merge. --> Improve the visualizer integration test - Unskip all tests - Add retry loop for pause/replay step to reduce flakyness - Separate out visualizer tests into separate files and kit processes - Fix camera pose of Kit Viz + Newton_MJWarp case - Add debug image capture mode (disabled by default) - Add simple tiled image check Other visualizer fixes - Pin pyarrow to 22.0.0 to fix Rerun on Windows - Make tiled camera view instructions in the visualizer docs more explicit - Fix Newton Pyglet issue on Windows - Change tiled camera panel in Newton Viewer from "Image Logger (1)" to "Tiled Visualizer Camera" <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> - [ ] 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 updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] 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 -->
# Description Merge changes from main branch: - isaac-sim#4875 - Adds Isaac-Stack-Cube-Franka-IK-Rel-v0 task variants - isaac-sim#4909 - Updates minor RSL-RL configclass docstring - isaac-sim#4934 - Updates Newton docs on main for 3.0 beta changes - isaac-sim#5182 - Fix flatdict version pin to allow 4.1.0+ - isaac-sim#5195 - Add NCCL troubleshooting notes - isaac-sim#5406 - Updates doc building job on main to match develop - isaac-sim#5311 - Update skrl integration for version 2.0.0 - isaac-sim#5482 - Adds nightly-changelog.yml on main - isaac-sim#5527 - Use isaaclab-bot GitHub App token for nightly changelog push - isaac-sim#5537 - Address deprecation warnings in nightly changelog workflow - isaac-sim#5746 - Fix .dockerignore for _isaac_sim symlink - isaac-sim#5745 - Parameterize nightly compile over configurable branches - isaac-sim#5546 - Fix swapped preserve_order docstrings - isaac-sim#5817 - Update skrl agent configurations in the Isaac Lab template
There was a problem hiding this comment.
Code Review Summary
This cherry-pick PR brings several bug fixes and improvements from develop to the release/3.0.0-beta2 branch. The changes are well-structured and appropriately scoped for a release stabilization branch.
📋 Changes Overview
| Category | Files | Assessment |
|---|---|---|
| Dependency Fix | install.py |
✅ Correct |
| Documentation | environments.rst, issues.rst, visualization.rst |
✅ Accurate |
| Visualizer Tests | Split into 4 test files + utils | ✅ Improved isolation |
| SKRL Templates | 3 agent config templates | ✅ Updated for skrl 2.0.0 |
| Camera/Visualizer | camera_view.py, newton_visualizer.py, physx_manager.py |
✅ Sound |
🔬 Detailed Analysis
1. Mimic/Teleop Dependency (install.py)
OPTIONAL_ISAACLAB_SUBMODULES: dict[str, tuple[str, ...]] = {
"mimic": ("isaaclab_teleop", "isaaclab_mimic"), # teleop now installed first
...
}Verdict: ✅ Correct fix. Since isaaclab_mimic depends on isaaclab_teleop, installing teleop first prevents import errors during mimic data generation.
2. Camera View Position Resolution (camera_view.py)
The reordering of fallback methods in prim_world_positions() is more robust:
- First tries
FrameView(PhysX/Fabric-backed transforms) - Falls back to scene articulation positions
- Final fallback uses USD xform cache
Verdict: ✅ Better error isolation - FrameView exceptions now fail fast before attempting scene fallback.
3. PhysX Rigid Body View Wildcard Patterns (physx_manager.py)
patterns.add(re.sub(r"/World/envs/env_\d+", "/World/envs/env_*", prim.GetPath().pathString))Verdict: ✅ Restores cross-environment compatibility for Newton visualizers updating PhysX transforms.
4. Newton Headless Detection (newton_visualizer.py)
runtime_headless = self.cfg.headless or (
sys.platform not in ("win32", "darwin") and not os.environ.get("DISPLAY")
)Verdict: ✅ Fixes false headless detection on Windows/macOS where DISPLAY is not used.
5. SKRL Template Updates
Updates config field names for skrl 2.0.0 compatibility:
state_preprocessor→observation_preprocessor(for observations)amp_state_preprocessor→amp_observation_preprocessortask_reward_weight→task_reward_scalestyle_reward_weight→style_reward_scale- Removed deprecated
discriminator_reward_scale
Verdict: ✅ Aligns with skrl 2.0.0 API.
6. Documentation Updates
- Removes
newton_mjwarpfrom Digit environment support tables - Adds Known Issues section documenting closed-loop articulation limitation
- Improves tiled camera view documentation with UI access instructions
Verdict: ✅ Accurate and helpful for users.
7. Visualizer Test Restructuring
Splits monolithic 609-line test file into:
- 4 separate test files (Newton/PhysX × standard/tiled)
- 1571-line shared utilities module
Verdict: ✅ Better test isolation, reduces flakiness, easier debugging.
🧪 Test Coverage
| Change Type | Coverage Status |
|---|---|
| Mimic dependency | ✅ test_install_command_parsing.py updated |
| Visualizer fixes | ✅ Integration tests restructured |
| Documentation | N/A (no tests needed) |
| SKRL templates | N/A (config templates) |
📝 Minor Observations
-
visualizer_cfg.pyfield reordering: The docstring update fortiled_cam_target_prim_pathdefaulting to"/World/envs/*/Robot"is clear and matches typical robot asset layouts. -
string.pydocstring fix: The correctedpreserve_orderdocumentation now accurately describes the behavior (was previously swapped).
✅ Verdict: Approve
This is a clean cherry-pick PR with well-scoped bug fixes appropriate for a release branch. All changes are:
- Self-contained with minimal cross-module impact
- Properly tested where applicable
- Well-documented
No blocking issues identified.
Greptile SummaryThis PR cherry-picks four bug-fix branches from
Confidence Score: 4/5Safe to merge; all changes are targeted bug fixes with no behavioral regressions identified in the main simulation paths. The core logic changes (FrameView-first fallback chain, wildcard rigid-body view, platform-aware headless detection) are well-scoped and covered by the restructured integration tests. The pyarrow==22.0.0 hard pin and the silent exception swallow in camera_view.py are minor quality concerns that do not affect correctness under normal operation. source/isaaclab/isaaclab/envs/utils/camera_view.py (exception swallowing) and source/isaaclab_visualizers/setup.py (pyarrow hard pin) warrant a second look. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["prim_world_positions(stage, path, env_indices, scene)"] --> B["Try FrameView for ALL envs"]
B -->|"Success for all"| C["Return tensor"]
B -->|"Any exception"| D["positions.clear()"]
D --> E{scene is not None?}
E -->|"Yes"| F["_scene_articulation_positions()"]
F -->|"Returns tensor"| G["Return tensor"]
F -->|"Returns None"| H["USD XformCache fallback per env"]
E -->|"No"| H
H --> I["Return tensor"]
|
| except Exception: | ||
| positions.clear() | ||
|
|
||
| if scene is not None: |
There was a problem hiding this comment.
The bare
except Exception that clears positions and falls through to the next strategy swallows the original error completely. If FrameView fails for a reason other than "this prim type isn't supported" (e.g., a wrong import, a GPU OOM, a partial iteration where 8 of 10 envs succeeded), there is no log entry to explain why the slower fallback path was taken. Adding a logging.debug here would make production triage much easier.
| except Exception: | |
| positions.clear() | |
| if scene is not None: | |
| except Exception as _e: | |
| import logging as _logging | |
| _logging.getLogger(__name__).debug( | |
| "FrameView path failed for prim_path_template=%r; falling back to scene/USD path. Reason: %s", | |
| prim_path_template, | |
| _e, | |
| ) | |
| positions.clear() | |
| if scene is not None: |
a84e02b
into
isaac-sim:release/3.0.0-beta2
Description
Cherry pick bug fix PRs from develop: