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.
The configuration files are provided here.
Inside there is a client skeleton files which you are welcome to use or not use. There is also a script, create_world.py, to generate the slam.world 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. It is possible that the script places your robot inside an obstacle. If that happens, just run it again.
- 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.
- The maps produced by your robot should be in some reasonably common image format such as XPM, PNG, JPEG, etc.
If you are not sure about the above requirements, feel free to email the TA.
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.
- 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.
- Quality of odometry-based map: up to 10 pts.
- Quality of dead-reckoning-based map: up to 10pts.
- Quality of data fusion techniques and map: up to 6 extra points.
TOTAL = 20 points + 6E.C.