THE UNIVERSITY OF
BIRMINGHAM - SCHOOL OF COMPUTER SCIENCE

The University of Birmingham
School of Computer Science

The Cognition and Affect Project

THE SIM_AGENT TOOLKIT: DEMONSTRATION MOVIES
Aaron Sloman

The SIM_AGENT toolkit overview file introduces the toolkit demonstrated here.

Several groups of mpeg movies are available below, illustrating some of the uses of the toolkit. These require mpeg_play or plaympeg or mplayer or equivalent. Your browser may be able to recognize the .mpg file extension and invoke the appropriate tool. If not, please consult a local expert.

Some of the movies were created a long time ago on very slow machines. A new collection of movies, more suited to display on faster machines (e.g. over 300 mhz CPUs) can be found here: http://www.cs.bham.ac.uk/research/poplog/figs/simagent/

You may have some trouble with colour maps if you are viewing this file using an 8-bit colour display. If so, it may be better to save the movie files locally and run them directly with a suitable mpeg player.

NB: On a fast modern computer the demos may run too fast to be intelligible. In that case you may prefer to save them and run them locally with a player that allows you to step through frames.

SIM_DEMO movies

The first group of movies show different runs of the code in the tutorial introduction to the SIM_AGENT toolkit, namely the SIM_DEMO teach file, which is part of the online documentation included in the Pop-11 package.

In each case there are two "teams" of movers, one starting bottom left (the red team r1,r2,r3,r4 and their captain rc) and one starting bottom right (the blue team b1, b2, b3, b4 and their captain bc).

Initially the captains tell their team members to go to the targets top right (the red team) and top left (the blue team). On the way the two lots of team members not only have to pass by each other without colliding, they also meet a wall of "obstacles" (o2, o3, o4, o5, o6) with a gap in the middle, so they have to either go through the gap, or round the wall. (Obstacle o1 is added on the left in a later demonstration).

Only one player can get through the gap at a time. The algorithm that gets them all to the target is very simple, and sometimes breaks down. Each agent in this demonstration uses a purely reactive (behaviour-based) architecture, with no planning.

When the individual team members get to their target locations, the inform their captains. The communications between agents are shown in textual trace files, not included here.

The first movie gives a "coarse" sample of a run of the program. (Reminder: if the machine on which your browser is running does not have the mpeg_play program installed, you will not be able to view these movies.)

The second gives a slightly less "coarse" sample of a different run.

Two more movies based on the code in the tutorial file are provided, one with obstacle o1 added to the left, and another with the the obstacles rearranged slightly, causing team member r4 to get trapped because it uses only local reactive rules and cannot plan ahead. (This is a limitation of this example, not the toolkit.)

The "tracking agent" movie

We are using the toolkit to develop agents that can do significant planning in complex (non-flat) terrain, as are our collaborators at DRA Malvern (Jeremy Baxter and Richard Hepplewhite). The next demonstration shows some work done by Brian Logan, a research fellow working with Aaron Sloman. Brian is using the toolkit to develop a succession of scenarios involving increasingly complex games of hide and seek on interesting terrain. The demonstration movie shows two agents, seeker_1 and target_1, moving over undulating terrain, whose structure is crudely represented by grey-level values in the picture. Seeker_1 has to plan a minimum cost path over the terrain to intercept target_1 which is moving in a straight line. The different coloured lines indicate plans at different levels of abstraction. The images present only a very rough indication of what is happening. (The text and circles indicating the locations of the two agents keep changing colour because "xor" is used for drawing, to simplify the depiction of moving objects.)

The "Minder" movies

E.g. Ian Wright, a research student here in Birmingham, used the toolkit to implement Nilsson's ideas for TeleoReactive Programs as part of his exploration of an architecture for a motivated agent with both reactive and deliberative capabilities. His work followed on from Luc Beaudoin's PhD thesis, available in the Cognition and Affect Project ftp directory. Ian has programmed a number of scenarios. Early versions were recorded in three movies in June 1996, though the work has moved on since then. The agents illustrated here are all purely reactive, though some have limited goal-processing capabilities.

Two of the agents are represented by bold circles labelled "a" and "b", which react to a number of bars lying around by selecting four of them to build a square "house" near the top of the picture. In each case the final wall is installed with a gap at one end, leaving an opening by which things can go into and out of the house (not shown). The third agent, represented by a circle labelled "1", is a sort of infant that roams around until its "charge" gets too low, whereupon one of "a" and "b" takes it to the recharge point (a small black square at the bottom of the picture). In other scenarios the "infants" can fall into the ditches at left and right and die, whereupon they have to be taken to the cemetery at the top (rounded square). This is not shown in these movies.

The first movie shows agents "a" and "b" first roaming around to find out what is where and then each trying to build the house. By chance they manage to help each other and what emerges is the appearance of cooperation. This arises out of the fact that each changes the environment for the other so that what it does happens to be what is appropriate for the task. There is no communication between them.

The second example shows how unreal the cooperation actually is. Because of the (randomly generated) initial locations, the agents "a" and "b" both discover exactly the same black bars and try to select them in the same order to build the house. Thus as one of them grabs each bar and moves it to form a wall of the house the other trails after it, ending up being completely useless.

The third movie shows a case where the infant having to be carried down by to the recharge point and held there to recover, which is done by agent "b" while "a" gets on with building the house. Eventually "b" releases the re-charged infant and then goes and rotates the final wall, without altering the net result! This is a chance effect of what "b" notices about the situation.

More complex scenarios will make things difficult for the agents so that they can be expected in some situations to develop emotional states, e.g. when torn between rescuing an infant that is about to fall into a ditch and one whose charge is so low that it urgently needs to be taken to the recharge point.

The "Nursemaid" movies


An older program based on work by Luc Beaudoin, Ian Wright and Aaron Sloman before the SIM_AGENT toolkit was developed included a simulated nursemaid looking after collections of babies in several rooms joined by doors, with ditches top and bottom into which babies could fall. The babies which move around at random can also run out of charge. The nursemaid has to detect when babies are close to ditches and move them away from the ditch, and detect when their charge levels drop to a low value and then take them to a recharge point. As there is only one hand, looking after lots of babies can be difficult. Just to make it more difficult an extra goal can be triggered if rooms get too crowded, in which case the nursemaid needs to move some babies to empty rooms, which can be a problem if all the rooms are crowded!

Anyhow, when the BBC2 program The NET broadcast an interview with Aaron Sloman in February 1997 they asked for a sample of the nursemaid program running so I've made two movies, one showing the nursemaid (represented by a "hand") looking after only two babies, and another showing the nursemaid looking after twelve babies. For each of them there is also a text file recording the trace printout from the program, indicating when new motives are generated, when plans are adopted, when motives are abandoned or suspended, when previously suspended motives are restarted, etc. If you have a viewer like mpeg_play which allows you to single step through the movies you can see how the frames in the movie correspond to frame numbers recorded in the text file in the format: Frame(N).

The movies are a little jerky as I had to leave gaps between frames in order to make files of a manageable size. I slowed things down when the nursemaid was doing something, so the hand should move more smoothly than the babies do when the nursemaid is passively watching.

To interpret the movies you will need to know that each baby is initially represented by a letter with an asterisk, e.g. "a*", "b*", where the asterisk represents a healthy state. As the baby's charge level drops the asterisk is replaced by a number (e.g. "a5", "b3") and when the number gets down to about 4, the nursemaid may (or may not) notice this and then try to take it to the recharge point represented as a square object in the top right room.

If a baby falls into a ditch or does not get recharged in time it dies and the number or asterisk is replaced by a "D", e.g. "aD", "bD". Dead babies have to be taken to the discharge point, represented at the top left by a deaths head.

The movie for the first scenario (with two babies) is here and the text file is here. There are 221 frames, and the nursemaid manages to look after the two babies quite well.

The movie for the second scenario (with twelve babies) is here and the text file is here. There are 500 frames. By the end several babies have died, alas. The text file may not be easy to interpret, but it gives an indication of the way the nursemaid is pulled hither and thither by frequently generated motives that it cannot really cope with.

The minder (nursemaid) can be understood, more or less, if you assume that it has the following four types of goals:

1. Prevent babies falling into ditches
(The insistence (priority) of the goal depends on how close the baby is to the ditch.)

2. Recharge babies with low charge
(The insistence depends on how low the charge is if the charge gets down to 0 the babies die.)

3. Prevent more than 2 babies being in the same room (prevent overcrowding)

4. Get dead babies to the disposal point (marked with a death's head on the top left).

The overcrowding goal explains what may otherwise appear to random moving of babies between rooms.

The recharge point is indicated as a square spiral box, top right.

There is no learning, and no creative planning.

The nursemaid does not have perfect information about what's going on in the world: the visual system (not shown) scans the rooms to find out what is where, and the information provided can get out of date.

Sometimes when a suspended motive is attended to it turns out that it is no longer relevant, e.g. because the baby moved away from the ditch or because it has fallen in and now cannot be rescued.

This version of the nursemaid does not have the "meta-management" system described in some of our papers which would allow it to detect its own state. So the nursemaid has no awareness of the stress it is under.

The "Sheep Demo" movie

The Sheep Demo movie shows work done by Peter Waudby for his MSc project. There are seven sheep, a sheepdog, a pen into which the sheep are to be herded and two "trees". The dog has to get the sheep into the pen, using their behavioural tendencies including their tendency to move away when the dog approaches.

The dog is not (yet) intelligent but is guided by a person, using the mouse (not shown in the movie). The objective is to move the dog in such a way as to get the sheep into the pen. The sheep have an aversion to the dog, a liking for each other, and a tendency to wander at random. The task is very difficult with all those sheep and in this example not all are successfully penned. The Pop-11 code for this demonstration is available at ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/sim/demo/pcw.sheep.p It was initially loosely modelled on the SIM_DEMO tutorial file, and then extended and modified.

Thanks

My thanks to all those who allowed their work to be shown here.

This file designed to be lynx-friendly, is maintained by Aaron Sloman.
Last updated 26 Jun 2003
Email A.Sloman@cs.bham.ac.uk