Today's Goal: A roomba uses simple behaviors to move about a room, until it bumps something, and then it adapts and starts again. Its goal is to achieve "coverage" of a bounded area without knowing exactly what the space looks like and without using complex sensors. You will program your robot to do a similar behavior, using the motion primitives and bumper sensors you learned in lab 1.
Create your assignment repository
A basic behavior would be to program the Turtlebot to move straight until it bumps something. When it bumps something, then it turns in a random direction for a random angle. If the bumper is no longer pressed, then it can move straight again, or if it is still obstructed turn randomly again.
A more complex behavior might be to use the bumper values (left, right, center) to turn smartly. Or to have the robot's default behavior not be straight lines, but moving as a zigzag for lawnmower like coverage.
In any case, the robot should move across as much of the room as possible, and not get permanently stuck in loops or corners or on obstacles.
Note: Please use a maximum linear speed of 0.3 m/s. Also, you should ignore the cliff and wheel drop sensors for now.
The Test: We will set up a large rectangular boundary area with obstacles (likely 6x10 feet, with a few solid boxes for obstacles) and "dirt" (small pieces of paper) distributed uniformly over the area. The coverage test will be to see how much dirt is cleaned by your robot within a fixed amount of time (3 minutes).
Grading Scheme (5 Points): 4 points for good behavior (e.g. moving around and exploring the area, not getting stuck too long at obstacles or walls); 1 point for readable code, +1 bonus point for team that achieves the best coverage. You will submit your code to the TFs using git as described in Lab1.