The goal of the project is to implement a machine learning based lane following algorithm on a Duckiebot.
We use a convolutional neural network (CNN) to compute the relative pose, heading and distance relative to the middle of the lane, of the Duckiebot. The input of the CNN is the live image stream of the Duckiebot. The Duckiebot is then controlled using a PID controller with the computed pose as the input.
A major part of the project is the creation of a framework that semi-automates the data acquisition and labeling process. New models can easily be trained and employed. The data is recorded using the localization system in Duckietown.
This repo contains all the files which we used to complete the project as well as a step-by-step guide on how to run it on any Duckiebot.
We split the project into three different parts:
- Data acquisition and labeling:
How to acquire, process and label the data - Training of the CNN (Convolutional Neural Network):
How to train the CNN - Implementation on the Duckiebot:
How to run the project on a Duckiebot
The readme files in each subset explains in detail how each task can be executed.
In the following is a short summary of the folders:
The whole data acquisition pipeline. From recording data with the localization system to recording data on the Duckiebot, post-processing and labeling the data.
Already labeled data sets that can be used for model-training.
Documentation of the project
Instructions on how to run a pre-trained model on a Duckiebot with our tuned controller.
Instructions and scripts on how to train a neural-network with labeled data.