Communication . The communication between the robot devices and the
robot controller is asynchronous and message-based. The physical inter-
action between the robot and the environment is simulated by means of a
predefined geometric map that represents the robot and the obstacles with
regard to the same Cartesian reference frame.
Generic components . From an implementation point of view, each device
is implemented according to the pattern Template method (Gamma et al .
1995): class Device defines method run() which invokes the abstract methods
executeCommand() and nextStep() . Every concrete device has to override
these abstract methods in order to implement specific behaviours in
response to external commands. The communication among the robot
controller and the devices is implemented using the pipe mechanism.
Decentralized systems made up of several functional units
with independent capabilities. Some units process data on
behalf of other units.
Functional units communicate using a common
information bus. No centralized clock is used to
coordinate data transfers between functional units.
Forces or tradeoffs
Functional units have no means of starting the
communication without a risk of collision.
Some units play the role of master; other units play the
role of slave. Master units request slave units to process
input data and to return output data. The communication
is direct, bidirectional, and asynchronous. Each slave unit
has a unique address and responds only to commands
addressed to its address. The responding slave decodes the
address and reads the command. The slave never starts
the communication. The master periodically polls all
connected slave units for return values.
The robot devices play the role of slave; the remote
controller plays the role of master.
The master unit assigns the “right to transmit” to slave
units. Assignment is done centrally via pooling, where the
master unit periodically asks all slaves whether they have
data to transmit. If so, the questioned station sends the
data immediately; otherwise, it does not reply.