-- A simulation environment for the design of autonomous agents --

(Project suitable for) MSc or AI4; could be recast as a two-person project.

(Proposer) Peter Ross

(Suggested supervisors) Peter Ross; John Hallam; Gillian Hayes

(Principal goal of the project) To create a graphical, multi-process
environment for experimenting with the design of basic autonomous
agents, principally based upon software subsumption architectures.

(Description of the project) In Brooks' subsumption architecture, there
are typically a set of competences built into a simple autonomous agent
such as a mobile robot. The competences are not engineered to be a
sequence of filters as in earlier system designs; instead, they
typically have access to the stream of sensory information and to
each other's output, and act to insert or remove members of a stream of
action commands in order to achieve their purposes. The overall
behaviour is thus an emergent property of the interplay of the
competences, and more complex behaviours can be realised simply by
adding new competences.

The aim of this project is to build a simulated two-dimensional robot
that can move in a simple but modifiable world; certain features of the
robot, such as its dimensions and sensory capacities, should also be
modifiable. The robot should be able to send streams of sensory data to
other UNIX processes and receive streams of commands from them, using an
existing simple socket package written in C that allows asynchronously
started UNIX processes to open, maintain and close communications
without using standard input and output. Thus, for example, when the
robot simulator process is started the graphics should appear but the
robot should be stationary. When some `move' comptenence process is
started, perhaps at some other workstation, the robot should start to
move, and perhaps get stuck against an obstacle; however, if an `avoid
obstacle' competence is then started the robot should be able to resume
moving and not hit other obstacles. Obviously this sketch omits
considerable detail.

The first step in this project will be to hook up the existing simple
socket package to (perhaps) two versions of Scheme (a dialect of LISP)
and to Sicstus Prolog. The package is written in C and already provides
the necessary functionality in a simple way. The two Scheme systems are
Elk and Scheme->C; both have X-based graphics interfaces. The latter
has a graphics interface called EZD which is simple to program and very
powerful, and also a good compiler; the former, Elk, has better
debugging provisions for the development of Scheme programs and a number
of useful autoloadable extensions. The user of the simulation system
might wish to use either version of Scheme or Prolog as the language in
which to develop some kind of competence process. This first step will
require some modest ability to program in C, but should only take a week
or so to complete. The second step will be to develop the graphical
simulation of the robot together with a suitable interface for
customising it for experiments; this will be the main labour of the
project. The third step will be to test and validate it by building some
separate competence processes to demonstrate the system in action.

(Resources required) UNIX, X-Windows, Elk, Scheme->C, Sicstus Prolog all
on a Sun workstation (Scheme->C does not as yet run on an HP
workstation); the `Simple Socket' library (see Peter Ross, who has all
the necessary software documentation)

(Degree of difficulty) Quite hard; could be recast as a two-person project

(Suitability for sudents with specific backgrounds) Must know some C, be
comfortable with LISP and Prolog, be a good programmer; preferably have
done the ISC module.

(References) Various papers by Rodney Brooks from MIT, eg in volume 2 of
`AI at MIT: Expanding Frontiers', eds Winston and Shellard 1990.

