Activities and Exercises: Learning Experiences (LXs)#

Note

Duckietown learning experiences (LXs) are ready-to-go “weeks” of class. They include videos, notes, interactive activities, and exercises, and are integrated with the Duckietown technical infrastructure (Duckiematrix + real Duckiebot hardware).

We define:

  • “activities” as learning tasks to which solutions are provided. Activities are designed to be “tutorials” for specific topics.

  • “exercises” as learning tasks to which solutions are not provided.

  • Duckietown “learning activities” (LX): as standalone classes on specific topics, typically containing activities, exercises, videos, slides, quizzes and pointers to further reading. LXs can be thought of as a week of (university-level) classes.

Both activities and exercises are structured to include Jupyter Notebooks that introduce a concept followed by coding blocks. For the most part, the result is a piece of code that can be easily:

  • Run in a simulation environment;

  • Run on robot hardware;

The pedagogical goal in general is to explore some narrowly scoped component of the autonomy stack with everything else being “hidden” (or provided) so that the student may experience the impact of that component on the others. Whenever possible, the result of the exercise should be an “end-to-end” experience that makes the robot do something (e.g., move).

For a complete description of the components of the learning experiences (LXs) please refer to the General Procedure for Running Learning Experiences. For a guide for creating new learning experiences see Creating New Learning Experiences.

For help on how to create learning experiences, open a question on Stack Overflow with the tag LX (preferred), or ask on the #help-build-lxs channel on Slack.

MOOC Activities and Exercises#

Warning

The current version of the MOOC is still using the daffy version of the code and exercise. If you would like to use it, you should probably refer to the daffy version of the documentation

The Self-driving Cars with Duckietown Massive Online Open Class comprises the following learning experiences. Activities and exercises can be accessed independently of the MOOC at:

EXERCISE NAME

DESCRIPTION

Braitenberg

A very simple reactive control approach that is inspired by the repulsive and attractive forces

Modeling and Control

We build a kinematic model of the Duckiebot and build a simple PID controller using the feedback from the encoders

Object Detection

We train a deep neural network to detect objects and connect it to the control of the Duckiebot

Visual Lane Servoing

We use basic concepts of computer vision to build a reactive control that operates directly on the camera images

State Estimation

A somewhat more advanced exercise that takes the detections of the road markings and uses them to calculate an estimate of the robot’s state

Collision Checker

We build an algorithm to detect if the robot will collide with it’s environment by understanding its state and geometry

Planning

We explore algorithms that the Duckiebot can use to successfully navigate in a cluttered environment