home  >  Tiny Tim  >  Namur paper 20 October 2003

	Control of minimalist robot vehicles 
	DL Buckley & MCB Smith
	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
     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.
     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.
     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
     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.
     The small size of Tiny Tim makes harware changes and enhacements
     very difficult to do and the wiskers are easily damaged. In 
     practice becuase 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.
     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.

     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.

     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.
                  CASE obstacle AT
                    front       : AVOID_FRONT
                    left        : AVOID_LEFT
                    right       : AVOID_RIGHT
                    rear        : AVOID_REAR 
                    no obstacle : DECREMENT_FRUSTRATION_LEVEL
                  PLAY_TUNE_3 (duration = frustration_level )
                  WAIT ( about 1/3 second )
                  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

     Figure 4
     The Physical Layout of Tiny Tim.   
                  ( on separate sheet )
                   ----- End -----

home  >  Tiny Tim  ,  top