Implements passive fixed tendons with mjwarp#5522
Conversation
| # newton requires implicitactuators be specified in usd and there's a bug with physx tendons | ||
| usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/ShadowRobot/ShadowHand/shadow_hand_instanceable_newton.usd", | ||
| #usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/ShadowRobot/ShadowHand/shadow_hand_instanceable_newton.usd", | ||
| usd_path=f"/home/rgresia/Repositories/mujoco_menagerie/shadow_hand/right_hand.usd/right_shadow_hand.usda", |
| num_envs=8192, env_spacing=0.75, replicate_physics=True, clone_in_fabric=False | ||
| ) | ||
| default: InteractiveSceneCfg = physx | ||
| default: InteractiveSceneCfg = newton_mjwarp |
There was a problem hiding this comment.
non-breaking, but might prefer to not change default?
🤖 Isaac Lab Review Bot — Update (a2ded62)Minor path cleanup in this commit — changed Shadow Hand Newton USD path from No substantive code changes. Previously identified findings remain documented in the original review. ✅ Approved by @ooctipus — ready for merge pending CI green. |
There was a problem hiding this comment.
Update (d32c593): Merge from develop branch reviewed. The 8 new commits since 29068bf are primarily infrastructure updates merged from develop:
- PPISP Camera Wrapper (#5499): Adds post-render ISP pipeline across renderers
- Tiled Camera Views (#5696): Adds tiled camera views to Kit/Newton visualizers
- CI Updates (#5628, #5549): Isaac Sim image updates and workaround removal
- Newton Manager Fix (#5710): Scene data provider backend detection fix
- Multi-GPU FrameView (#5514): Enables FabricFrameView on non-primary GPUs
- USD Core Update (#5495): Updates to usd-core 25.11.0
- Test Seed Fix (#5709): Deterministic test ordering fix
No changes to the tendon implementation files — the merge only brought develop changes into this feature branch.
Update (bda9004): Another merge from develop reviewed (d32c593..bda9004). This commit contains more infrastructure updates merged from develop:
- Additions to
isaaclab_ppisppackage (PPISP post-render pipeline) - Visualizer tiled camera views and Newton visualizer improvements
- Test infrastructure updates (env test utils, string test seed fix)
- OVRTX/Newton renderer HDR output support
- Various changelog and version bumps
No changes to the tendon implementation files — the core tendon feature (mjwarp passive fixed tendons in articulation, schemas, Newton manager) remains unchanged. The merge only brought develop infrastructure into this feature branch.
Previous Update (29068bf): Configuration changes reviewed - defaults switched from newton_mjwarp to physx backend, with position/rotation adjustments in shadow_hand_env_cfg.py. No new issues found.
Remaining Items (from original review)
-
Minor typo (schemas.py:880):
"exiss"→"exists" -
Docstring/implementation mismatch (articulation.py
write_fixed_tendon_properties_to_sim_index):- Consider adding partial tendon write support or updating the docstring
-
Mock incomplete (mock_articulation_view.py):
- Missing
tendon_namesproperty for test mocks
- Missing
-
Test coverage: No unit tests for new tendon APIs
Previous reviews preserved above for context.
Update (5ac3500): Merge from develop reviewed (bda9004..5ac3500). This commit brings 10 new commits from develop:
- Docs: Windows installation instructions for LEAPP (#5726), environment presets and experimental docs reorganization (#5734)
- CI: Auto version bump changelogs (3 instances), ARM64 docker build fix + JUnit artifacts (#5757), rendering correctness tests restoration (#5764)
- Fixes: OVRTX renderer default log file path (#5749), non-deterministic test_noise failures (#5732), duplicate shadow hand vision preset test removal (#5767)
No changes to the tendon implementation files — the core tendon feature (mjwarp passive fixed tendons) remains unchanged. The merge only brought develop infrastructure into this feature branch.
Remaining Items (unchanged)
- Minor typo (schemas.py:880):
"exiss"→"exists" - Docstring/implementation mismatch (articulation.py
write_fixed_tendon_properties_to_sim_index) - Mock incomplete (mock_articulation_view.py): Missing
tendon_namesproperty - Test coverage: No unit tests for new tendon APIs
Update (ceb4270): Merge from develop reviewed (5ac3500..ceb4270). This commit brings infrastructure updates from develop:
Key Changes:
- OVRTX Renderer Cleanup: Removed legacy OVRTX 0.2.x code paths from
OVRTXRenderer- eliminates_legacykernels, removes version checks (_IS_OVRTX_0_3_0_OR_NEWER), simplifiesopen_usd_from_stringusage, and cleans up scene partition workarounds. This is a good modernization. - LEAPP Export Fixes:
- Fixed typo in
export.pyargparser description ("Train" → "Export") - Renamed
train_task_name→checkpoint_task_namefor clarity - Added null checkpoint check with informative error message
- Added height_data annotation support in
anymal_c_env.py
- Fixed typo in
- Test Updates: Removed legacy kernel test classes (
TestExtractAllDepthTilesKernelLegacy,TestRandomColorsFromIdsKernelLegacy) - Golden Images: Updated shadow_hand test golden images (binary changes)
- Changelog: Added changelog entry for OVRTX legacy code removal
No changes to the tendon implementation files — the core tendon feature (mjwarp passive fixed tendons) remains unchanged. The merge only brought develop infrastructure into this feature branch.
Remaining Items (unchanged)
- Minor typo (schemas.py:880):
"exiss"→"exists" - Docstring/implementation mismatch (articulation.py
write_fixed_tendon_properties_to_sim_index) - Mock incomplete (mock_articulation_view.py): Missing
tendon_namesproperty - Test coverage: No unit tests for new tendon APIs
Update (c9ca6f2): Merge from develop reviewed (ceb4270..c9ca6f2). Infrastructure updates only:
- Docs: Tab-set formatting for Windows/Linux in LEAPP tutorials, ThreeDWorld URL fix, Windows conda env note
- pyproject.toml: Added
isaaclab-ppispas workspace dependency - Demo Scripts: Added PPISP camera QA demos (
ppisp_camera.py,ppisp_camera_ovrtx.py) - Tutorial Fix: Fixed
add_new_robot.py- tensor device issue for Jetbot velocity targets - isaaclab_ppisp: Bug fix in
auto_camera_ppisp_cfgdiscovery (RenderProducts without PPISP no longer mask later ones) - Tests: PPISP test docstring updates, added test case for the discovery fix
No changes to the tendon implementation files — the core tendon feature remains unchanged.
Remaining Items (unchanged)
- Minor typo (schemas.py:880):
"exiss"→"exists" - Docstring/implementation mismatch (articulation.py
write_fixed_tendon_properties_to_sim_index) - Mock incomplete (mock_articulation_view.py): Missing
tendon_namesproperty - Test coverage: No unit tests for new tendon APIs
Update (fbabaa8): Updated shadow_hand semantic segmentation golden image (binary change). No code changes — likely regenerated from renderer/test updates. No new issues. Remaining items unchanged.
Update (4b1cee5): Merge from develop reviewed (fbabaa8..4b1cee5). This is a significant infrastructure merge (~25 commits):
Key Changes:
- pyproject.toml Modernization: Major refactoring across isaaclab, isaaclab_physx, isaaclab_ppisp, isaaclab_rl, isaaclab_tasks, isaaclab_teleop, isaaclab_visualizers - migrated from legacy setup.py to modern pyproject.toml with PEP 685 canonical dependency names
- Sensor Stale-Reset Fixes (#4970): ContactSensor, IMU, Pva, JointWrenchSensor now properly skip envs not stepped since reset, preventing stale PhysX buffer reads
- Runtime Compatibility Validation: Added
validate_runtime_compatibility()in sim_launcher to catch invalid OVRTX + Kit combinations early with helpful error messages - Visualizer Test Refactor: Split integration tests into separate PhysX/Newton modules, added tiled camera motion tests
- rl-games/rsl-rl extras: Normalized extra names to PEP 685 hyphenated forms (
rsl-rl,rl-games) - Newton Visualizer: Renamed tiled camera control section to "Tiled Camera View", fixed headless detection for macOS/Windows
- Documentation: Multi-backend architecture, OVPhysX docs, visualization improvements
No changes to the tendon implementation files — the core tendon feature (mjwarp passive fixed tendons) remains unchanged.
Remaining Items (unchanged)
- Minor typo (schemas.py:880):
"exiss"→"exists" - Docstring/implementation mismatch (articulation.py
write_fixed_tendon_properties_to_sim_index) - Mock incomplete (mock_articulation_view.py): Missing
tendon_namesproperty - Test coverage: No unit tests for new tendon APIs
# Description Fixed an Git LFS issue introduced by #5522 ```log git clone git@github.com:isaac-sim/IsaacLab.git --branch develop Cloning into 'IsaacLab'... remote: Enumerating objects: 266967, done. remote: Counting objects: 100% (9465/9465), done. remote: Compressing objects: 100% (1826/1826), done. remote: Total 266967 (delta 9156), reused 7649 (delta 7636), pack-reused 257502 (from 5) Receiving objects: 100% (266967/266967), 288.76 MiB | 3.18 MiB/s, done. Resolving deltas: 100% (194599/194599), done. Encountered 30 files that should have been pointers, but weren't: source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-albedo.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-depth.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-rgb.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-rgba.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-semantic_segmentation.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-simple_shading_constant_diffuse.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-simple_shading_diffuse_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-isaacsim_rtx_renderer-simple_shading_full_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-newton_renderer-depth.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-newton_renderer-rgb.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-newton_renderer-rgba.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-albedo.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-depth.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-rgb.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-rgba.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-semantic_segmentation.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-simple_shading_constant_diffuse.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-simple_shading_diffuse_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/newton-ovrtx_renderer-simple_shading_full_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-albedo.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-depth.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-rgb.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-rgba.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-semantic_segmentation.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-simple_shading_constant_diffuse.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-simple_shading_diffuse_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-isaacsim_rtx_renderer-simple_shading_full_mdl.png source/isaaclab_tasks/test/golden_images/shadow_hand/physx-newton_renderer-depth.png ``` ## Type of change - 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` - [x] 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
Description
I have implemented the ability to use and modify passive tendons properties. Despite the shortcomings, this is on feature parity with the existing shadow hand physx environment. While mjc supports spatial tendons, this PR assumes that only fixed tendons are present in the scene, if any. Only 1:1 properties are currently supported (stiffness and damping; there is no equivalent for limit stiffness and rest length/position limits don't have the same data type as in physx (vec2f instead of float), so they can't be ported without restructuring the buffers/apis.
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --format