Repository navigation
Fix Newton VBD articulation state and cloth bending integration - #8360
Merged
AntoineRichard merged 6 commits intoOct 12, 2026
Merged
AntoineRichard merged 6 commits into
AntoineRichard merged 6 commits into
Conversation
maxkra15
requested review from
AntoineRichard,
StafaH,
hujc7,
kellyguo11 and
ooctipus
as code owners
October 7, 2026 09:37
Contributor
Author
|
run-ci |
Contributor
|
Contributor
There was a problem hiding this comment.
Isaac Lab Review Bot
Needs attention: Style consistency (2). Other reviewed categories look good.
- PR description: Description matches the diff and reports workload, warmup, and timings; add the benchmark command, hardware, driver, environment count, revisions, and pinned Newton version for reproducibility.
- Design and architecture: Architecture looks good.
- Scope and over-engineering: No over-engineering issues.
- API: API changes look good.
- Compatibility and deprecation: No breaking changes identified.
- Implementation: Implementation looks good.
- Style consistency: The added own-scene VBD test makes the module-level scene-ownership description stale; update that description to include this case.
- Test quality: Test quality looks good.
Minor fixes needed. Posted 2 inline findings.
Automated review; human maintainers own approval decisions.
6 tasks done
mmichelis
reviewed
Oct 7, 2026
mmichelis
approved these changes
Oct 7, 2026
mmichelis
left a comment
Collaborator
There was a problem hiding this comment.
Thanks for adding the option for eval_ik!
Contributor
Author
|
run-ci |
AntoineRichard
enabled auto-merge (squash)
October 12, 2026 11:24
AntoineRichard
approved these changes
Oct 12, 2026
Contributor
Author
|
run-ci |
kellyguo11
approved these changes
Oct 12, 2026
5 tasks done
maxkra15
added a commit
that referenced
this pull request
Oct 13, 2026
## Description Add an experimental Isaac Lab example: five fixed-base H2 Plus robots with native SHARPA hands perform contact-only tablecloth pulls at 4, 2, 1.5, 0.75 and 0.5 m/s. The three faster trials keep the dishes on their tables; both slow trials drop them. ```bash uv run isaaclab example tablecloth --device cuda:0 # One trial without rendering: uv run isaaclab example tablecloth --device cuda:0 --speeds 4.0 --viz none ``` `InteractiveScene` owns the side-by-side worlds, default ground plane, table visuals and primitive tableware colliders. Warp and Newton IK script approach, insertion, finger closure, withdrawal, lift and pull. Physics, actuators, IK, interpolation and grasp monitoring are GPU graph-captured. No cloth attachments or added fingertip pads are used. Addressed the remaining review comments by keeping the scenario in one `examples/tablecloth.py`: standard articulation/cloth configs, private asset preparation and controller, and public articulation selection/native views instead of custom index resolution. The Contrib modules and dependency are removed. The seven-file feature diff has one 1,384-line Python example, down from 1,563 lines across three files. No RL task, custom recorder, new dependency, backend tests or generic solver changes remain. Shared VBD fixes landed in #8360. This branch includes upstream `develop` at `32fea6be38e3dafd3a157883780198e0bb3fc1a3`. The manufacturer USD is pinned to `b6a8942b0803b6c137e58cef12beb4b03e4a2fa7` and retrieved through Isaac Lab's asset cache. Documentation is one compact example card, not a new page. ## Screenshot and videos  Retained headless Kit recordings at 1080p/60 fps. Playback speed is not simulation throughput; Catmull–Clark only smooths rendering. These show the previously qualified physical configuration, retained unchanged by the refactor. Five-speed overview: https://github.com/user-attachments/assets/6a22e791-ed3c-4488-9853-6e8afdbcbcc2 Wider side view of the fastest robot: https://github.com/user-attachments/assets/27ac0365-e862-4d60-bd85-51f585a580d5 ## Validation Head: `37e1a5bd8f1da6dc1cf648f842348530fe975284`. Pinned Newton `1.7.0.dev0` and Warp `1.17.0`, NVIDIA L40. - Fresh complete five-world production run: 344 physics frames plus initialization, all states finite, full physics/actuator graph captured, all ten physical grips retained through the full pull. Minimum material travel 44.89 cm; worst sampled gap 1.35 mm. All three dishes remain on each of the three faster tables; all three fall from each slow table. Recorded source hashes match this head. Independent raw-trajectory checks confirm the outcomes. The run took 18.8 minutes including startup and diagnostic recording. - Actual five-world initialization, controller outputs for all 345 recorded observations, and all 64 interpolation ticks match the previous implementation exactly. Native control views alias the real strided target storage. - Captured two-world/two-frame CUDA startup completed with finite states. The temporary GPU diagnostic recorder is outside this PR; it adds no per-frame host state reads. - 16 existing launcher contract checks passed; no new test file. CI retains the existing bounded startup matrix entry, not a complete manipulation test. - Full repository hooks, changelog validation, `git diff --check`, and a clean warning-as-error Sphinx HTML build passed. ## Limitations Calibrated fixed-base manipulation, not humanoid balance or a general grasp planner. The 64 physics ticks per 60 Hz control frame favor contact accuracy over real-time throughput. Direct compliant-ALM drives do not enforce native hardware torque limits or armature; whole-robot self-collision avoidance is not provided. Asset/contact changes require revalidation. One deterministic full run is not a robustness guarantee under perturbations. Existing upstream asset/runtime warnings remain. ## Checklist - [x] Followed contribution, coding-style and test-audit guidance. - [x] Addressed the scenario-locality and public-index-selection review comments. - [x] Validated GPU motion; retained bounded launch coverage without additional tests. - [x] Ran hooks, changelog validation and a clean docs build. - [x] Added the core package fragment/minor marker and a small actual JPEG. - [x] Existing entry in `CONTRIBUTORS.md`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reusable Newton fixes extracted from #7185. No environment, robot asset, example or video recorder is included.
1e5defaults.friction_epsilon, preserving1e-2m/s.update_joint_state=Falseopts out; coupled and externally integrated rigid bodies retain their state ownership.NewtonCfgcollision scheduling at their proper owners.Related: #6733. Prerequisite for the refreshed #7185 example; independent of #8107. Migration and new runtime dependencies: none.
Type of change
Validation
Merged upstream
developatdd2f470fcad5873980e9bc4acffb043238aca41c. Validated source committed asf2a6caef2e342d511c2b15677f24fe862fcfef66on an NVIDIA L40, pinned Newton1.7.0.dev0(5ea82eef6f7911388025a8df6ccdb172e2fed286) and Warp1.17.0. Each file ran separately withuv run --frozen --no-sync python -m pytest -q:source/isaaclab_newton/test/physics/test_vbd_core.pysource/isaaclab_newton/test/assets/test_articulation.pysource/isaaclab_newton/test/assets/test_rigid_object.py -k vbd_rootsource/isaaclab_newton/test/controllers/test_newton_ik_solver.pysource/isaaclab_contrib/test/coupling/test_coupler_runtime.pysource/isaaclab_contrib/test/coupling/test_coupler.py132 passed, zero failed or skipped. The new real-asset nested-root action test checks an independently derived 0.4-radian joint target; removing the root suffix fails at native articulation selection. Existing upstream deprecation/fixture warnings remain.
ISAACLAB_CHANGELOG_BASE_REF=origin/develop UV_FROZEN=1 uv run --no-sync isaaclab -fpassed, including the changelog gate. A fresh warning-as-error documentation build passed usingpython -m sphinx -b html -W --keep-going -E -a -j auto docs docs/_build/support-review-guide-final.The retained tests distinguish native defaults/configuration, analytic stiffness equilibrium, public state ownership and coupled/native parity. Newton owns offset/moving-parent joint reconstruction; no duplicate kinematics fixture or tablecloth rollout is added here.
Publication overhead was measured on the existing headless block-and-tackle demo on the same L40: four separate processes in off/on/on/off order, each with 40 warm-up frames and five 120-frame batches. The average process medians were 18.2855 ms/frame off and 18.3147 ms/frame on (difference 0.0292 ms, 0.16%). All runs captured a graph. This is a small-workload observation, not a significant difference or general throughput guarantee; GPU 1 was concurrently used for Kit rendering during later runs. The comparison changes only
update_joint_stateand synchronizes between batches, not per frame.New-head CI is requested separately.
Checklist
CONTRIBUTORS.md.