Industrial Robot Arm

Since coming to MIT, I have had an interest in Robotics. After taking my first controls class last semester, I took on the project of restoring an old Epson Scara Robotic Arm.

In my class, we studied the kinematics which allowed me to define a model to use for my project.

This model allowed to implement forward kinematics as well as inverse kinematics to specify the trajectory planning.

Here is the Kinematic Model I used:


The ultimate goal of this project was to convert this old Scara Arm to a precision CNC machine.

Here is the Result:

photo 4

When I first got the robot, It was a mess. It was basically a bundle of wires, and was so old that there was not a wiring diagram available.

The first thing I did was to make a comprehensive Wiring diagram by using a multimeter and doing a heck of a lot of probing. I found when all the signals going into the arm travel, as well as where all the motor power goes. The next step was to engineer and electronics control set up cable of accurate control for CNC applications. To this extent I needed boards capable of sending PWM signals and counting encoders in order to use PID control. Each joint is actuated by a DC motor with a high resolution encoder, so in order to control the robots end effector position

I used PID control over the joint angles in each motor.

Here is the general set up for PID control:

The electronics I used were two Mesa motor drivers and a mes FPGA card. Each of these components was wired together and then tied to the signals into the computer and the robot arm.

After wiring all of the electronics, I wrote custom .ini config files as well as custom .hal files and kinematics files to configure the robot arm for use with Linuxcnc.

The result was a great GUI interface that was able to show me the real-time paths of the robot as well as its position in 3D space. On the right side, I was able to see each of the joint angles, the G-code pathas well as the machine control panel.

photo 3 (3)

one of my favorite parts of this project was learning about the electronics needed to control my CNC setup as well as the engineering how each signal should be processed both internally in the computer and externally through the use of the FPGA card. Below are some of the steps of wiring the arm itself. When I first received it, all of the wires were unknown and tangled.

Another aspect of this project was building the computer from scratch in order to communicate with the robot arm via Parallel Port communication. The parts for this computer were scavenged and put together with the goal of achieving an extremely low latency for Parallel Port communication with the arm. These components optimized the computers communication with the arm allowing for optimum signal processing on board the computer. After the computer was build I installed the LinuxCNC distribution of Linux and then was able to configure the function of the Parallel Port via LinuxCNC commands and configurations.