Saturday, May 5, 2012


Abstract
This project work describes the development and implementation of a maze-solving robot. The robot can configure out the map of the maze by moving around in the maze and recording its path. Through a working algorithm, the project tends to show that it is possible to solve a micromouse maze.
The fundamental approach to maze solving is by examining the walls in each cell of the maze, which would correspond to all the possible wall positions of the maze. Three range sensors are used to determine the presence of the wall, which are then preprocessed by a microcontroller and stored as wall of the maze in EEPROM of the microcontroller.
The algorithm used to implement this is modified flood fill algorithm. This algorithm helps to ascertain the minimum path required by the robot to reach the goal of the maze.  This algorithm unlike other algorithm takes into various paths of reaching to the goal of the maze into consideration. Once the goal state has been reached during its first run, it stores the shortest path required by the robot to go from the starting state to the goal state.
Finally this project summarizes the steps involved in building a low cost successful micromouse robot using modified flood fill algorithm. Further improvements for algorithm and hardware are suggested.













1.     Introduction
1.1  Concept of Micromouse
1.2  Micromouse Maze
1.3  Fundamental Approach to the problem
1.4  Significance of the project
2.     Preliminary Work
2.1  Reviewing previous micromouse work
2.2   
2.3  Deployment
3.     Hardware
3.1  Block Diagram and Power
3.2  Motors
3.3  Sensors
3.4  Microcontroller
3.5  Chassis
4.     Software
4.1  Maze Solving Algorithms
4.2  Modified Flood Fill Algorithm
5.     Testing and Evaluation
5.1  Implementation and Results
6.     Conclusion
6.1  Summary
6.2  Future Work
References







Chapter 1
Introduction
The main objective of this project is to design and construct an autonomous robot that must navigate a maze and reach the center of it. During the first run time, the robot creates a map of the robot, by moving in the maze detecting walls and avoiding the walls and reaches the center of maze. Once it has reached the center of the maze, during the second run the robot makes use of the stored map of the maze and reaches center without discovering the maze.
This project tries to encompass several constraints, involved in building a successful maze solving robot.  The work involved in building a micromouse is divided into two categories: hardware comprising of electronic circuits and motors and software section where the code is written.  The hardware is responsible for perceiving the surrounding environment and moving of the robot inside the maze. The software, on the other hand, is responsible interpreting the maze, navigation the maze and sending control signal to various components of hardware subcomponents.
The hardware is again subdivided into 4 important components in a manageable size. The hardware component consists of: power, sensors, actuators and microcontroller. The power system is the essential part as it contains a set of batteries and voltage regulators. The sensors are the means through which the Micromouse detects walls and traverses the maze. The actuator includes the motors and motor controllers which produce the motion for the robot. Finally the microcontroller is responsible for controlling each of the component and process a robust control unit.
In the software section, the development of algorithms for solving a maze and finding the center of the maze takes place. The following algorithms are evaluated wall following, flood fill algorithm and modified flood fill algorithm. The wall following algorithm is a trivial algorithm that is usually unsuccessful in finding the center of the maze. Flood fill algorithm is an intuitive algorithm that sometimes tries to be ineffective due to wastage of time in searching the entire maze. As such modified flood fill algorithm, is very robust and has many variations in best searching techniques.



1.1  Concept of Micromouse
In the late 70’s, the IEEE spectrum came up with the idea of designing a small microprocessor controlled intelligent vehicle imbibed with the capability to decipher and navigate complex mazes. In May 1977, this led to the very first US Amazing Micromouse Maze Contest to be held in June 1979, New York. Though there were over 6000 entries, only few of them were able to compete in the actual competition. This competition led to the invention of many path planning algorithms, but the most important factor was the construction of a robust micromouse robot.
       Intelligent  robots have wide reaching applications; from pipeline inspection to finding humans in  
       wreckage to automation. Major problems facing designers are power and reliable sensing
      mechanism and unfamiliar terrain robotic competitions have inspired engineers for many
      years. Competitions are held all around the world based on autonomous robots. One of the
      competitions with the richest history is micro mouse . The micromouse competitions have
      existed for almost 30 years in the United States and it has changed little since its inception.
      The goal of the contest is simple. The robot must navigate from a corner to the center as
      quickly as possible. The actual final score of the robot is primarily a function of the total time
      in the maze and the time of the fastest run. The Design incorporates various techniques to
      simplify the approach and make an
efficient automated robot.

A micromouse is “a small autonomous microcontroller controlled vehicle with intelligence and capability to navigate a complicated maze and decipher it”. The major task for a micromouse is to work out the configuration of the maze that is unknown prior to the competition. This is typically achieved by micromouse exploring the maze, that is, micromouse running around in the maze and trying all possible paths to map out the entire maze. To human observers, this method is obviously inefficient because we can see the configuration of the maze (maze is topless).




1.2  Micromouse maze
The figure below shows an example of how maze looks like. It involves the start position, from where the robot starts and the goal which is represented here as destination state. This maze is an example of a 5x5 maze. The outer green walls are fixed walls for every maze and the inner walls of a maze vary according to different configurations one needs. The destination state is usually the center of the maze and sometimes this can also be the top-right corner of the maze.
                                                         Figure 1.1 Maze with start and destination






The above figure shows the maze specification used for a building a maze. The maze is made of 16x16 squares. Small square posts at the four corners of each unit square are called lattice points. The sides of the maze walls are white, the top of the maze walls is red and the floor of the maze is black. The maze is topless and outside wall encloses the entire maze.

1.3  Fundamental Approach to the Problems
The fundamental approach to solving a micromouse maze is building a map of the wall as the micromouse robot wanders in the maze. The sensors position on left, right and center of the robot helps in ascertaining whether a wall is present on the left, on the right or in front of it. As the robot keeps moving from one cell of the maze to another cell of the maze, it makes use of its sensors and keeps building a map. As it starts building a map, it keeps calculating its distance to the goal of the maze.

One simple approach to solve a mouse is to just follow one of the walls, this algorithm called as Wall following algorithm as it tries to follow either left or right wall constantly until it reaches the center of the maze. This algorithm is very trivial as it is very difficult to reach the center of the maze by this approach. For this algorithm there are again two approaches one is the left wall following approach and the other is the right wall following approach. Below figures gives you a rough understanding of this algorithm.



But this kind of approach is very trivial and it always fail to reach the destination of the maze. With advancement in technology and in processing power of microcontrollers, there has been recent advancement which helps in developing more complex algorithms, that will not only help in reaching the center of the maze but also helps in reaching the goal state quickly.

1.4   Significance of the Project
This project is an attempt to give a build a very robust yet complex maze solving robot. Though the problem is very simple, it is relatively difficult for the robot to create a perfect map due to lack of reliable sensors.  The significance of the project is that research in the field of robotics has a variety of far-reading social implications, including advancements in biomedical engineering ( eg., miniature robots used to perform medical tests or aid in surgery),automation of tasks unsuitable for human beings, rescue operations, domestic applications, etc.



















Chapter 3

Hardware

The hardware involved in building a micromouse is composed of 4 subsystems: Power, Sensors, Control and Locomotion, these four subsystems are termed as Power Supply, Sensors, Microcontroller Unit and Actuator/ Wheels. Each of the aforementioned subsystems will undergo analysis and design. Though it appears that each of these systems appears to be independent, they are in fact much intertwined. The power supply acts as a back bone for the system as it supplies enough power for all other subsystems to work efficiently. The sensors acts as an input to the system, the readings from the sensors are read as analog values and sent to microcontroller which acts as the brain of the system. These readings are then used by maze solving algorithm to give a digital command as outputs which makes the motors/wheels to rotate in one of the directions.  Hence though each of the subsystem remains independent from each other they are very much connected to become a major system.





3.1 Power:
The power system of a robot is the critical part of its overall design. In simple terms, this is needed for the robot to run. Therefore, the power system must include a power source that stores energy for the robot to run for a predetermined time period without having to be replaced or recharged. A power system must also be provided a constant voltage through a voltage regulation scheme in order to ensure proper operation of all circuitry and components. All micromouse robots consume electric power supplied by self-contained batteries. Although other sources of electric power do exist, batteries are currently the most practical option.

There are different types of batteries available in the market, but with such a large variety for use, it is important to consider a battery with the following list of properties:
·         Voltage – Single cells of each battery type are rated to supply a different nominal voltage. However, the actual voltage outputted from a cell may vary from the rated value depending on its state of charge and discharge. Most of the batteries are considered dead when their output reaches around 80 percent of its rated value.
·         Capacity – Battery capacity, typically rated in amp-hours (AH) or milliamp-hours (mAH) is the amount of power that the battery can deliver in a specified period of time. The term “amp-hour” indicates that the battery can provide the rated current for one hour before falling. For example, a battery with a rating of 5 AH implies that it can continuously provide up to five amps of current for one hour.
·         Internal Resistance – All batteries have an internal resistance that acts as a current limiter, limiting both  maximum output current as well as the maximum discharge rate. Batteries with lower resistances are able to higher surge currents that may be necessary for certain applications. A battery with a lower internal resistance will be able to provide more power in a specified interval of time than one with a higher internal resistance.
·         Energy Density – Energy density is a property that specifies the maximum amount of energy per unit mass stored in a particular battery type. This value is usually expressed in either watt-hours per kilogram (Wh/kg) or joules per kilogram (J/kg).
·         Recharge ability – A battery that cannot be recharged is  known as a primary battery, while one that can is known as secondary battery. Rechargeability is an important property for batteries in a mobile robot because non-rechargeable batteries, although initially less costly are both expensive and inconvenient to replace over time. Each rechargeable battery type has a different number of allowable charge/discharge cycles. Most batteries are recharged very slowly, over a 12-24hour period, because a recharge interval of 2 to 10 times the discharge rate is recommended.

As previously stated, there are hundreds of different battery types in use today.  But it is narrowed vastly to fit all these possibilities. Micromouse in relation to the battery properties discussed above as well as other practical considerations includes dependence and cost.  The most of power consumption in the Micromouse results from the motors. The IC chips selected for the project require far less voltage and current in comparison. As such, we choose a battery that meets the power needs of the motors and include an additional margin of error for safety. Hence we use a step up voltage regulator, which perfectly suits our needs. In the figure below, you can see the circuit that has been used for a step up voltage regulator along with the components we used.

3.2 Motors
The movement mechanism of a mobile robot is known as its drive train. The motors and motor controllers constitute the most important part of the robot drive train.  The process of choosing a motor for a robot is a significant undertaking because the motor ultimately selected has an impact on many other aspect of the robot.  Motors comprise the largest and bulkiest components of the robot, and their power requirement usually dictate the design of the power system.
There are three basic types of electric motors commonly found in robots, which we discussed below:
·         Continuous DC Motor – A
·         Servo Motor –
·         Stepper Motor –
To compare the three types of electric motors, we discuss the relative advantage  and disadvantage of each with respect to the Micromouse. First of all, there is an immense variety of commercial available continuous DC motors and it would not be too difficult to find one that closely meets the size and weight requirements of the Micromouse.  However, the significant drawback to DC motors is the fact that they require gearing. Even though this is very inconvenient in building a micromouse robot, we use this due to cost factor and lack of power involved and to ensure there is enough torque required for the robot. The figure below presents the Tamiya motor we have used for our project. We choose this motor due the torque to speed ratio. As the motors we need to build a micromouse not only need speed to move forward but also need torque to sustain weight of other hardware materials we choose this motor.
The specifications of this motor are, 1.5v constant input voltage at a max stall current of 2.2 amp and running current of 0.6 amp. The max output speed of this motor is 6990 rotations per minute and torque is 26gm-cm.
Since the microcontroller that would be used for the project does not provide enough current for the motor to run at desired torque and speed only 40ma as per the desired current of .6 amp, there is a requirement of amplifier to be used to make the motor run at desired speed. To amplify the current, a motor driver L293d is used which amplifies the current when given a low signal and hence provides required output current for the motor to run at required speed. Another important factor provided by motor driver is the protection of reverse current from the motors, since these motor drivers have a protection diodes built inside them, they help in protecting the current going in reverse direction from motor to the microcontroller and helps in protecting the microcontroller from damaging.
3.3 Sensors
Sensors give a robot the means to perceive its environment. The robot processes the information received from its sensors and reacts in a predetermined manner according to the design of its control system.  For our project,  the robot needs to sense the surrounding walls of the maze in order to keep track of possible routes to the center as well as dead ends, and to keep itself aligned in the center of a pathway.
To achieve its goal of traveling to the center of the maze, the Micromouse may require the sense of sight and/or tough, depending on the sensor technology used. Infrared (IR) sensors are a type of light sensor, ultrasonic or sonar sensors are a type of sound sensor and touch or bump sensors are a type of pressure sensor.  Light and sound sensors may give either proximity or distance detection. Proximity sensors only detect whether or not an object is within a predetermined range from the robot, while distance sensors determine the actual distance between the object and the robot. For our project we will be using a IR sensor instead of Sonar Sensor.
An infrared sensor consists of an infrared transmitter that sends out an invisible beam of light into the environment and an infrared receiver that absorbs the beam of light that is reflected back. The angle of the reflected beam indicates the proximity of the infrared receiver to the object that is reflecting the light. The microprocessor of the robot uses the changes in angle to measure the distance of the robot from the object ahead. For our project we need sensors which can look in the front, left and right directions. For this purpose we choose three sensors (GPD12 IR sensors) one positioned on left at an angle of 45 degree, one at right at an angle of 45 degree and one looking forward. This arrangement helps the robot sense the environment in all three directions.  The front black square boxes are GPD12 IR sensors.
3.4 Microcontroller (Brain of our robot)
To create a good robust micromouse robot, we need a good microcontroller/microprocessor which has good RAM/Memory and faster processing speed of signals. The initial thoughts for the microcontroller suitable for this project were MSP430, Atmega32 and PIC microcontroller. Though there are several other microcontrollers available in the market, we cut down on those microcontrollers whose memory and processing speed were suitable to our needs. 
As the project aims to solve a 6x6 maze, we would require at least 72 bytes of RAM to store the wall map and another 145 bytes of memory to store wall information and 100 bytes of RAM for stack which is used during the run for buffering stage. Under all these conditions we choose Atmega32 microcontroller which is very reliable in its memory and processing speed. It has also been considered as cost effective in terms of other microcontroller.  As the aim of the project was not to rebuild hardware but to use the existing hardware for our project, we decided to use the Arduino UNO development board which has atmega32 micrcontroller board on it and perfectly suits our needs in terms of programming it and processing speed. The figure below shows how arduino uno looks like.  
    The Arduino Uno is a microcontroller board based on the ATmega328. It has 14 digital    
input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz        crystal oscillator, a USB connection, a power jack, an ICSP header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with an AC-to-DC adapter or battery to get started.
There are 14 digital pins on the Uno which can be used an input or output. They operate at 5volts. Each pin can provide or receive a maximum of 40 ma and internal pull up resistors of 20-50 kohms. In addition these pins are also connected to serial(rx and tx pins) of the microcontroller to help in communication and it has 6 pwm pins that provides us with 8 bit PWM values. The arduino has various ways of communicating with computer or other external interfaces. The atmega328 provides UART serial communication which is available on digital pins 0 (rx) and 1 (tx). An atmega16 on the board channels this serial communication over US and appears as virtual com port to software on the computer. The atmega16 firmware uses the standard USB com drivers and no other external driver is needed.  
Programming arduino Uno is the easiest part of the project because of the arduino bootloader installed on the atmega328 microcontroller. All arduino boards comes preloaded with arduino bootloader and helps creates a direct communication between microcontroller and PC. There are only two steps involved when dumping the program on to the microcontroller, after the program has been written, the program is supposed to compile to check for any errors in the program. Once the compiler has compiled with no errors, the code is sent serially over the USB cable on to the microcontroller, hence making the compiling and dumping of the code easy.
The final electronics hardware setup along with sensors, motor drivers is shown below. The motor driver acts as an amplifier to give enough power for the motor to run. The enable pins of the motor driver are connected to PWM pins of arduino uno board as they help in controlling the speed of the motors. A value of 255 to pwm signal means max power and 0 means no power at all. The input pins of the motor driver are connected to pins to digital output pins of the arduino. These output pins of the arduino help in controlling the direction of the rotation of the motors.  The 3 IR sensors are connected to analog pins 0,1,2, these analog readings help us in determining the obstacles in the vicinity of the robot. A reading of 255 indicates the robot is very close to the wall and a reading of  0 indicates that there is no obstacle in front of it.


3.5 Chassis
The chassis is the central part of our hardware, as it holds all the other hardware components and provides a stable framework. The goal when designing chassis is to make it as lightweight as possible while also making it durable and rigid. Another important factor we need when designing a micromouse is achieving stability during the robots motion, which is achieved by maintaining the center of mass of the robot as low as possible and as close as possible to its center of gravity. Our chassis is made of polyvinyl chloride (PVC) plastic because it has a good weight to strength ratio. Below  is the final setup showing our chassis mounted with motors, sensors and  arduino.
In the figure below you can see the complete setup including sensors, motors and our arduino board over the top of it. The front wheel, known as castor is used to provide stability just like a tri-cycle. The wheels are made of plastic rubber to give us a smooth rotation.











Chapter 4
Software
The primary purpose of the software is to maintain control over the hardware at all times and determine where to move by solving the maze. Controlling the hardware consists of reading sensors, setting the motor speed and communicating with any external peripherals. In addition to controlling the hardware, the software must also keep track of the current position within the maze and determine where to move based on our maze solving algorithm. The flowchart of the software section is show below.

Initialize Maze
Read Sensors
Update Wall map according to maze solving algorithm
according to
Determine Robots Next Move
Move the robot
Initialize Hardware
 















4.1 Maze Solving Algorithms
The principle goal of the Micromouse is to solve the maze and find its center as quickly as possible. To accomplish this task, the micromouse uses a particular maze searching algorithm, out of several maze solving algorithm.
With a vast amount of advancement in complex search algorithms, researchers in the field of graph theory and topology have been studying maze creations and maze solving algorithms from several centuries. However most of the algorithms are not feasible for micromouse, because of the limitations posed by microcontrollers. Moreover, since maze searching algorithms are nothing but searching relevant data through maze, researchers have tried to optimize search algorithms to work for microcontrollers with limited data and processing speed.  Again, as most of the algorithms are highly effective and efficient for computers built with sophisticated micro-processing unit , we try to use variations of these algorithms. As a result, Micromouse robots usually three basic search algorithms, wall following algorithms, flood fill algorithms, modified flood fill algorithm.
Wall following algorithm is the most simplest of the algorithms, and the most trivial as its not optimized to always find a solution. In wall following algorithm, the robot either follows left or right maze and tries to find the center of the maze. Though this algorithm is simple, it is inefficient  and not useful. The figure below is an example of the path the robot would be moving.
        A flood fill algorithm, also known as bell man’s algorithm is a simple yet sophisticated algorithm for        solving a micromouse.  The algorithm makes use of the robots distance to the center of maze and the wall information of the maze to redefine a smaller path to the center of the maze. Since we already know the size of the maze, in our case  a 6x6 maze the map is flooded with distance values from the center of the maze to the robot. Once values/distances are assigned for each cell of the maze, we make use of this information the wall map that is stored during the mouse run.  At each cell, the micromouse performs the following actions in each cell:
1)      Check for new walls and update the wall map.
2)      Re flood the  maze  with new distance values and update the distance array.
3)      Move to the neighboring cell with lowest distance value.
Flood fill algorithm, is nothing but breadth first search algorithm, if the maze is thought to be a spanning tree, and an entire level is searched before going to the next level. The advantage of this algorithm is it always tries to find the shortest path towards the center of the maze, but at the expense of memory.

4.2 Modified Flood Fill Algorithm
Though flood fill algorithm is efficient in finding the center of the maze, some times it fails because of complex maze. For such purpose there have been several modifications of flood fill algorithms and modified flood fill algorithms is one of them which is completely derived from them. In modified flood fill algorithms, the cell values in the maze are changed/ re-flooded every time flood fill algorithm fails. This method is considerably faster than rgular flood fill because the entire maze does not need to be updated each time the micromouse moves to a new cell. The following diagrams are a pictorial representation of modified flood fill algorithm.




1)      This is a smaller version of the maze, size 5x5 for illustration purpose.
Our start cell is at bottom right and the destination is the center cell.
 As we do not have a prior information, we give the goal cell as a value
 of zero, and all other cells at a distance of 1 unit from goal cell as 1
and cells at a distance of two units from goal cell as a value of 2
and so on and so forth.
2)      The micromouse starts to follow the lowest distance number path ie from a value of 4 it goes to a value of 3 and then it goes to a value of 2 and finds itself a wall to its east. But it now finds its neighboring cell values higher than current value and hence increases its current cell value to 1 + neighboring cell value ie it makes its cell value 4.
3)      The micromouse moves forward once again, and finds another wall to the east and updates the wall map. It also reflood the distance array with new values.

