Linux Device Driver for IMI's Zebra Zero Robot Arm

Over the past couple of months, I have been writing code to run IMI's six-degree-of-freedom manipulator (Yale's lab owns two, pictured above) under Linux, instead of DOS, the only OS supported by Integrated Motions, Inc.

Why Linux?

DOS is a difficult system on which to run networked code. In particular, because my interest is hand/eye coordination, it is convenient to have one or more workstations with cameras analyzing images, while the robot PC only handles the control of the arm's joints. The results of the vision processing need to be sent to the robot's PC, which was challening, though possible, under DOS. (The lab had run the arms under DOS for about 6 years with a special-purpose piece of assembly code at the heart of the interface. When the network card stopped networking, the decision was made to port to Linux, rather than continue to maintain the DOS system.)

Linux has complete built-in support for networking (not to mention multiprocessing, interprocess communication, and all of the unix tools we're used to using in the lab), and is extremely stable, so it seemed a natural platform for expanding our robot's software infrastructure.

The Driver

The driver communicates with the motor-control board supplied by IMI which contains eight HCTL-1100 motion-control chips from Hewlett-Packard. These chips can be memory-mapped into user space with a very simple kernel-space driver. From there, a user's program can take advantage of all of the functionality of the robot.

The driver code supplied below contains both the small kernel-space driver and a library of C code providing basic robot functionality. If you would like to use it and run into trouble installing, compiling, or using the code, let me know, and I will see what I can do. These links contain the main driver and a few C++ classes for nonblocking keyboard input and some home-spun networking.

Download the driver (11/19/98 version)

Download some supporting classes (11/19/98 version)



Zach Dodds
Hand/Eye Coordination
Center for Vision and Control