Homework 5: particle filter

Due 5/2/2012 (Thursday).

This homework assignment is to use a particle filter to localize the position of the robot.

The position of the robot is not observed directly. However, there are two range beacons in the environment located at coordinates (2,0) and (5,0) (shown as the two circles in the figure). On each time step, the robot makes a noisy measurement of its distance to the *closest* beacon. Each measurement is corrupted by zero mean Gaussian noise with variance 0.25. For example, if the robot is located at (3,1), it will make a noisy distance measurement with a mean distance equal to 1.414 (the distance to the beacon at (2,0)).

The actions of the robot are as follows. On each time step, the robot chooses one of the four cardinal directions. The resulting displacement is a distance of 0.2 in that direction with Gaussian process noise with variance 0.2.

The actual path taken by the robot is a predefined path beginning at the point labeled "start" and ending in the position labeled "end". The robot follows this path by taking a series of fifteen moves (moving a distance of 0.2 on each time step). Estimation ends after 15 time steps.

Prior to the observation at time 1, the belief state is approximately uniform over the free space. You should use 200 particles in this assignment.

The programming should be done in MATLAB or Octave. Students may get access to MATLAB here. Alternatively, students may code in Python (using Numpy). If the student would rather code in a different language, please see Dr Platt.

Students should submit their homework via email to the TA in the form of a ZIP file that includes the following:

1. a PDF file containing 16 plots of the particle distribution (the prior distribution plus the distribution over each of the 15 time steps). The plots should show locations for all particles. The first plot should show the prior distribution (roughly uniform). The last plot should show the particle distribution after the update made on at the last via point.

2. A directory containing all source code for your project.

Notes and updates: