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 the daffy-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 is quackquack. 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:

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 is quackquack. 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 the plannin02.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)