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.
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
- Micromouse: Maze solving algorithm: http://madan.wordpress.com/2006/07/24/micromouse-maze-solving-algorithm/, July 24, 2006.
- hazzer123, Micromouse - Maze Solver: http://www.societyofrobots.com/member_tutorials/node/93, February 28, 2008.
- PIC-Programmer 2 for PIC16C84: http://www.jdm.homepage.dk/newpics.htm, February 3, 2000.
- Micromouse - Maze Solver - Theory: http://www.societyofrobots.com/member_tutorials/book/export/html/94
- Miguel A. Vallejo, JDM programmer: http://ea4eoz.ure.es/jdmeoz.html
- 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