Skip to content

Example examples/robot-hand/two-finger-coupled-gripper.kcad.ts fails the physics-grounded loop #354

Description

@w1ne

Symptom

node dist/cli/index.js validate --include-interference examples/robot-hand/two-finger-coupled-gripper.kcad.ts reports mechanism: broken with 13 mechanism.interpenetration failures.

Representative failure:

Parts 'palm' and 'left-finger' overlap by 365.62 mm³ at pose sample 'rest' and are NOT joined by a mate that would explain the contact.

Palm overlaps each finger by ~366 mm³ at every sampled pose; finger-root cylinders also overlap palm geometry at the curl extremes.

Root cause

The fingers' hinge knuckles physically nest into the palm's hinge cheeks — a real clevis joint pattern — but the example uses pin-axis vec3 connectors instead of joint.clevis(...), so the joint-pair tolerance in mechanismTruth.ts:checkInterpenetration (which excludes contact-face overlap at declared revolute mates up to a fraction of the mate volume) doesn't recognise the contact as expected.

Fix scope

Rebuild the palm + finger hinges using joint.clevis(...) (the same primitive the Luxo lamp uses). The clevis primitive will:

  • generate fork + tongue + pin geometry,
  • union the geometry into the right parts,
  • return connectors that the physics loop's joint-pair exclusion tolerance recognises as the contact face.

Estimate 1-2 hours given there are two hinges (left + right curl) and the coupled-mate transmission needs to keep working.

Spec

  • docs/specs/2026-06-01-physics-grounded-loop-design.md §criterion 2
  • docs/plans/2026-06-01-physics-loop-P3-sweep-and-demote.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    physics-loopExamples failing the physics-grounded loop (P3 sweep follow-ups)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions