$ cat ~/work/grenadier-robotic-arm.md
project · robotics · 2024
Grenadier Robotic Arm
Vision-Guided Pick and Throw
A vision-guided pick-and-throw pipeline on a five-DOF Lynxmotion arm: one camera finds the object, geometric inverse kinematics picks it up, a second camera finds the target and the arm throws.
- kind
- project
- course
- ECE 4560, Georgia Tech
- category
- robotics
- period
- Aug 2024 - Dec 2024
- status
- completed
- team
- 3 members
head -n 20 README
A vision-guided arm that detects a small object in its workspace, picks it up, locates the nearest person by face detection and throws the object toward them.
The hardware was a lab Lynxmotion Lynx-6 arm on an SSC-32 servo board, driven over serial from MATLAB; the team built everything above it. A three-point click calibration maps overhead-camera pixels to arm coordinates. Detection is an HSV color threshold, a largest-contour search and a centroid. From there, closed-form geometric inverse kinematics in Python computes the base yaw and the two-link cosine-law solution for the shoulder and elbow, converted to servo pulse widths. A second camera runs a face detector to select the target, and the throw is a fixed two-pose motion aimed by base rotation. Python and MATLAB hand off through small text files. It runs end to end. The main limitation was calibration drift of a few millimeters whenever the camera or the workspace moved.
grep -n highlights
- 01Built a vision-guided pick-and-throw pipeline on a five-DOF Lynx-6 arm, from detection through inverse kinematics to a targeted throw.
- 02Calibrated the workspace with a three-point click mapping from camera pixels to arm coordinates.
- 03Detected the object with an HSV threshold, largest-contour search and centroid on live camera frames.
- 04Wrote closed-form geometric inverse kinematics in Python, converting base yaw and the two-link solution to servo pulse widths.
- 05Selected the target with a dlib face detector and aimed a fixed two-pose throw by base rotation.