Robotic Arm Control

While in college I lead a team that developed a new user interface for an existing software system that controlled a generic sample handler robot. The robot, called Gilson, was used to measure and feed different materials into an NMR (Nuclear Magnetic Resonance Spectrometer) at the Complex Carbohydrate Research Center at the University of Georgia.

The existing system was written in C (ANSI and pre-ANSI), Tcl/Tk, and csh shell scripts. The existing user interface was a combination of two systems that the user had to master in order to do a simple experiment. The first was a simple Tcl/Tk script that setup parameters to feed into some C code. The second had to be run from the shell and used its own shell syntax once it started up. From this shell you could start up the robot and run experiments. The complex had recently acquired additional funding and was ramping up its research. Part of this initiative was to create a system that would allow simple experiments to be done by newly-hired researchers without any training on the software itself.

Our group studied the existing 50,000 line C and Tcl/Tk code and discovered ways to hook into the functionality that they needed. We then wrote a simple interface from which the user could setup an experiment, check their parameters, and then start the robot. Many of the configuration settings that were done by hand in the custom shell we controlled and set so that the user wouldn't have to start that shell. We also met with the head of the project and mapped out a skeleton of code that could be used for future experiments that they system did not yet support (for example, new protocols for how different pHs were mixed to create a sample).