|
A Better Mouse Trap? A Better
Mouse?
By James Esteves
I want to tell you about the most challenging and rewarding
course I have ever taken here at Davis:
EEC 194 - The MicroMouse Robotics Project. A micromouse is a fully
autonomous maze solving robot. The fun part is that it can solve it
without knowing the configuration of the maze beforehand.
EEC 194 is a year long class that is worth five units and counts as a
design elective for electrical and computer engineering majors. It also
counts as elective credit for mechanical engineering and computer science
majors. Grading is deferred until the last quarter. A team of four to five
students are assigned different systems of the robot to work on.
Every year the Institute of Electrical and Electronics Engineers (IEEE)
holds MicroMouse contests where you can win prizes and money if your mouse
solves a maze in the fastest time. The local IEEE chapter holds a
MicroMouse competition on Picnic Day every year where mice from UC Davis
and other schools can compete.
A MicroMouse usually consists of three main subsystems: a control
system (the brains), a sensor array (the eyes) and a drive system (the
legs, if you will.)
Electrical:
The MicroMouse’ brain is usually a embedded microcontroller/computer
that can be programmed in a high level language like C or C++. The
microcontroller takes input from the sensors to map out the maze and store
it in its memory. It is also responsible for outputting control signals
for the motors so that the micromouse moves in the maze without hitting
the walls.
Circuits:
Your team will need to design a sensor circuit that will convert the
analog signal from the sensors into digital form that a microcontroller
can work with. You also need to design motor drive circuitry that will
take signals from the microcontroller and convert them into signals that
will turn the wheels either forward or backward.
Computer Science:
The micromouse uses an algorithm to determine a path from the start of
the maze to the destination cells or, more simply, the "cheese."
To do this the robot uses a search algorithm. Most micromice use a variant
of Djikstra’s shortest path algorithm called FloodFill. I won’t give
details of the algorithm here (let me know if you want a detailed
explanation, I’ll gladly explain it for you), but the basic idea is that
as the micromouse explores more and more of the maze as it moves around it
will compute a more optimal (shortest) path to the cheese.
Mechanical Design:
The project calls for some mechanical design. Your team will have to
design a chassis that will hold everything together. You’ll need to
figure out where to place the motors, microcontroller, batteries, sensors
and wheels so that the dimensions of the mouse are within the IEEE
standard specifications for competition. You’ll also have to make sure
that the mass of the robot is distributed properly so that the robot doesn’t
tip over or wobble while it’s moving. Your team will need to select the
materials to build your chassis out of. It will help if you have a team
member that is a mechanical engineering major or has experience working
with machine shop tools.
Other Stuff:
Here’s some other stuff that I have learned by taking this class that
I cannot go in detail here because of space constraints: printed circuit
board schematic capture and layout, soldering, h-bridges, timer
interrupts, motion control, battery types and recharging circuits, stepper
motors, infra-red sensors, low-level programming and software debugging
(the real way, not by praying to the programming gods.)
Open Ended Project:
What makes the micromouse project fun is that it is very open-ended.
There is no one right way to design a micromouse. You are free to choose
whatever components you want to use in your design, which is very much
like how the design process works in the real world. Also like the real
world you’ll learn how to work in a team environment where it is
critical that each member does their task.
Sounds like a class you’re interested in? If you decide to take the
class be forewarned that you will need to spend a lot of time in the lab
testing out and debugging circuits and/or programming. It is definitely
hard work but when you get everything working...You’ll amaze yourself
with what you’ve just built — a robot that can think!
|