Skip to content

Implements passive fixed tendons with mjwarp#5522

Merged
nv-rgresia merged 42 commits into
isaac-sim:developfrom
nv-rgresia:passive-tendons
May 28, 2026
Merged

Implements passive fixed tendons with mjwarp#5522
nv-rgresia merged 42 commits into
isaac-sim:developfrom
nv-rgresia:passive-tendons

Conversation

@nv-rgresia

@nv-rgresia nv-rgresia commented May 6, 2026

Copy link
Copy Markdown
Contributor

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

  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

@github-actions github-actions Bot added documentation Improvements or additions to documentation asset New asset feature or request isaac-sim Related to Isaac Sim team isaac-mimic Related to Isaac Mimic team infrastructure labels May 6, 2026
@nv-rgresia nv-rgresia changed the base branch from main to develop May 6, 2026 20:01
@kellyguo11 kellyguo11 moved this to In progress in Isaac Lab May 7, 2026
# 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",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

this does not look right

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

fixed

num_envs=8192, env_spacing=0.75, replicate_physics=True, clone_in_fabric=False
)
default: InteractiveSceneCfg = physx
default: InteractiveSceneCfg = newton_mjwarp

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

non-breaking, but might prefer to not change default?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

reverted

@isaaclab-review-bot

Copy link
Copy Markdown

🤖 Isaac Lab Review Bot — Update (a2ded62)

Minor path cleanup in this commit — changed Shadow Hand Newton USD path from shadow_hand_newton.usd/right_shadow_hand.usda to ShadowHandNewton/shadow_hand_instanceable.usda. This is a cosmetic fix aligning with the new asset directory structure.

No substantive code changes. Previously identified findings remain documented in the original review.

Approved by @ooctipus — ready for merge pending CI green.

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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_ppisp package (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)

  1. Minor typo (schemas.py:880): "exiss""exists"

  2. Docstring/implementation mismatch (articulation.py write_fixed_tendon_properties_to_sim_index):

    • Consider adding partial tendon write support or updating the docstring
  3. Mock incomplete (mock_articulation_view.py):

    • Missing tendon_names property for test mocks
  4. 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)

  1. Minor typo (schemas.py:880): "exiss""exists"
  2. Docstring/implementation mismatch (articulation.py write_fixed_tendon_properties_to_sim_index)
  3. Mock incomplete (mock_articulation_view.py): Missing tendon_names property
  4. 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 _legacy kernels, removes version checks (_IS_OVRTX_0_3_0_OR_NEWER), simplifies open_usd_from_string usage, and cleans up scene partition workarounds. This is a good modernization.
  • LEAPP Export Fixes:
    • Fixed typo in export.py argparser description ("Train" → "Export")
    • Renamed train_task_namecheckpoint_task_name for clarity
    • Added null checkpoint check with informative error message
    • Added height_data annotation support in anymal_c_env.py
  • 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)

  1. Minor typo (schemas.py:880): "exiss""exists"
  2. Docstring/implementation mismatch (articulation.py write_fixed_tendon_properties_to_sim_index)
  3. Mock incomplete (mock_articulation_view.py): Missing tendon_names property
  4. 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-ppisp as 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_cfg discovery (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)

  1. Minor typo (schemas.py:880): "exiss""exists"
  2. Docstring/implementation mismatch (articulation.py write_fixed_tendon_properties_to_sim_index)
  3. Mock incomplete (mock_articulation_view.py): Missing tendon_names property
  4. 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)

  1. Minor typo (schemas.py:880): "exiss""exists"
  2. Docstring/implementation mismatch (articulation.py write_fixed_tendon_properties_to_sim_index)
  3. Mock incomplete (mock_articulation_view.py): Missing tendon_names property
  4. Test coverage: No unit tests for new tendon APIs

@kellyguo11 kellyguo11 added this to the Isaac Lab 3.0 GA milestone May 28, 2026
@nv-rgresia nv-rgresia merged commit 3cd6733 into isaac-sim:develop May 28, 2026
37 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in Isaac Lab May 28, 2026
huidongc added a commit that referenced this pull request May 29, 2026
# 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
@hujc7 hujc7 mentioned this pull request Jun 5, 2026
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asset New asset feature or request documentation Improvements or additions to documentation infrastructure isaac-lab Related to Isaac Lab team isaac-mimic Related to Isaac Mimic team isaac-sim Related to Isaac Sim team

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants