Introduction

This assignment involves implementing a ROS package for Monte Carlo localization. The completed code should be (more or less) a drop-in replacement for the default ROS localization package.

Part 1 - Toy Particle Filter

Complete the unfinished methods in particle_demo.py. You should be able to use the completed script to re-calculate approximate answers for the grid-based localization question from HW2.

You may also test the correctness of your methods by running the tests in tests.py.

Submit your completed file through Web-CAT.

Part 2 - Monte-Carlo Localization

I am providing a partial implementation, including a fully-functional Particle class. You should get started by cloning the appropriate github repository.

The package is organized as follows:

particle_filter/
    package.xml
    CMakeLists.txt
    launch/
        all_but_localization.launch <- launches simulator etc.
        everything.launch           <- launches everything (except teleop.)
    worlds/
        bricks.world             <- Gazebo simulation world for testing. 
    rviz/
        mc_localization.rviz     <- Rviz configuration file.
    maps/
        bricks_map.yaml          <- Pre-made map of bricks.world
        bricks_map.pgm
    scripts/
        map_utils.py     
        mcl_tf.py        
        particle.py
        mc_localizer.py          <- UNFINISHED
The four Python files in the scripts folder serve the following roles: