The three parts of this assignment basically amount to the Freshman Roomba Design Lab (Winter 2007). The purpose of this assignment is to familiarize you with controlling the Robot using a computer while introducing some basic algorithms for movement.
Roomba Challenge #1 is a set of "cattle chutes", i.e. a maze with 1 path and no detours. The maze requires the Roomba to make several turns to reach the end. The maze can be "short cut" for a faster time via some measurements and sensing.
Though the first maze is relatively easy, setting up the environment will provide that extra bit of frustration that puts it on par with the other mazes. The challenges you can hope to face are as such (maybe more?):
- Getting Roomba and your computer interacting
- Understanding how to communicate with Roomba via your computer
- Developing an algorithm/solution to solve the maze
- Implementing and testing the said algorithm
- Compensating for the error introduced by controlling a physical entity through digital means
While setting up and learning how to send Roomba commands is a pretty straightforward task (the only pitfalls will be troubleshooting situations), the task of designing a solution for the maze is a much more involved process. There are many ways to implement the same behavior, but some ways work better with the rest of your code. This is just the first maze, so creating an elegant algorithm is not yet necessary, but come later assignments (or even the second maze), you will have to make conscious decisions on what types of programming structures to use. The main concern here is the disparity between what your code does and how your Roomba acts. Your Roomba's strange behavior that deviates from what you perceive your algorithm to be can be attributed to external forces affecting the Roomba; this includes movement of the vehicle, friction, uncertainty in orientation, and, of course, human error. Programming and programming robots is different in this respect -- the environment is not ideal, the robot's shortcomings must be accounted for, and your code must compensate for the less than perfect conditions the surface while controlling a non-virtual entity.
The actual maze will be the hallway of University Commons. Below is a map of the hallway in University Crossings between room 147 and room 151. You will start at room 147 and follow the path indicated by the yellow arrows towards 151. You should avoid all of the colored squares in the hall. Each tile in the hallway is 1 sq. ft.
Implement a general maze exiting strategy (such as DFS/wall following) for the Roomba to exit a maze.
see Winter 2007 Challenge 2 for more information.
You will not be graded on the time it takes your Roomba to exit the maze, only that it succeeds in exiting the maze.
Have the Roomba sing a song.