User Tools

Site Tools


projects:project1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:project1 [2015/10/15 17:34]
etimmons
projects:project1 [2016/10/05 09:04] (current)
aytonb [Dependencies (Students not Using VM)]
Line 1: Line 1:
 ====== Project 01: Path and Activity Planning ====== ====== Project 01: Path and Activity Planning ======
  
-  * **Released on:** 10/15 +  * **Released on:** 10/05 
-  * **Due on:** __11/06 (by midnight)__+  * **Due on:** __10/26 (by 11:59 PM)__
  
 There are three objectives for this project: There are three objectives for this project:
Line 15: Line 15:
  
 <​code>​ <​code>​
 +sudo update_intro_to_autonomy
 cd /etc/chef cd /etc/chef
-sudo git fetch 
 sudo git checkout 16.413 sudo git checkout 16.413
 sudo apt-get update sudo apt-get update
 +sudo update_intro_to_autonomy
 +# This update ^ will probably take a much longer time than normal. If it fails, try it one more time before posting a question.
 </​code>​ </​code>​
- 
-After this, run ''​sudo update_intro_to_autonomy''​ as usual. This update will probably take a much longer time than usual. 
  
 This project uses the command line heavily and we need to set up a [[https://​virtualenv.pypa.io/​en/​latest/​|Python virtualenv]] to use for this project. To do so, run the following commands. Note that the first command has two ''>''​s,​ not one! This project uses the command line heavily and we need to set up a [[https://​virtualenv.pypa.io/​en/​latest/​|Python virtualenv]] to use for this project. To do so, run the following commands. Note that the first command has two ''>''​s,​ not one!
Line 28: Line 28:
 echo "​source /​usr/​share/​virtualenvwrapper/​virtualenvwrapper.sh"​ >> ~/.bashrc echo "​source /​usr/​share/​virtualenvwrapper/​virtualenvwrapper.sh"​ >> ~/.bashrc
 # Close and then reopen any terminals you have open at this point. # Close and then reopen any terminals you have open at this point.
-mkvirtualenv proj1+mkvirtualenv ​--system-site-packages ​proj1
 workon proj1 workon proj1
-pip install -/​home/​student/​jupyter/​projects/​project1/​requirements.txt+pip install -/​home/​student/​jupyter/​projects/​project1/​requirements.txt
 # The previous step may take quite a bit of time. # The previous step may take quite a bit of time.
 add2virtualenv /​home/​student/​jupyter/​projects/​project1/​py add2virtualenv /​home/​student/​jupyter/​projects/​project1/​py
Line 39: Line 39:
 <​code>​ <​code>​
 workon proj1 workon proj1
 +</​code>​
 +
 +===== Dependencies (Students not Using VM) =====
 +
 +The project makes use of the following packages:
 +
 +<​code>​
 +openjdk7-jre virtualenvwrapper python-gtk2-dev coinor-libcbc-dev coinor-libclp-dev coinor-libcoinutils-dev coinor-libosi-dev coinor-libcgl-dev bison flex nginx
 </​code>​ </​code>​
  
Line 47: Line 55:
 You will be using RMPL (reactive model-based programming language) as the modelling language for this project. RMPL is developed by the MERS group at MIT. It is an experimental language still under development,​ but the subset of the language you will be using for this project has been extensively tested. You will be using RMPL (reactive model-based programming language) as the modelling language for this project. RMPL is developed by the MERS group at MIT. It is an experimental language still under development,​ but the subset of the language you will be using for this project has been extensively tested.
  
-First, let's look at how the code in this project is laid out. The project is located in the ''​~/​jupyter/​projects/​project1/''​ folder. Most of the python code used is located in the ''​py/''​ folder. ''​bin/''​ contains executable scripts used for preprocessing,​ planning, and executing plans. ''​rmpl/''​ is where RMPL scripts ​should be located. ''​environments/''​ is where environment files should be located. ''​submission/''​ is where you will store files we ask you to generate.+First, let's look at how the code in this project is laid out. The project is located in the ''​~/​jupyter/​projects/​project1/''​ folder. Most of the python code used is located in the ''​py/''​ folder. ''​bin/''​ contains executable scripts used for preprocessing,​ planning, and executing plans. ''​rmpl/''​ is where provided ​RMPL scripts ​are located. ''​environments/''​ is where provided ​environment files are located. ''​submission/''​ is where you will store files we ask you to generate.
  
 We may need to push out updates during this project. To make that process painless, we ask that you do not modify any existing files, except ''​py/​intro_to_autonomy/​project1/​path_planner.py''​ and ''​requirements.txt''​. Feel free to add new files as you see fit. We may need to push out updates during this project. To make that process painless, we ask that you do not modify any existing files, except ''​py/​intro_to_autonomy/​project1/​path_planner.py''​ and ''​requirements.txt''​. Feel free to add new files as you see fit.
Line 189: Line 197:
  
 This will take the preprocessed RMPL file and generate a plan for it. The plan is stored as a TPN (Temporal Plan Network) at /​tmp/​plan.tpn. If you are curious and want to see a graphical representation of the plan, you can use the TPN viewer available at ''​http://​localhost/​tpn-viewer''​ in the virtual machine. Note that there is some extra cruft in the plan as a result of the planner adding some things for bookkeeping. This will take the preprocessed RMPL file and generate a plan for it. The plan is stored as a TPN (Temporal Plan Network) at /​tmp/​plan.tpn. If you are curious and want to see a graphical representation of the plan, you can use the TPN viewer available at ''​http://​localhost/​tpn-viewer''​ in the virtual machine. Note that there is some extra cruft in the plan as a result of the planner adding some things for bookkeeping.
 +
 +''​bin/​plan''​ also takes an optional third argument, the amount of time to wait before timing out, in seconds.
  
 ==== Executing the Plan ==== ==== Executing the Plan ====
Line 218: Line 228:
 Once you have chosen and gotten approval, implement your path planner in the file ''​py/​intro_to_autonomy/​project1/​path_planner.py''​. To use it during the preprocessing step, simply replace ''​StraightLinePathPlanner''​ with the name of the class you implement. Once you have chosen and gotten approval, implement your path planner in the file ''​py/​intro_to_autonomy/​project1/​path_planner.py''​. To use it during the preprocessing step, simply replace ''​StraightLinePathPlanner''​ with the name of the class you implement.
  
-If you find you need any additional python libraries, add them to the ''​requirements.txt''​ file and install them by running ''​pip install -requirements.txt''​.+If you find you need any additional python libraries, add them to the ''​requirements.txt''​ file and install them by running ''​pip install -requirements.txt''​. While you are free to use any thrid-party libraries, it is expected that you still implement the path planner and not just call an existing path planner.
  
 If you find you need any additional system libraries, feel free to install them, but record them in the file ''​submission/​added-system-libraries.txt''​ If you find you need any additional system libraries, feel free to install them, but record them in the file ''​submission/​added-system-libraries.txt''​
Line 225: Line 235:
  
 After implementing your path planner, test it on the environments ''​environments/​part1-{simple,​bugtrap,​cluttered}.yaml''​. Save PNGs of the executed plans to ''​submission/​part1-{simple,​bugtrap,​cluttered}.png''​. After implementing your path planner, test it on the environments ''​environments/​part1-{simple,​bugtrap,​cluttered}.yaml''​. Save PNGs of the executed plans to ''​submission/​part1-{simple,​bugtrap,​cluttered}.png''​.
 +
 +Last, describe your path planner implementation in the file ''​submission/​part1.txt''​. Be sure to describe what path planner you chose, which resources you used to understand your path planner, any changes you made beyond the standard algorithm, what values you chose for any tunable parameters (and why you chose them), and any issues you had while implementing or running your path planner.
  
 ==== Part 2 - Intro to RMPL ==== ==== Part 2 - Intro to RMPL ====
Line 269: Line 281:
   - In this project we blended path and activity planning by taking an approach commonly used in the research community: compute a path for every pair of locations, embed that information into the file describing the problem, execute the planner, then use the cached plans at execution time. Discuss some pros and cons of this approach. Is there any other approach you would suggest? What would be its pros and cons?   - In this project we blended path and activity planning by taking an approach commonly used in the research community: compute a path for every pair of locations, embed that information into the file describing the problem, execute the planner, then use the cached plans at execution time. Discuss some pros and cons of this approach. Is there any other approach you would suggest? What would be its pros and cons?
   - We will probably not get to it this semester, but there exist planners that can also reason about time. This would allow you to specify things like "​customer 1 must be served within 5 minutes"​ or "​customer 2 is not available until 2 minutes have passed."​ Re answer the previous question in the context of these planners. Also consider that in the real world, travel times may not be known exactly due to things like weather or equipment degradation.   - We will probably not get to it this semester, but there exist planners that can also reason about time. This would allow you to specify things like "​customer 1 must be served within 5 minutes"​ or "​customer 2 is not available until 2 minutes have passed."​ Re answer the previous question in the context of these planners. Also consider that in the real world, travel times may not be known exactly due to things like weather or equipment degradation.
 +
 +In the file ''​submission/​feedback.txt''​ please put any feedback you have concerning this project. What was good, bad, or ugly? Anything we should change for next year's class? Anything we should definitely keep the same?
  
 ===== Submitting the Project ===== ===== Submitting the Project =====
Line 280: Line 294:
 ===== Questions / doubts / technical problems ===== ===== Questions / doubts / technical problems =====
  
-Remember that you can post questions in our [[http://​piazza.com/​mit/​fall2015/​1641016413/​home|Piazza Forum]]. Please do not post answers to the problems, though.+Remember that you can post questions in our [[http://​piazza.com/​mit/​fall2016/​1641016413/​home|Piazza Forum]]. Please do not post answers to the problems, though.
projects/project1.1444944878.txt.gz · Last modified: 2015/10/15 17:34 by etimmons