Control of minimalist robot vehicles
DL Buckley & MCB Smith
Proceedings 14th InternATIONAL CONGRESS ON CYBERNETICS,
NAMUR, BELGIUM, AUG 1995, ISBN 2-87215-003-X, 712 - 714
Tiny Tim, a Minimalistic Robot Vehicle
David L Buckley
Mobile Robots Research Group
University of East London
18 August 1995
Abstract
--------
The paper describes the control structure and hardware of Tiny Tim,
a minimalistic self contained autonomous robot vehicle which was
designed to be as small as possible whilst using easily available
off the shelf components. The robot can be easily programmed with
the necessary control functions for it to survive and operate in
the limited unstructured environment of the average desktop.
Introduction
------------
Building mobile robots controlled by large (ie desktop) computers
is not necessarily instructive in planning the control structures
required for survival of an Autonomous Mobile Robot (AMR) in an
unstructured environment.
Tiny Tim is one of a series of minimalistic AMRs constructed in
order to test and refine the flexibility and robustness of small
structured control programs.
Requirements
------------
Tiny Tim was required to be able to operate in a small area of a
desktop where obstacles could be easily rearranged to challenge
various parts of the control program. It was to have sufficient
sensors to enable it to cope with obstacle whilst achieving some
recognisable goal. As an extra function it was desired to implement
some of the control structures described by Braitenburg. (ref.1)
It had to be programmed in a high level language with fast
reprogramability which ruled out the use of EPROMs for program
storage. It had to have non-volatile program storage to allow
programs to run at switch on. It had to have some feedback device
for the experimenter to monitor control flow in the program.
An umbilical was deemed to be totaly impractical on such a small
AMR except for program downloading and hardware diagnostic
purposes. Furthermore it had to have a battery life well beyond
the 20 minutes of comparatively sized machines. (ref.2)
Design Realisation
------------------
As is illustrated in Figure 1; the vehicle was equipped with four
sprung wiskers for detecting contact with obstacles; two Light
Dependent Resistors (LDRs) aimed forward and slightly off centre
detect left and right light levels which allowed the seeking or
tracking of a light to be used as a goal behaviour; a piezo sounder
was used as the operator feedback device; and two small electric
motors with integral gearboxes drive the rear wheels allowing
steering by differential control of the motors as in a wheelchair.
Control Structure
-----------------
The structure of the control program is outlined in Figure 2.
Information from the sensors is windowed with the Expected Output
of the sensors before being passed to the Response selector
section. In the current implementation the Expected Values are
constants but by allowing them to be variables, Responses can be
selectively turned off to allow for example the AMR to push a block
instead of avoiding it.
In this implementation the Explore response is a default 'fix' to
allow the AMR to do something in the absence of sensor input, in
larger systems with more Response categories and or multitasking
controllers the fix would of course not be necessary.
Higher priority Responses are higher up in the diagram and
when a response is activated an inhibitory message is sent to all
lower priority Responses.
The output from the activated Response with the highest priority
initiates one of several routines. For example if an object is
detected by the right front wisker then the Avoid Right reponse
initiates the routine:-
Set motors into reverse,
Sing Song3 for a duration depending on the
current frustration level,
Stop the right motor,
Wait a short time,
Songs are actually cheeps squeals and clicks and are used not only
to time the various loops in the program but to indicate the
current position in the program.
At the moment there is only one variable which allows Behaviour
modification, the Frustration-Level which is incremented at its
excitation rate whenever an Avoid Front Left or Avoid Front Right
response is activated, and then decays at its decay rate. Song3
which used when reversing away from obstacles is sung for a time
proportional to the current level of Frustration and hence when
the AMR is frustrated by bumping into lots of obstacles it
reverses further before turning away.
It should be noted that although the left half of Figure 2 seems
to be similar to Subsumption control structures, (ref. 3) it is
not based on Subsumption principles but on earlier work by the
author dating from 1981.
Figure 3 is a pseudocode listing of the main program loop and
examples of the main subroutines.
(Figure 3 - see below)
Hardware Realisation
--------------------
It will be apparent from Figure 4 that Tiny Tim is SMALL.
Nevertheless it is constructed from easily available commercial
parts.
The heart of the robot is a PIC16C56 control processor with
1K 12bit words of ROM which is preprogrammed by Parallax Inc
with a BASIC interpreter specially designed and optimised for
control operations. Tokenised BASIC programs of up to 256 bytes are
stored in a serial EEPROM and control of the robot is through an
8 bit port. The use of an EEPROM means that program code and
variables and data if required are retained when power is off,
and the program autostarts at power up. Programs are written on
an IBM compatable PC and new programs download in less than
5 seconds. The use of a high level language enables motors or
sensors and responses to be tested immediately via the debug
facility of the Parallax programming environment.
The two motors from Conrad Electronics each draw 15 milliamps
and are directly connected to four pins of the PIC's I/O port.
The four obstacle detecting wiskers are encoded by four resistors
and connected to one I/O pin. The two LDRs for light level sensing
are each connected to an I/O pin and the resistance values of the
wisker assembly and LDRs are read by means of the POT function.
The TUNE command enables Songs to be played on a piezo sounder
connected to the remaining I/O pin.
Power is provided by three 360 mAh mercuric oxide cells which
despite being overrated allow the AMR to be used for well over a
whole day.
Limitations
-----------
The small size of Tiny Tim makes harware changes and enhacements
very difficult to do and the wiskers are easily damaged. In
practice because of the resistance of the switches decoding of the
two rear wiskers is not done and they are treated as one.
256 bytes of program storage is not a lot nevertheless because of
the efficient design of the BASIC interpreter it is sufficient for
the program outlined in Figure 2.
Conclusion
----------
By adopting a control structre which allows easy grouping of the
various required responses to stimuli, activities, actions etc,
with well defined interconnects between the groups it is a simple
task to program AMRs, even ones as minimalistic as Tiny Tim.
References
----------
1. Braitenburg V.
Vehicles. Experiments in Synthetic Psychology.
MIT Press. Cambridge, 1986.
2. Mondada F. and Verschure P. F. M. J..
Modelling system-environment interaction: The complimentary
roles of simulations and real world artifacts.
Proceedings of the Second European Conference on Artificial Life.
Brussels 1993.
3. Brooks R. A.
A robust layered control system for a mobile robot.
IEEE Robotics and Automation. RA-2:14-23, March 1986.
Figures
-------
Figure 1
Schematic of the AMR Tiny Tim.
( on separate sheet )
Figure 2
The Control System Structure employed in Tiny Tim.
( on separate sheet )
Figure 3
Pseudo Code Fragments of the Control Program.
Start:
REPEAT
INITIALISE_IO_PORT
READ_TACTILE_SENSORS
CASE obstacle AT
front : AVOID_FRONT
left : AVOID_LEFT
right : AVOID_RIGHT
rear : AVOID_REAR
no obstacle : DECREMENT_FRUSTRATION_LEVEL
REACT_TO_LIGHT
ENDCASE
ENDREPEAT
END
INITIALISE_IO_PORT
SET_SENSOR_PINS_TO_INPUT
SET_MOTOR_DRIVE_PINS_TO_OUTPUTS
ENDSUB
AVOID_FRONT
INCREMENT_FRUSTRATION_LEVEL
SET_MOTORS_TO_REVERSE
PLAY_TUNE_3 (duration = frustration_level )
SET_MOTORS_TO_CURVE_BACK_RIGHT
WAIT ( about 1/3 second )
SET_MOTORS_TO_STOP
END_SUB
REACT_TO_LIGHT
READ_LEFT_AND_RIGHT_LIGHT_LEVELS
CASE light_level
strong_light_to_left : ROTATE_LEFT : SING_SONG_2
strong_light_to_right : ROTATE_RIGHT : SING_SONG_2
medium_light_to left : CURVE_FD_LEFT : SING_SONG_2
medium_light_to_right : CURVE_FD_RIGHT : SING_SONG_2
ENDCASE
END_SUB
Figure 4
The Physical Layout of Tiny Tim.
( on separate sheet )
----- End -----