6 An Example of SIE Applied: Identifying a User

A simple example of SIE in use is to address the task of recognizing the person sitting at SHELLEY's console. The task is accomplished by constructing one agent that accesses two devices: a frame grabber module that upon request returns a frame of video from the Sun video cameras used by SHELLEY, and an artificial neural network module that encapsulates all the functionality and data structures of a neural network, complete with facilities for training using the backpropogation algorithm [11]. This presents an example of a device module which does not interface with any external physical hardware. Instead, the artificial neural network device module provides a completely self-contained functional unit. It is still valid, however, to consider this as a device module because all any device module does is provide some function which should be separate and distinct from the role of the agent.

The user-identifier agent connects to the administrator, and requests both the frame grabber and artificial neural network devices, failing if owner permission cannot be granted for both. After initialization, the agent presents to the current user a menu with options: 'identify user,' 'capture frames to pgm,' 'train,' or 'quit.' Through this user interface, we can acquire a series of video frames and save them as pgm image files, use the image files to train the network, and then test the network with live video from one of SHELLEY's Sun video cameras. This functionality demonstrates the use of multiple devices by a single agent, all communicating through the administrator.

This example demonstrates several key features of SIE. First, SIE's flexibility is exhibited in the implementation styles employed. While the administrator is implemented in strict C (primarily to support multi-threading), the user-identifier agent is implemented in C++. In reality, the devices and agents can be individually implemented in any language with bindings to the sockets API. As long as the communications protocol is followed, one module does not need to know the implementation details of any other module.

Another example of SIE's abstraction of implementation details is the way in which external hardware can be easily changed without disrupting SIE. If the current Sun video cameras were replaced by different peripherals for visual perception, then all that would be needed would be a new frame grabber module that used the same communications protocol for the previously existing agents to still be useful.

Finally, the largest single benefit of SIE is the ease of implementation of the user-identifier agent. Simplicity was further increased by the development of C++ wrapper classes to encapsulate the communication with each device; when the agent creates an instance of each wrapper class, the constructor handles the startup communication with the administrator. The agent then calls methods of the classes to send all the requests to the devices (via the administrator) and collect the resulting data. These classes are declared and defined in separate files from the user-identifier so that they can be used by other agents. Of course, the implementation of future agents that use these same devices need not employ the wrapper classes, and can rely directly on the protocol header files.

Next     Previous Contents