The controller is an arduino mega and a few lm298 motor driver boards, with a raspberry pi to guide the movement through gcode-like commands. The arm uses DC motors and encoders, with terribly-tuned pid loops, and an underpowered microcontroller to run the kinematics.

It does have full forward and kinematic support, as well as linear interpolation, and linear speed control. The PID class was NOT mine, it was mainly the arduino PID library, I just changed a few things to allow easier tuning (not that I actually tuned it WELL, but that's another thing). The arduino takes serial data in a gcode like format, that include both the XYZ position, angle of attack, and the rotation of the wrist. It then runs the linear interpolation, kinematics and finally PID loops. The pi runs through a file with variable delay between lines, and sets the position of the arm at each point.