■odorici.sys

$ 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.

fig.01 · photograph
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

  1. 01Built a vision-guided pick-and-throw pipeline on a five-DOF Lynx-6 arm, from detection through inverse kinematics to a targeted throw.
  2. 02Calibrated the workspace with a three-point click mapping from camera pixels to arm coordinates.
  3. 03Detected the object with an HSV threshold, largest-contour search and centroid on live camera frames.
  4. 04Wrote closed-form geometric inverse kinematics in Python, converting base yaw and the two-link solution to servo pulse widths.
  5. 05Selected the target with a dlib face detector and aimed a fixed two-pose throw by base rotation.

ls ./media

fig.02The Lynx-6 arm and its gripper-mounted camera, driven from MATLAB over serial.
■ 12 modules · 2 roles∿█