Skip to content

Luxo lamp: re-calibrate balance springs after interference-clean geometry rework #379

Description

@w1ne

The mechanism-validity gate redesign (absolute-cap interference model) required reworking the Luxo lamp geometry to be interference-clean across its motion range:

  • restored `liftPivot: true` on all three clevis joints (separates child body from parent fork)
  • pulled the head neck forward of the wrist fork (7103 → ~950 mm³)
  • tightened the elbow limit to [-118, 0] so the beams don't collide when folded

These changes (especially `liftPivot` moving the joint axes, and the head-neck mass shift) regressed the drop-test (criterion 6): the shoulder joint now sags ~5° under gravity (threshold 5°). The three balance-spring stiffness/restLength values were calibrated for the old geometry and now need co-calibration against static equilibrium — single-spring hand-tuning overshoots (stiffening the shoulder alone drives 8° drift + 51 mm head translation; the chain is a coupled multi-spring oscillator).

Proper fix: solve for the three spring parameters that zero `qfrc_inverse` at qpos=0 (inverse-dynamics calibration), rather than hand-tuning.

The lamp is interference-clean (kinematic gate green); only the physics drop-test is affected. Test `luxoLampClevis.test.ts > passes the full physics gate` is skipped citing this issue until re-calibrated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions