Contents

THIS ASSIGNMENT IS NOT COMPLETE YET, READ AT YOUR OWN RISK!!

Assignment 3: "Where am I"

In this assignment, you will use the Roomba model robot to perform simultaneous location and mapping (SLAM). Your robot will be placed in a random location in the world, and needs to construct a map of the world. The robot does not know it's location or orientation.

In the first part of the problem, you will generate a map using dead-reckoning. In the second part, you will generate a map using an odometer-based technique. In the optional extra credit, you will combine measurements from these techniques to make a more accurate map.

Configuration Files

The configuration files are provided INSERT TARBALL LINK.

Inside there is a client skeleton files which you are welcome to use or not use. There is also a script to generate the .cfg file. Please not that it will place the robot in a different starting location each time. I will run this script before I test your robot, so you cannot assume that your robot will start in any particular location.

Additional Requirements

You may not hard code turns or rely on anything particular to the provided map. If your robot were to run on a map with the landmarks in a different location it should still work.

In the dead-reckoning portion, you may not use getX(), getY(), getYaw(), getData(), or getGeom() in the Position2DInterface class. If you find some other functions that report the robots location or orientation, you can't use them either.

If you are not sure about the above requirements, feel free to email the TA.

Extra Credit

Combine the estimates from both the dead-reckoning and the odometer-based approaches in some reasonable way to create a map. In order to get points for this part, your README file must describe the data fusion technique you used.

Submission

Submit a tarball of your robot client code using Bb Vista. The tarball should contain a README file with any necessary build instructions or peculiarities of your program.

If something does not work properly or is incomplete, you must say so in the README.