# Calibration fixtures

## servo_zero_fixture.stl — universal STS3215+yoke q=0 zeroing jig
One reusable bench tool: drop a servo+yoke assembly in, the pocket only accepts it
when the (limp) yoke is at the URDF q=0 pose, then fire `INST_OFSCAL` so that pose
reads tick 2048. Keys off the servo body + yoke (identical at all 6 joints), so one
fixture zeroes every servo and absorbs horn re-clocking. Angular key ≈ ±0.5°.

Generator: `gen_servo_zero_fixture.py`. It reads cad's meshes (st3215.stl,
yoke_fillet.stl), so it RUNS from the cad tree (VPS /data/cameron/cad_recovery =
puget ~/cad_recovery_mnt), not standalone here. This copy is the owned source of record.
Rebuild: `ssh cameronsmith@100.104.232.94 'cd ~/cad_recovery_mnt && ~/cad_venv/bin/python gen_servo_zero_fixture.py'`
Verify:  same, `verify_fixture.py` (checks q=0 seats @ 0 interference, ±8°/±15° rejected).

Viewer: https://cad.omidlab.net/?dir=/home/cameronsmith/cad_recovery_mnt&file=servo_zero_fixture.urdf
Fit demo (servo+yoke seated): ...&file=servo_zero_fixture_demo.urdf
