OpenDubsBest example
Fixing the IK solver for the OpenArm
- Code I wrote
- 34 lines
- Language
- Python
- Tools
- ssik
- Hardware
- OpenArm
- Role
- Solo
- Status
- Upstreamed
Also shows: Open sourceKinematics & DynamicsPython
Teleop and planning both lean on ssik, the lab's analytical IK solver, which I didn't write, and on the OpenArm it kept failing. I traced it to a singularity in the solver itself: the OpenArm's joint axes meet at shared points, so its link lengths are zero and every twist is a right angle, and that exact geometry breaks the Raghavan–Roth elimination the solver uses. My fix nudges those zero lengths by a tiny fraction of the arm's size, so the solver works on an arm a hair off the real one, then, since forward kinematics is cheap, refines the answer against the true arm's FK, step after step, until it's an exact solution again. The maintainer confirmed the fix would have worked while landing the same one upstream.