Skip to content

Fix Kamino contact capacity allocation - #403

Closed
rubengrandia wants to merge 83 commits into
disneyresearch:mainfrom
rubengrandia:rgrandia/fix_kamino_contact_capacity
Closed

Fix Kamino contact capacity allocation#403
rubengrandia wants to merge 83 commits into
disneyresearch:mainfrom
rubengrandia:rgrandia/fix_kamino_contact_capacity

Conversation

@rubengrandia

@rubengrandia rubengrandia commented Jul 30, 2026

Copy link
Copy Markdown

Description

Fixes several Kamino contact-capacity bugs uncovered during the investigation of #323. Also touches warning behavior discussed in #115.

Changes

  • Plane-pair capacity accounting: max_contacts_for_shape_pair() now returns meaningful estimates for canonical (PLANE, X) pairs instead of (0, 0). A bug in the implementation missed the values we had assigned to those pairs.
  • External collision path (use_collision_detector=False): SolverKamino now sizes ContactsKamino from the Newton CollisionPipeline estimate when model.rigid_contact_max == 0, making allocation order-independent with the pipeline. This also removes the warnings that resulted from initializing Kamino before the contact pipeline.
  • Newton → Kamino conversion: scan all Newton contact slots (rigid_contact_max) so a saturated world cannot prevent later worlds from filling their per-world caps. This was a subtle bug that only happens when the external contact capacity is higher than the internal one.
  • CollisionDetector capacity resolver: replace equal model-total split with per-world geometry/pair-based budgets, proportional capping via max_contacts, and explicit max_contacts_per_world override.
  • Docs/warnings: clarify that max_contacts caps (not floors) the geometry estimate; soften conversion overflow warnings and restrict Kamino→Newton export warnings to only happen when Kamino's internal detector is used.

Checklist

  • New or existing tests cover these changes
  • The documentation is up to date with these changes
  • CHANGELOG.md has been updated (if user-facing change)

nvtw and others added 30 commits July 21, 2026 11:37
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Alain Denzler <adenzler@nvidia.com>
Signed-off-by: Alain Denzler <adenzler@nvidia.com>
…sics#3488)

Co-authored-by: linyaodong <yaodong.lin@lightwheel.ai>
Co-authored-by: Dylan Turpin <dturpin@nvidia.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ics#3122)

Signed-off-by: JC <jumyungc@nvidia.com>
Signed-off-by: JC Chang <jumyungc@nvidia.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Milad Rakhsha <mrakhsha@nvidia.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
rubengrandia and others added 29 commits July 27, 2026 07:28
Co-authored-by: Cursor <cursoragent@cursor.com>
…3610)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Milad Rakhsha <mrakhsha@nvidia.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: JC Chang <jumyungc@nvidia.com>
… when approximating (newton-physics#3712)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Eric Heiden <eric-heiden@users.noreply.github.com>
…s#3711)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Dex Smither <dsmither@nvidia.com>
…import (newton-physics#3654)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Viktor Reutskyy <vreutskyy@nvidia.com>
…-physics#3728)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.