Parts Overview

I've had a robot arm sitting around for a few years and kept telling myself I'd dust it off and use it for a cool project, but never got to it until now.

The goal of this project was to demonstrate that by mounting the 4 Ping sensors to the gripper of the arm its motors could be controlled to direct the arm towards the closest target object (within 15cm in this case). Target objects could include one's hand or any flat surface measuring a minimum of 5cm by 5cm.

So the robot arm could be returned to its unmodified state quickly, I've wired a relay module into the arm's controller to utilise the existing switchers. This means that each switch requires 2 relays, 1 for each direction that the motor can turn.

The Arduino receives signals from the Ping sensors, calculates the distance to the nearest object from each sensor and sends a signal back the appropriate relay to control the arm's motors.

Currently the arm has 2 degrees of motion; up and down, equivalent to a human's shoulder joint, and left and right, equivalent to twisting one's waist. As demonstrated in the video above, the arm does move in the direction of the target object, but because it relies on relays to control the arm's motors there's a delay (and subsequent overshoot in some cases) between detection and reaction.

To increase the speed of the feedback loop between the controller and the arm, the Arduino, via a motor control module, should be directly controlling the direction and speed of the motors. This would smooth the arm's motion and improve the interaction between the human holding the target object and the robot.

While this simple demonstration meets the project's goal for now, I will explore further enhancements, such as direct motor control, in the future.