CarND_System_Integration

This repository was created as part of Udacity's Self Driving Car Engineer Nanodegree. This repository contains code that can be run in Udacity's Carla (A self driving car). Final project - Car-X team. Dimitrios Mavridis final version.

View the Project on GitHub

Self-Driving Car Nanodegree Capstone Project (CAR-X Team)

Overview

The System Integration project is the final project of the Udacity Self-Driving Car Engineer Nanodegree.

The goal of this project is to code a real self-driving car to drive itself on a test track using ROS and Autoware. The project is coded to run on Udacity simulator as well as on Udacity’s own self-driving car CARLA.

CARLA

As a team, we built ROS nodes to implement core functionality of the autonomous vehicle system, including traffic light detection, control, and waypoint following.

For more information about the project, see the project introduction here.

Architecture

Using the Robot Operating System (ROS), each team member has developed and maintained a core component of the infrastructure that is demanded by the autonomous vehicle. The three core components of any good robot are the following:

ROS Architecture

ROS Nodes Description

Visualization module

To facilitate debugging of the system a visualization module was created for RVIZ. Information about waypoints, car location, upcoming stop light and also traffic light and their status - red, yellow or green. The screenshot below is an example of RVIZ debugging session:

visualization

Installation

Usage

  1. Clone the project repository

     git clone https://github.com/udacity/CarND-Capstone.git
    
  2. Install python dependencies

     cd CarND-Capstone
     pip install -r requirements.txt
    
  3. Make and run styx

     cd ros
     catkin_make
     source devel/setup.sh
     roslaunch launch/styx.launch
    
  4. Run the simulator

The following link has he video recording of the simulator

Please check out the link below for a video sample of the simulator.

Note that we used 40 Kmph for speed limit instead of the 10 MPH speed limit for CARLA for a better demonstration.

Running code on CARLA

In the project, the classification is done based on the color - the traffic light colors are very saturated what makes it easy to detect the state on the background. In order to run the code on CARLA, it is necessary to use a different classifier, a more intelligent classifier should be used (e.g. a neural network similar to YOLO or SSD, or a fully convolutional network)

Collaboration

Each of the team members in Car-X team should handle a core component.

Assuming Eqbal is handling the dbw_node:

Team Members:

Real world testing

  1. Download training bag that was recorded on the Udacity self-driving car
  2. Unzip the file
    unzip traffic_light_bag_files.zip
    
  3. Play the bag file
    rosbag play -l traffic_light_bag_files/loop_with_traffic_light.bag
    
  4. Launch your project in site mode
    cd CarND-Capstone/ros
    roslaunch launch/site.launch
    

A video recording of this run is uploaded on youtube here