A mobile robot is a complex system that integrates sensors (sonar, laser, etc.),
actuators (motors) and processing units (onboard computer and remote
control station) and carries on complex tasks (obstacle avoidance, navigation,
exploration, etc.) autonomously.
This chapter addresses the problem of developing a software application
that simulates the behaviour of the robot system and of its basic compo-
nents. The emphasis is on the simulator's architecture that is multithreaded
and allows plug-and-play integration of software components for the simu-
lation of robotics devices. The synchronous and asynchronous communi-
cation between the robot and the remote workstation is simulated using the
pipe mechanism. The robot environment is described in XML files and is
represented graphically in a user interface.
Focus: this case study exemplifies the development of a multithreaded
OO techniques: active objects and pipe communication.
Java features: Java Threads.
Background: the reader is required to know the basic concepts of con-
currency and synchronization and of the XML mark-up language.
Several new applications, such as planetary navigation, construction, toxic
waste clean-up and even office automation employ autonomous mobile
robots to reduce the need for human intervention in many dangerous or
repetitive activities. These applications require the mobile robot to be able
to operate in unstructured environments with little a priori information. To
achieve this ability the robot must exhibit high degrees of autonomy by
being able to recover robust and consistent descriptions of its surroundings
using sensory information; this kind of task is commonly called exploration
of an unknown environment. This means that the robot should exhibit
several important functionalities:
Ability to move in the environment, avoiding obstacles.
Ability to manage a variety of sensors; a single sensor is rarely enough to
acquire useful information from the environment.