Robotic arm
A robotic arm driven wirelessly from a mobile app: the phone sets the destination, the firmware works out the motion.
Driving a multi-joint arm from a phone means a command leaves a touchscreen and has to arrive as coordinated motion across several motors, over a link that is neither fast nor reliable enough to be trusted with the details.
- Wireless link with variable latency and real dropouts
- Six servos, five joints and a gripper, that must move together to be useful
- Arm must fail safe when the connection goes away
Send intent, not motor positions
The phone sends where the arm should go; the firmware decides how to get there. That keeps motion smooth when packets are late and means a dropped message delays a movement rather than corrupting one.
Hold position on link loss
The safe state for an arm holding something is not to release it. Losing the connection stops new commands rather than stopping the arm.
I put the inverse kinematics in the app before moving it into the firmware. On the device it belonged in from the start; the app should only ever have described the destination.
