Four things that broke, and what they taught me
01
The imported CAD model had the elbow backwards
The arm's IK solver ran fine in simulation, but a large move on hardware drove a joint into its limit. The instinct that caught it wasn't a debugger — it was a structural argument: J2 is the earliest joint in the chain, so it has to move the claw more than J3, not less. The imported model said otherwise. A jog and a ruler confirmed it: the model's elbow moment arm was inverted by more than 2.17×. Four independent statistical analyses had all pointed the wrong way; one physical jog settled it in thirty seconds.
02
Replaced the CAD kinematic chain with a ten-number ruler survey
Rather than patch the imported model, I rebuilt the arm's kinematics from five physically measured points — no curve-fitting, no CAD trust required. Held-out validation error dropped from 73.1 mm to 6.0 mm. It was ported into MATLAB behind a single flag and verified by independent replication before going live.
03
A hardware failure became a real safety system
A mid-move power cut once dropped the arm and drove a servo into overload. That turned into deliberate driver-level hardening: freeze-first e-stop (torque stays on, motion stops), live torque diagnostics, per-joint travel limits, and paced stepping so a wrong move is stoppable by hand before it does damage.
04
Closing the loop with data, not guesses
Hand-eye calibration never converged below roughly 80–100 mm of error against a 24 mm ruler measurement — characterized precisely rather than papered over. The closed-loop visual servo path sidesteps it entirely: eleven real descent runs were logged as training data, a height model was fit from apparent brick area (after the more obvious pixel-rate signal turned out to run backwards), and a two-view triangulation survey now serves as an independent, hand-eye-free referee.