The System Integration project is the final project of the Udacity Self-Driving Car Engineer Nanodegree. In this project We have built ROS nodes to implement traffic light detection, PID control, and waypoint following. Initially this software system will be tested on a simulator, later, this will be deployed on Carla to autonomously drive it around a test track.
For more information about the project, see the project introduction here.
- Bajrang Chapola
(Project Contribution: Team Lead)
- dev.chapola@gmail.com - Nishant Rana
(Project Contribution: Team Member)
- nishantcop@gmail.com - Jian Kang
(Project Contribution: Team Member)
- kangjiankarl@163.com - Muhammad Al-Digeil
(Project Contribution: Team Member)
- digeil@acm.org - Melanie Schmidt-Wolf
(Project Contribution: Team Member)
- melanie.schmidt-wolf@web.de
One important aspect of working on a team to complete this project was defining a good schedule with milestones for completion. In terms of work division, this project has two main components, training a model to identify the waypoint associated with the nearest red light in the direction of travel of the car, and waypoint management and motion control. These tasks can be divided into a sequence of two asynchronous tasks followed by integration and testing. The members of our team selected what aspect to work on initially based on personal preference, knowing that as the project evolved we would all be involved in a wider view of it. Jian Kang and Muhammad Al-Digeil predominantly worked on the model for the traffic light detector while Bajrang Chapola, Nishant Rana and Melanie Schmidt-Wolf predominantly worked on the waypoint management and motion control. Our team predominately used Slack to facilitate communications, augmented by e-mail correspondence and a few video conference calls used to meet each other and check in on progress during the integration phase. We opted to use a single GitHub repo with privileges granted all team members. Over the course of the project we created new branches for new features. As branches became outdated we deleted them to reduce repository clutter, focusing mainly on the branch we would turn in.
Please use one of the two installation options, either native or docker installation.
-
Be sure that your workstation is running Ubuntu 16.04 Xenial Xerus or Ubuntu 14.04 Trusty Tahir. Ubuntu downloads can be found here.
-
If using a Virtual Machine to install Ubuntu, use the following configuration as minimum:
- 2 CPU
- 2 GB system memory
- 25 GB of free hard drive space
The Udacity provided virtual machine has ROS and Dataspeed DBW already installed, so you can skip the next two steps if you are using this.
-
Follow these instructions to install ROS
- ROS Kinetic if you have Ubuntu 16.04.
- ROS Indigo if you have Ubuntu 14.04.
-
- Use this option to install the SDK on a workstation that already has ROS installed: One Line SDK Install (binary)
-
Download the Udacity Simulator.
Build the docker container
docker build . -t capstone
Run the docker file
docker run -p 4567:4567 -v $PWD:/capstone -v /tmp/log:/root/.ros/ --rm -it capstone
To set up port forwarding, please refer to the instructions from term 2
- Clone the project repository
git clone https://github.com/udacity/CarND-Capstone.git
- Install python dependencies
cd CarND-Capstone
pip install -r requirements.txt
- Make and run styx
cd ros
catkin_make
source devel/setup.sh
roslaunch launch/styx.launch
- Run the simulator
- Download training bag that was recorded on the Udacity self-driving car.
- Unzip the file
unzip traffic_light_bag_file.zip
- Play the bag file
rosbag play -l traffic_light_bag_file/traffic_light_training.bag
- Launch your project in site mode
cd CarND-Capstone/ros
roslaunch launch/site.launch
- Confirm that traffic light detection works on real life images
The traffic light detection subsystem is based on a trained SSD-MobileNetV2 CNN model. The implementation details are under the link.