Skip to content

[Newton] Clean up Rizon-Sharpa teapot setup and coupling - #8724

Draft
maxkra15 wants to merge 9 commits into
isaac-sim:mainfrom
maxkra15:maxkra15/teapot-two-way-proxy
Draft

maxkra15 wants to merge 9 commits into
isaac-sim:mainfrom
maxkra15:maxkra15/teapot-two-way-proxy

Conversation

@maxkra15

@maxkra15 maxkra15 commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Description

The Rizon--Sharpa teapot example duplicated maintained robot settings, repaired generated contacts at every launch, and replaced Newton's proxy loop with a custom one-way collider copy. This cleanup simplifies the setup and uses Newton's standard two-way proxy coupling so MPM reaction forces reach the grasped pot.

  • Reused the Flexiv Rizon arm actuator configuration while preserving the calibrated hand and arm settings.
  • Moved the hull-floor repair into cached contact preparation and removed the manager's finalize override. The cache version changes so existing generated contacts are rebuilt.
  • Configured CouplerProxyCfg directly and removed the custom stepping kernel, cached body indices, kinematic override, settings-only config subclass, and redundant default values.
  • Made the fixed demo controller own its timings and callbacks; passed its native MJWarp model from scene setup instead of retrieving the simulation singleton. Reused the existing smoothing function.
  • Resolved the MPM profile before constructing NewtonCfg, reused IsaacLab mesh triangulation, and removed duplicate robot-bundle preparation.

The two example files have 150 fewer lines, including 119 fewer in rizon_sharpa_teapot.py. The calibrated motion and gains are preserved. The small solver geometry adapter remains necessary: MJWarp needs convex grasp colliders while MPM needs the exact hollow shell; Newton otherwise exposes every shape attached to a proxy body. Bundle verification and robot asset repairs also remain.

This draft targets current develop. Coordinate with #8671, whose startup helper extraction touches the same example.

Type of change

  • New feature (non-breaking change which adds functionality), with setup cleanup

Release backport

  • Backport this pull request to the active release branch after it merges into develop

Validation

  • Exact cleanup comparisons: 14,401 full-sequence pose/twist and approach samples, hand targets and feedback gains, robot gains/limits/resolved physical properties, and 16 simulation configuration variants. Coupling fields match after resolving the manager; only the intended configclass representation changes.
  • Old and reused mesh loaders produced byte-identical vertices and triangle indices for the actual teapot, bowl, and island assets.
  • On the same CoACD decomposition, cached repair and the old runtime repair produced identical convex extreme vertices, mass, and inertia for all 35 parts. Fresh CoACD generation can vary despite its fixed seed; the regenerated cache also passed the real full-sequence run.
  • Recorded revision c452b98af through 18 simulated seconds / 14,400 steps on the L40. Startup IK splines, selected joints, limits, and initial targets were byte-identical to the pre-cleanup controller on the same native model. All 1,600 feedback comparisons matched exactly, including CPU arm/thumb state and GPU target buffers.
  • A subsequent simplification directly reuses the standard arm actuator settings. The pinned Newton CPU import confirmed friction and armature are zero on all seven arm DOFs, matching the shared config. Resolved actuator properties remain identical, and config construction independently copies the shared settings.
  • All 135,314 particles moved. Across 37 half-second checkpoints, robot, pot, and particle positions and velocities remained finite, with no particles below the table threshold. Reviewed pickup, pouring, elevated pouring, and upright recovery. Maximum sampled pot tracking error was 2.75 mm / 2.56° during pickup.
  • MP4 verified: H.264/yuv420p, 1920×1080, 30 fps, 18.000 seconds, 540 decoded frames, faststart. Playback follows simulation time.
  • Warning output matched the prior full recording: 26 existing USD/material/asset/renderer warnings, zero additional warnings, and no proxy or solver warnings.
  • Full uv run isaaclab --format and changelog checks passed. Both affected pre-launch USD-import and concurrent-viewer contracts passed in the standalone environment.

Before the setup cleanup, a matched headless coupling A/B on an otherwise idle NVIDIA L40 used 135,314 particles at 800 Hz, 4,800 steps per variant with the first 400 excluded, and CUDA graphs:

Coupling Synchronized stepping time
Existing one-way 56.85 ms/step
Standard two-way proxy 59.41 ms/step

This single matched trial measured approximately 4.5% coupling overhead, excluding startup and rendering. It is not a repeated performance study of the cleaned-up setup.

Runtime: Python 3.12.14, Newton revision 71eeba16a717d4dcf0b9dd7056a7b6f863054dc3, Warp 1.17.0, MuJoCo/MuJoCo Warp 3.15.0, driver 595.58.03. Existing dependencies were reused without uv synchronization. No test files changed. Rendered documentation is unaffected; source instructions, CLI description, and changelog describe the behavior.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with uv run isaaclab --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have validated the changed behavior with focused coverage and applied the test-audit criteria to any test changes
  • I have added a changelog fragment for every touched source package
  • My name already exists in CONTRIBUTORS.md

@github-actions github-actions Bot added the isaac-lab Related to Isaac Lab team label Oct 19, 2026
@maxkra15 maxkra15 changed the title [Newton] Use two-way proxy coupling in the Rizon-Sharpa teapot example [Newton] Clean up Rizon-Sharpa teapot setup and coupling Oct 19, 2026
Merge main at 46d6cc3 while preserving the teapot proxy
behavior and current runtime/configuration ownership.

Focused checks, native startup, clean docs, and full hooks pass.
Full grasp/pour physical acceptance remains pending.
Keep this branch current with upstream main at
e4df255. Preserve the PR behavior.
Integrate upstream main e907f82
to keep this branch current while preserving its feature scope.
Integrate upstream main d78054a
to retain compatibility with current backend ownership and dependencies.
Integrate upstream main at ce2900d to keep
the branch current with shared API and dependency changes.

Validate the merged revision with focused checks and full formatting
and lint hooks before committing. Remote CI remains separate.
Integrate upstream main at 6d37745 to keep
the branch current with shared API and dependency changes.

Validate the merged revision with focused checks and all repository
formatting and lint hooks. Remote CI remains separate.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant