Micromouse is an international competition designed to provide challenges in both the fields of electrical engineering and computer programming. The concept is simple: design a vehicle to drive around a maze and get to the center. However, once started, the project reveals many challenges that must be overcome. The source code for this project may be found here.
The Micromouse program that I participated in at UCLA's IEEE student chapter began with building a kit mouse. This mouse, referred to as the 'rat', is a through hole PCB that is pre-designed by the project leads. The only requirement is that we assemble this kit which requires us to solder the given components onto the board. Once complete, we were able to begin programming the rat to test code. This step was meant to give us the opportunity to both design our final mouse and write code for it simultaneously.
This step required each team to design their own PCB using Eagle or any other similar CAD software. First, we determined our parts order. These parts were selected based on what our team believed would both help with determining the vehicles position in the maze and maintaining direction when driving. To determine compatibility between all of these parts, we had to carefully read their datasheets and pass a design review. The specifications for the PCB were given by the fabrication facility where we ended up manufacturing our board. The final design went through about 4 revisions and went through two design reviews; the first for the schematic and the second for the board design.
This section of the project was as difficult if not more difficult than the PCB design. Hardware tuning proved to be exceptionally difficult as the gyroscope ceased to operate only a week or two after assembly as well as the IR receivers being over saturated. Alongside the process of tuning, the algorithm to solve the maze had to be implemented. The algorithm most commonly used, and for good reason, is flood fill. This algorithm, theoretically, solves the maze efficiently and quickly. However, the primary issue with the method is that the mouse must know at all times its exact position in the maze. The algorithm was completed, however, the mouse never reached the point where it had perfect position tracking so it was unable to use flood fill at competition.