SimpleArm is a servo arm that sees a point in 3D space and reaches for it. The interesting half isn’t the motors — it’s the perception-to-motion pipeline that turns a camera frame into joint angles the hardware can execute.
Seeing in 3D
An Intel RealSense D435 depth camera (640×480 at 30 FPS) supplies the scene; OpenCV and pyrealsense2 process the frames, and MediaPipe tracks a hand or object for the arm to follow. The input is a real depth reading, not a flat image — the arm knows how far away a target is.
Camera frame → robot frame
A calibration step solves the camera-to-base offset, and every target point is pushed through a transformation matrix so “where the camera sees it” becomes “where the arm must reach.” Getting these two frames to agree is the part that makes or breaks the whole system.
Inverse kinematics
An IK solver maps a target (x, y, z) to servo angles — each joint clamped to its real mechanical range — and streams them to an Arduino over serial. A motor-driven gripper closes on contact using dual limit switches, with a five-second failsafe so a missed grab never stalls the arm.
Two ways to drive it
A PyQt5 GUI exposes both an interactive mode (type a coordinate, the arm goes there) and a tracking mode (auto-follow a detected object), with a socket layer decoupling perception from control.
What stuck
The arm is the easy part. Most of the work was perception and calibration — getting the camera and the arm to agree on where a point actually is. Robotics, it turns out, is mostly coordinate frames.
