# Optional Final Project: Escape Roomba

## Project Overview

A Roomba is powered on one morning and knows it has a busy day ahead of it. A party the previous night has left quite a mess to clean up in an adjacent room. Plus, there’s a bigger issue: the robot knows which room it’s in (and the layout of the room), but it initially has no idea where it is in the room. With no knowledge of its current location, navigating out of the room seems like an impossible task. Luckily, the robot isn’t totally blind, as it’s equipped with sensors that inform it when it contacts the surrounding walls. The Roomba decides it can use these sensors to figure out its current location, but it has to be careful — collisions with the wall are potentially damaging and one wrong move could cause the robot to take a lethal tumble down an adjoining staircase.

Thus, the Roomba must balance the need to collect information about its current position against the goal of safely and efficiently navigating its way out of the room. Your task will be to use the knowledge you’ve gained in AA228/CS238 to help the robot make a successful escape.

Depiction of the Roomba environment. The exit from the room is shown in green and the staircase is shown in red.

The video below shows an example policy that enables the Roomba to successfully navigate its way out of the room.

An example video showing the robot first localizing itself using its bump sensors, then navigating safely to the goal.

## Installation and Getting Started

Visit the project GitHub page to download the code, view installation instructions, and find documentation. The code repository contains a file named lidar_roomba.ipynb, which is a Jupyter notebook that walks through an example of how to define, simulate, and evaluate a policy for a different, yet related, problem.

The code may occasionally need to be updated during the quarter. To avoid conflicts when updates occur, please do not modify any of the scripts we provide to you — any functions you write yourself should be defined in separate scripts. Below, we will keep a running list of dates when the code has been updated. If you have not downloaded a new copy of the code since the last date on the list, please do so.

#### Dates when code has been updated

• October 4
• October 9
• October 21 – The README was updated to include more thorough installation instructions. No changes were made to the code.
• October 24
• October 26
• November 12
• November 15
• December 3

## Deliverables

A description of what we require for the various deliverables is outlined in the following sections.

### Proposal

In your proposal, state that you plan to work on the optional final project. No further information is required at this time.

### Status Update

At this point in the quarter, you should be familiar with the code base and be comfortable interfacing with it. You should be capable of running all of the code in lidar_roomba.ipynb without error and should understand what each function call does. Furthermore, you should have a baseline policy implemented for the bump sensor environment, and should propose and implement an evaluation metric to quantify the performance of that policy. Finally, you should outline in the status update which techniques you plan to implement during the remainder of the quarter in order to solve the problem. These techniques could include POMDP methods (see POMDPs.jl), reinforcement learning, or classical control approaches.

### Final Report

The requirements for the final report are the same as those outlined on the Final Project page. We expect that each group will put in an appropriate amount of work given the group size and number of units. This could mean implementing and comparing multiple existing approaches, proposing a novel extension to an existing method, and/or modifying the simulation environment to make the problem more challenging.

We will be updating this section throughout the quarter as we receive questions. Please check here before posting on Piazza. If you do not see your question answered here, please post your question within the optional_final_project folder on the course Piazza page.