Exercise 5 - Planning
This exercises is focused on path planning.
Note 1: You will not need the Duckiebot for this exercises.
Note 2: We are going to use the daffy-planning branch instead of daffy
Note 3: For the planning exercise, you only need to consider the differential drive, static obstacle challenge (although others are described, they are optional).
Note 4: We will not be using dts exercises test
for this exercise (either part 1 or part 2).
Make sure your system is up to date
It’s a good idea to do the following:
-
💻 Always make sure your Duckietown Shell is updated to the latest version. See installation instructions.
-
💻 Update the shell commands:
dts update
-
💻 Pull latest containers on your laptop:
dts desktop update
-
💻 Pull from the upstream
duckietown/mooc-exercises
repo on thedaffy-planning
branch (if you aren’t sure how to do this or set this up ask a TA or the professor).
Part 1: Collision checker
In part 1 of this exercise, you will write a collision checker. In the next part you will use this collision checker as part of a planning algorithm.
-
In your fork, enter the
collision
directory. -
Build the workspace:
dts exercises build
. -
Start the Jupyter server with
dts exercises lab
. It will open a page in your browser. The login password isquackquack
. Make sure you do not have other Jupyter notebooks already open. -
Open the notebook (
collision_checker01.ipynb
) and follow through.
Submit
The template contained in this folder is a fully functional (wrong) solution. You can try to evaluate/submit right away.
To evaluate the submission use:
dts challenges evaluate --challenge lx22-collision-check-vali
To submit, use
dts challenges submit
Note that the submission will be sent to two different challenges:
lx22-collision-check-vali
is the validation challenge. You will be able to see the score and other output.lx22-collision-check-test
is the testing challenge. You will not be able to see the scores.
To pass, you have to get at least 95% of the queries correct on the mooc-collision-check-test
challenge.
Note that you cannot do
dts challenges evaluate --challenge lx22-collision-check-test !! does not work !!
because the test challenge must remain a secret.
Part 2: Planner
In part 2 of this exercise, you will write a path planner. You will need to have solved the collision
part already because you will use your collision checker (you probably want to copy it into your solution folder).
-
In your fork, enter the
planning
directory. -
Build the workspace:
dts exercises build
. -
Start the Jupyter server with
dts exercises lab
. It will open a page in your browser. The login password isquackquack
. Make sure you do not have other Jupyter notebooks already open. -
Open the
planning01.ipynb
notebook and follow through, this notebook explains how to build, manipulate and search graphs. Subsequently move onto theplannin02.ipynb
notebook which explains the exercise.
Submit
The template contained in the planner
subfolder is a fully functional (but wrong) solution.
You can try to evaluate/submit it right away.
Note For full marks you only need to solve the differential drive with static obstacles case (but you are welcome to try the others).
To evaluate the submission use:
dts challenges evaluate --challenge lx22-planning-dd-static-vali
To submit, use
dts challenges submit --challenge lx22-planning-dd-static-test
There are some other challenges that you may also want to experiment with, but this is the only one that is required.
Passing criteria
To pass, you have to get at no greater than 5% “mistakes”, greater than 90% success ratio, and a median “Duration” of at most 50.
Grading criteria
-
The collision checker (2 points out of 5)
-
The planner (3 points out of 5)