Skip to content

Set finite inertia for collisionless / visual-only rigid links#2198

Open
yalcintur wants to merge 4 commits into
mainfrom
fix/visual-only-gpu-dynamics
Open

Set finite inertia for collisionless / visual-only rigid links#2198
yalcintur wants to merge 4 commits into
mainfrom
fix/visual-only-gpu-dynamics

Conversation

@yalcintur
Copy link
Copy Markdown
Contributor

@yalcintur yalcintur commented May 11, 2026

GPU dynamics crashes caused by collisionless rigid links participating in articulations.

Collisionless links, such as visual-only or semantic/meta links, were assigned a tiny mass but could still end up with degenerate inertia properties. PhysX GPU articulation solving is less tolerant of these singular mass properties and could fail in GPU solver prep / zero-body kernels (e.g resetVelocity kernel etc.).

Copilot AI review requested due to automatic review settings May 11, 2026 21:50
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates EntityPrim post-load behavior to prevent PhysX GPU dynamics articulation crashes by marking joints that touch non-physical links (e.g., visual-only links or meta links without collision meshes) as excluded from articulation solving when gm.USE_GPU_DYNAMICS is enabled. The intent is to keep CPU dynamics behavior unchanged while making GPU dynamics more robust to “non-physical” articulation bodies.

Changes:

  • Invoke a new post-load pass that scans joints and sets physics:excludeFromArticulation=True for joints referencing non-physical link prims (GPU dynamics only).
  • Add _exclude_non_physical_joints_from_gpu_articulations() to compute non-physical link paths and apply the exclusion flag within a USD editing context.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread OmniGibson/omnigibson/prims/entity_prim.py Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 11, 2026

Profiling Report

Baselines (GPU dynamics)

Scenario FPS Load (s) Isaac (ms) Non-Isaac (ms) Mem (GB) VRAM (GB)
Empty scene 17.6 (+0.9% ⚪) 82.5 (+18.6% 🔴) 53.20 (-0.6% ⚪) 3.47 (-5.8% 🟢) 5.90 (-0.3% ⚪) 4.86 (-1.3% ⚪)
Empty scene + 1 Robot 7.3 (-1.7% ⚪) 144.2 (+0.8% ⚪) 104.61 (+3.9% ⚪) 31.62 (-4.8% ⚪) 6.35 (-0.2% ⚪) 4.94 (-0.0% ⚪)
Rs_int 7.3 (+1.5% ⚪) 191.4 (-8.8% 🟢) 110.02 (+1.1% ⚪) 27.10 (-10.8% 🟢) 6.73 (+1.6% ⚪) 7.93 (+0.0% ⚪)
Rs_int + 1 Robot 5.0 (+4.3% ⚪) 250.1 (-2.0% ⚪) 139.41 (+2.7% ⚪) 61.80 (-16.5% 🟢) 7.10 (+0.5% ⚪) 8.09 (+0.8% ⚪)

Scenes

Scenario FPS Load (s) Isaac (ms) Non-Isaac (ms) Mem (GB) VRAM (GB)
house_single_floor + 1 Robot 4.3 (-19.1% 🔴) 617.9 (-6.1% 🟢) 113.52 (+14.8% 🔴) 118.04 (+33.3% 🔴) 8.14 (+1.3% ⚪) 8.14 (-1.7% ⚪)

Non-physics features (GPU dynamics)

Scenario FPS Load (s) Isaac (ms) Non-Isaac (ms) Mem (GB) VRAM (GB)
1 Robot + fluids 6.2 (-3.6% ⚪) 168.8 (+5.8% 🔴) 128.48 (-1.1% ⚪) 33.57 (+27.1% 🔴) 6.58 (-0.7% ⚪) 5.72 (-0.0% ⚪)
1 Robot + cloth 6.0 (+1.2% ⚪) 139.6 (-8.7% 🟢) 138.30 (-0.1% ⚪) 28.23 (-6.2% 🟢) 6.54 (+0.9% ⚪) 5.92 (0.0% ⚪)
1 Robot + macro particles 3.7 (-7.5% 🔴) 139.3 (+6.3% 🔴) 115.45 (+4.7% ⚪) 152.92 (+10.8% 🔴) 6.51 (+0.2% ⚪) 5.10 (-0.0% ⚪)

Deep profile artifacts

Download deep profile HTML reports and raw .prof files from the Actions artifacts (artifact prefix: profiling-deep-). Includes:

  • load — environment loading
  • step — full simulation step
  • pre_physics_step — pre-physics step processing
  • post_physics_step — post-physics step processing
  • non_physics_step — non-physics step processing
Legend
  • 🟢 Improvement >= 5%
  • 🔴 Regression >= 5%
  • ⚪ Change < 5%
  • For FPS, higher is better. For all other metrics, lower is better.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 11, 2026

upload_report: Run #5284

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
198 178 0 20 0 0 0 not captured

🎉 All tests passed!

Github Test Reporter by CTRF 💚

🔄 This comment has been updated

@yalcintur yalcintur changed the title Exclude visual-only links from GPU articulations Set finite inertia for collisionless rigid links May 11, 2026
@yalcintur yalcintur changed the title Set finite inertia for collisionless rigid links Set finite inertia for collisionless / visual-only rigid links May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants