PASE.html
The Official Online Newsletter of Pilipino Americans in Science and Engineering at UC Davis


 
 


Table of Contents

Spring Break Space Cadets

The Unsaid of Internships    

A Better Mouse Trap? A Better Mouse?

Let There Be PASE!

How Engineers Become Marketers

Credits


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!



A snapshot of James' MicroMouse

 

 

 

 

 

 

 

 

 

EEC 194 recommended prerequisites:

Electrical and Computer Engineering: EEC 172, EEC 180A

Computer Science: ECS 40 (C Programming), ECS 110 (Data Structures)

Mechanical: Statics, Dynamics and machine shop experience

Sample code:

if (prevdirection == NORTH)
{
   switch(direction)
   {
      case NORTH:
      {
         gostraight();
         Row++;
         break;
      }

      case WEST:
      {
         leftturn();
         gostraight();
         Col--;
         break;
      }

      case EAST:
      {
         rightturn();
         gostraight();
         Col++;
         break;
      }

      case SOUTH:
      {
         turnaround();
         gostraight();
         Row--;
         break;
      }

   }

}