Rutgers IEEE competed at the 2019 Princeton Micromouse Competition and won the design competition and came in third in the maze solving competition. Congratulations to Joe Jaeschke and Nicholas Clegg for this achievement ! Joe and Nick wrote the following to detail their design.

Micromouse is a robotics competition where a robot is designed to navigate a 16x16 square maze and solve it by starting in a corner and reaching the center of the maze. There are many challenges with solving this problem, like how a robot does not tend to drive perfectly straight and like to crash into walls, getting a robot to rotate at precise angles when it reaches a turn in the maze, and building a robot that can do all of this and still fit within 20cmx20cmx20cm cube. In order to solve these problems, we implemented a feedback loop controller called a PID controller that helped us take care of these real world problems. How this controller works is it looks at sensor data from the robot and compared the value it should be and the value that it currently is. Then if there is a difference in these values, it will change the speed of the motors of the robot in order for the robot to take on the proper trajectory. For example, if we want a robot to drive in a straight line, then we can use a sensor called a motor encoder to read the current rotation of one of the motors, and if the motor has rotated more than it is supposed to, then we can slow down the speed of that motor. A PID controller was used so our robot could drive in a straight line, and so it could rotate correctly in the maze. In order to to have a robot that could fit within the size requirements of the maze, we took advantage of 3D printing to create parts that would allow all of our components to fit snugly in one package. Another challenge we faced with this competition was how to guide our robot so it would eventually reach the center of the maze. In order to accomplish this task an algorithm called flood-fill was used. The algorithm works by initially assuming there are no walls in the maze and assigning each square a value. The middle four squares of the maze are the goal and are assigned a value of zero. Then each square reachable in one movement of the robot gets a value of one, each square reachable in two movements gets a value of two and so on. Then all the robot needs to do is to transition to the neighboring square with the least value. However as the robot moves it will sense walls. With these added walls, some of the values will no longer be accurate and will need updating. The rule for this update is that every square is one more than the minimum of the neighbors. After updating the values of the neighbors, the robot can then move to the least valued neighbor. This process will continue until the robot reaches the goal. The path taken will not necessarily be the shortest path but it is a path that allows the robot to be in the maze the least amount of time. In order for the shortest path to be found, the entire maze would have to be known. To know the entire maze the robot would have to visit every square. Since the robot does not move perfectly straight or turn perfectly, the more it moves there is more error in its movement. Even with the strategies noted in the previous paragraph, it is best to spend as little as time possible searching for the center which is what the flood-fill algorithm accomplishes.

Another challenge we faced with this competition was how to guide our robot so it would

eventually reach the center of the maze. In order to accomplish this task an algorithm called

flood-fill was used. The algorithm works by initially assuming there are no walls in the maze and

assigning each square a value. The middle four squares of the maze are the goal and are

assigned a value of zero. Then each square reachable in one movement of the robot gets a

value of one, each square reachable in two movements gets a value of two and so on. Then all

the robot needs to do is to transition to the neighboring square with the least value. However as

the robot moves it will sense walls. With these added walls, some of the values will no longer

be accurate and will need updating. The rule for this update is that every square is one more

than the minimum of the neighbors. After updating the values of the neighbors, the robot can

then move to the least valued neighbor. This process will continue until the robot reaches the

goal. The path taken will not necessarily be the shortest path but it is a path that allows the

robot to be in the maze the least amount of time. In order for the shortest path to be found, the

entire maze would have to be known. To know the entire maze the robot would have to visit

every square. Since the robot does not move perfectly straight or turn perfectly, the more it

moves there is more error in its movement. Even with the strategies noted in the previous

paragraph, it is best to spend as little as time possible searching for the center which is what the

flood-fill algorithm accomplishes.