4)      The micromouse continues exploring up to the top left corner, updates the wall map and distance information as required and then follows the lowest distance path towards the center of the maze.
5)      In order to update the values, the distance array is changed as shown below.
6)      The shortest path has now been discovered, the micromouse must simply follow the number sequence in descending order from the start to the center of the maze.






Chapter 5
Testing and Evaluation
The final phase of the work is the testing and evaluation of our algorithm on the hardware developed. To first test the feasibility of the algorithm, the maze solving algorithm was written in Microsoft visual studio 2010 C++ software. A dummy was given as input to the maze and the results obtained were the path the robot would have to follow to reach the goal. The code was written within 500 lines and with an array size of 200, so as to not exceed the memory capacity of the microcontroller.  
The results were shown on command window, which tells the path the robot should take to reach the center of the maze. A sample maze of 6x6 size unit was selected with destination center being at cell 15.
Below figure shows the sample maze and the simulation results.
  
The figure in black shows the maze in command window developed by us, the maze is rotated by 180 degree for ease in understanding. “S” in figure stands for start and “G” stands for goal or destination cell. The simulation results of maze solving algorithm is shown below, it provides us with the action the micromouse should take at each cell. Along with next direction the micromouse should take, the position of the micromouse inside the maze is also known which helps in debugging with complex mazes. The screen shot below is of the results produced in command window
This same algorithm was tested in real time on the hardware developed for the project.









Chapter 6
Conclusion
6.1 Summary
This project has been an incredible guide for me and has given a new learning experience. Though the task was daunting at first, the challenges were met quiet diligently. The simulation results produced were very significant and the real time testing was little difficult. The sensors at times caused problems in giving significant results and hence were not able to detect the obstacles in front of them. The lightning conditions also caused few problems, as the IR sensors were prone to lightning conditions. Since the robot required to know in which cell it is, it is required to count the number of rotations required by the wheel to move from one cell to another cell, this requires an encoder inserted on to the wheel of the robot. Since the encoder was missing in our motors, a timer was used to determine the precise movement of the robot from one cell to another cell.  Due to this missing encoder, the robot moved a head of the cell sometimes, due to slippage of wheels and less surface tension, which gave wrong readings.
6.2 Future Work
More investigation has to be done in the following areas:
·         Though the maze solving algorithm was consistent enough in solving various types of maze’s, the memory required by this algorithm is very large and processing power required by microprocessors is very large for this algorithm, hence the need of more complex algorithms is required.
·         The motors used here were not having encoders hence not providing us with any feedback information from motors rotation, hence not accounting for wheel slippage and friction. This causes the motor to enter a little ahead of the center of the cell than desired, causing errors for solving the maze.
·         A better need for sensors is required, as the sensors were prone to lightning condition. A high quality sensor should be tested and also the feasibility of sonar sensors have to be tested.

References
  1. Micromouse: Maze solving algorithm: http://madan.wordpress.com/2006/07/24/micromouse-maze-solving-algorithm/, July 24, 2006.
  2. hazzer123, Micromouse - Maze Solver: http://www.societyofrobots.com/member_tutorials/node/93, February 28, 2008.
  3. PIC-Programmer 2 for PIC16C84: http://www.jdm.homepage.dk/newpics.htm, February 3, 2000.
  4. Micromouse - Maze Solver - Theory: http://www.societyofrobots.com/member_tutorials/book/export/html/94
  5. Miguel A. Vallejo, JDM programmer: http://ea4eoz.ure.es/jdmeoz.html
  6. IEEE-MCR, “Micromouse Competition Rules”, http://www.ieee.uc.edu/main/files/sac2007/mm_rules.pdf, January 25, 2007
7.      [Freeman & Davis, 1977] Freeman, H., and Davis, L. S., A Corner-finding Algorithm
            for Chain-coded Curves, IEEE Trans. Comput. 26, pp. 297-303, 1977.

8.      [Fu, 1987] Fu, K. S., Genzalez, R. C., and Lee, C. S. C., Robotics: Control, Sensing,
Vision and Intelligence, 2nd ed., Sydney: McGraw-Hill, pp. 307-325, 1987.
9.        Heiserman, David. How to Design and Build Your Own Custom Robot. Blue Ridge
10.   “History”. Micromouse@tic. http://www.tic.ac.uk/micromouse/. 05 September 2004
11.   McComb Gordon. The Robot Builder’s Bonanza. New York: McGraw-Hill, 2001