Student Project Ideas
Contents
Student Project Ideas#
Depending on what topics you are covering as components of your class, possible project ideas may differ.
In general, projects can aim to improve on an existing capability within Duckietown, or add something new. If choosing to add something new, it could be a single component that exists within the larger structure that we have defined, or it could replace everything with some totally different approach (e.g., to use end-to-end machine learning).
Note
We keep a non-exhaustive collection of videos of past student projects on Vimeo. If you would like us to add your project to the list, reach out to us!
Improving Existing Components#
A sound strategy for coming up with potential projects is to build upon existing behaviors. The main code repository that contains the algorithmic components that run on the Duckiebot is the dt-core (see The Code Structure for details on the code structure in Duckietown). Within it are packages that are part of the core lane following, or more advanced indefinite navigation, demos.
The core components of lane following include:
These implementations are meant to be for reference, and there certainly are other ways of implementing each of these blocks. A possible way to structure a project could be to replace or improve on one of these core components and then see the effect on the overall performance of the lane following behavior.
Additional components that contribute to the indefinite navigation (where a Duckiebot drives indefinitely in a city with intersections and traffic lights) include:
These represent a possible implementation of this indefinite navigation behavior but, as above, there could be improvements.
Projects of this type are possibly slightly more ambitious projects as these packages are less well-tested, and students should be more prepared to have to work independently to make things work well.
Tip
One idea could be to structure the entire suite of projects as having the objective to get one more complex behavior such as indefinite navigation to work.
Finally, other packages exist in the repository that worked at some point but probably haven’t been tested in a while, such as:
These may serve as starting points or inspiration, but the students will in all likelihood have to do significant testing or develop their replacement.
Hierarchy of potential autonomous behaviors#
We note that a neat hierarchy of autonomous behaviors may be envisioned for Duckiebots driving in Duckietowns.
We briefly describe each behavior as source of potential inspiration for additional student projects. This is not a comprehensive list, as other behaviors may be conceived that don’t even require city environments.
BEHAVIOR NAME |
DESCRIPTION |
CITY CONFIGURATION |
---|---|---|
Lane Following ( |
A single Duckiebot drives indefinitely in a Duckietown without intersections. |
City loop (without intersections). |
|
A single Duckiebot drives indefinitely in a Duckietown with intersections. No intersection is equipped with traffic lights. The additional challenge here is introducing a finite state machine, having Duckiebots stop at intersections, read traffic signs, and navigate intersections before switching back to lane following mode. |
City with intersections but no traffic lights. |
|
Same as |
City loop (without intersections). |
|
A single Duckiebot drives indefinitely in a Duckietown with intersections, which may or may not be equipped with traffic lights. The additional challenge here is centralized coordination (LED detection and interpretation). |
City with intersections (with or without traffic lights). |
|
A single Duckiebot navigates a city without intersections, detecting and avoiding (when possible) “pedestrians” (i.e., duckies). The challenge here is detecting objects, and planning around them. |
City loop (without intersections), but with duckies in the road. |
|
Multiple Duckiebots drive indefinitely in a city without intersections. Duckiebots are allowed to be in the same lane. The challenge here is traffic management, i.e., detecting other Duckiebots and maintaining a safe distance from them. |
City loop (without intersections, without duckies). |
|
This challenge is similar to |
City with intersections (with or without traffic lights), and duckies on the road. |
|
The union of |
City loop (without intersections), with duckies on the road. |
|
Multiple Duckiebots navigate indefinitely in a city with intersection, equipped or not with traffic lights. The additional challenge here is dealing with decentralized coordination - i.e., introducing a protocol for having Duckiebots negatiate safe crossing of intersections. |
City with intersections (with or without traffic lights), and other vehicles on the same or opposite lanes. |
|
This is the ultimate challenge, where any number of Duckiebots can navigate indefinitely in any city configuration, with pedestrians. |
All configurations allowed (with intersections, duckies on the road, and multiple vehicles in any lane). |
New End-to-End Behaviors#
Another different project idea is to replace all the autonomy stack in dt-core with an entirely different approach. To this end, the templates and baselines that were developed for the AI Driving Olympics may prove useful or at least a source of inspiration (although they may need some updating).
Note
Even more advanced behaviors end up becoming published research. You can find some examples as source of inspiration on the research papers page of our website.