A key aspect of our design is the on-board support of standard Internet protocols (e.g., TCP/IP, FTP, etc.). We examined several ways of modifying the R3 to accept network connections including direct modification of Venus. An alternative was to add another processor capable of running Unix, which supports network communications natively and to write software that interfaces the two. In addition to satisfying our original requirements, choosing the latter option also allowed us to significantly upgrade the computational capability of the R3 and provide access to the large base of Unix applications.
Therefore, our robots have been augmented with a compact 486DX2-66 Unix workstation, based on the PC/104 bus standard, with 4MB of RAM and .5GB mass storage. The workstations run a variant of Unix called Linux, for which source code is available, making kernel-level modifications possible. This ability becomes important when device drivers have to be written for task-specific sensors or actuators. The entire workstation fits in a 12 cm cube that is secured to the top of the R3.
The Unix workstation and the robot communicate via virtual shared memory. By this, we mean that no actual physical memory is shared; instead, we emulate shared memory with software that drives RS-232 hardware linking the two computational resources. The shared memory is logically implemented as files on the Unix workstation that store the current values of the robot's sensors and the current set points of the robot's actuators. The update frequency between the workstation and the R3 is currently 32 Hz.
The advantage of this file-based shared memory approach is that closed loop control of the robot can be implemented as a high priority Unix process that reads the sensors file, computes new actuator set points, and then updates the actuators file. Since virtually all languages support some kind of file access, this system provides nearly universal access to programming languages.