Programming and Controlling PUMA Robot Arms

When I was a Ph.D. student at the Purdue University, I spent some time on upgrading the Purdue University’s RCCL system. To find out the pros and cons of other robot programming and control systems, I played with some of them  such as  RCCL,  Kali,  MultiRCCL, and Chimera.

Prof. V. Hayward of the McGill University was invited  to discuss the upgrade of  the RCCL system.  He kindly provided us the source code and schematics of his Kali system. Eventually  I  came up with a hybrid of the RCCL and the Kali systems.  

V. Haward was  a visiting scholar working with R. P. Paul when he “wrote” the RCCL system in C.  I can say the RCCL is  based on the Purdue University’s PAL system written in Pascal and R. P. Paul’s textbook. V. Hayward viewed a robot as a peripheral of a computer system and showed some C libraries for that device can do the programming and control of robots.  Since the RCCL was introduced,  the research area of robot languages had disappered.   

Unimation was  the only company which gave away electrical schematics and mechanical drawing with their robots. They even passed the company-confidential document on interfacing an external computer with their PUMA controller.  Thus,  the PUMA robots has been a popular research platform in robotics. Due to the limitations of the Unimation controller, people tried to build their own robot controllers for PUMA robots.

On the request of my former major professor, C. S. G. Lee, I gave a presentation to his students in 1989.  The following slides were prepared for that presentation. And then more slides were added in 1999 and 2005, respectively.  All the robotics textbooks  mention the history of robots or robotics, but the history of robot controllers is found  nowhere.  In some sense, my slides show you the history of  robot controllers.        


Implementation of a PC-based motion controller/robot controller with USB interface [4]

USB Comminication speed between a host computer/board and the motion-control FPGA.

1. Experiment setup.  

  • 1530-byte round-trip test.
  • Asynchronous FIFO mode of the FT2232H.

2. Experiment results.

  • PC running a plain Linux: about 50 Mbits/sec.
  • Raspberry Pi 2 running a realtime Linux:  at least 30 Mbits/sec.

Implementation of a PC-based motion controller/robot controller with USB interface [2]


PC-based motion controller with USB interface:



Examples of FPGA board with USB interface:

  • FlashLink module (Xilinx Spartan-3).
  • Saturn module (Xilinx Spartan-6).
  • Morph-IC-II FPGA Development Module (Altera Cyclone II).


FTDI FT2232H  for USB interace:

1. Interface A port of the FT2232H: asynchronous FIFO mode.
2. Interface B port of the FT2232H: UART mode.

Connecting FT2232H to FPGA module:

1. XFC-XC3S50AN FPGA module and FTDI FT2232H mini module:

VCCAUX of the FPGA = 3.3V



2. Open3S3500E board and the FTDI FT2232H mini module:

VCCAUX of the FPGA = 2.5V


Do I need a real-time OS for industrial robot controllers ?

Yes and no, depending the hardware structure of your controller.

“Soft real-time OS” is enough except for servo control tasks. If  servo control tasks are responsible for the position, velocity and current control of PMSMs (permanent-magnet synchronous motors), the servo control tasks  have no way of escaping from  “hard real-time OS”.