Roomba is a localization POMDP problem. A robotic vacuum cleaner, also known as Roomba, finds itself in a familiar room but does not know its exact position. It then tries to locate itself with the observations it receives. Roomba can equip two types of sensors, Lidar or Bumper. With a Lidar sensor, the robot receives a noisy Lidar measurement indicating the distance to obstacles in the front. Equipped with a Bumper sensor, it can sense its collision.
An example video showing the robot first localizing itself using its bump sensors, then navigating safely to the goal. The Roomba's belief about where it may be located is represented by the blue regions, and is updated using a particle filter.
Run the following commands in Julia:
import POMDPs
POMDPs.add_registry()
using Pkg
Pkg.add(url="https://github.com/sisl/RoombaPOMDPs.git")
Run the escape_roomba.ipynb
jupyter notebook to become familiar with the Roomba environment. This will walk you through a step-by-step example of how to set up the environment, define a baseline policy, and evaluate the performance of the policy.
Next, familiarize yourself with the source code by examining the files in the src
directory. A brief description of the files is given below:
RoombaPOMDPs.jl
- defines the package module for this project and includes the necessary import and export statementsroomba_env.jl
- defines the environment as a POMDPs.jl MDP and POMDPenv_room.jl
- defines the environment room and rectangles used to define itline_segment_utils.jl
- functions for determining whether the Roomba's path interects with a line segment and struct defining line segmentsfiltering.jl
- specification of particle filters for the Roomba environments