Assignment 2: Robotic SLAM (Simultaneous Localization and Mapping)
Description of Assignment
Your Roomba will be placed in a random location in a rectangular arena of unknown dimension. The arena will have an unknown number of Roomba invisible walls (IR walls projecting a cone) pointing into the arena. Your Roomba must explore the arena and provide a map of the arena including an estimate of the dimensions of the arena, the location of the invisible walls, and an estimate of the number of invisible walls. In order to allow all students to get time in the arena, your Roomba must do this in 10 minutes, and your procedure must terminate.
Your source code will need to output the dimensions of the arena and have one of the TAs check this at the end of the execution (physically show the printout to the TA).
Your source code will also need to generate an xpm file (see  ) and a printout of the mapping from X and Y pixel dimensions to real world dimensions (e.g. each pixel represents an area of 6 inches by 6 inches) which must also be shown to the TA upon completion. The xpm file "wallmap.xpm" will contain your automated mapping of the arena, and will plot the locations of the invisible wall fields in the arena (display everywhere in the arena that your Roomba encountered the presence of an invisible wall). You should use white for the arena background and black for the locations of the invisible wall fields.
You should create a short writeup of this lab (2 pages at most) which details your strategies/algorithms/ideas for performing this lab, and references or other resources you used, any problems you encountered and how you overcame them. If you tried multiple different strategies before your final one then describe the progression of ideas, and why you gave up on earlier ideas. Your writeup should also include your estimate for how many invisible walls there were, the dimensions of the arena, and the scale of your xpm file and directionally mapping, basically everything you showed to the TA upon completion of your execution. Finally, include any conclusions that you have from this lab, analysis of your strategies and estimates of error would be appropriate here, along with anything else you feel is relevant.
Information about Roomba Virtual Walls
RoombaComm provides a method to access whether your Roomba can detect a virtual wall, which returns a boolean value. You must refresh the sensors before checking for a virtual wall.
The following information is from Dan Lofaro:
The Virtual Wall projects an IR cone because it is simply emitting IR light out from the IR LED. This light goes in all directions if there was nothing to block it. The intensity of the light is the same whenever you are a distance 'x' from the LED. this means that you can sweep an arc or radius 'x' in all directions, up down left and right, that has the same IR intensity on the given surface. the roomba's IR sensor picks up this signal and will trigger at a specific intensity. Thus the area that the roomba will pickup that there is a virtual wall looks like a cone.
Deliverables for this Assignment
- Have a TA watch your execution, the TA will place your Roomba in a random location
- The TA must see that your program terminates
- Upon termination, the TA must see that your program outputs the xpm file (and checks what it displays as your estimates for the invisible wall maps), the printout of the mapping between the xpms and real world dimensions, the printout of the dimensions of the arena, and the printout of the estimate for the number of invisible walls
- You must include a directional mapping of your bitmap file to the arena, see below for more information
- You must then turn in a writeup of the assignment, your source code, and your xpm file
- you may assume that your Roomba is facing one of the four walls if you want, please note this and any other assumptions in your report
Arena for this Assignment
This picture presents the dimensions of the arena, and the number and placement of the invisible walls for this assignment. You can use this info to construct a test arena and to estimate your error.
North and East are indicated on the arena picture, these are not real directions, just reference directions for this arena, with SouthWest in the corner with the virtual wall. You must indicate the mapping from your bitmap file of the arena to the arena directions using two directions. In other words, something like "in my bitmap file, left maps to west and up maps to north" or "in my bitmap file, left maps to north and up maps to east".