Self-Driving Cars

Self-Driving Cars

Model Predictive Control

Goals:

  • Implement Model Predictive Control to drive the car around the track.
  • Calculate cross-track error.
  • Compensate for a 100 millisecond latency between actuation commands on top of the connection latency.
  • Drive as fast as possible while safely navigating the track.

PID Controller

Goals:

  • Implement a PID controller in C++ to maneuver the vehicle around the track! 
  • Tune hyperparameters which will enable the best performance.
  • Calculate the appropriate steering angle given the cross-track error (CTE) and velocity (mph).
  • Drive as fast as possible while safely navigating the track.

Particle Filters (Kidnapped Vehicle)

Goal:

  • Localize a kidnapped robot using a map of this location, a (noisy) GPS estimate of its initial location, and lots of (noisy) sensor and control data.
  • Implement a 2-dimensional particle filter in C++.
  • Use a given map and some initial localization information (analogous to what a GPS would provide) to localize.

Unscented Kalman Filters

Goal:

  • Utilize an Unscented Kalman Filter to estimate the state of a moving object of interest with noisy lidar and radar measurements.
  • Achieve RMSE values that are lower than the tolerance outlined in the project rubric.

Extended Kalman Filters

Goals:

  • Utilize a Kalman Filter to estimate the state of a moving object of interest with noisy lidar and radar measurements.
  • Achieve RMSE values that are lower that the tolerance outlined in the project rubric.

Vehicle Detection & Tracking

The goals / steps of this project are the following:

  • Perform a Histogram of Oriented Gradients (HOG) feature extraction on a labeled training set of images and train a classifier Linear SVM classifier
  • Optionally, you can also apply a color transform and append binned color features, as well as histograms of color, to your HOG feature vector.
  • Note: for those first two steps don't forget to normalize your features and randomize a selection for training and testing.
  • Implement a sliding-window technique and use your trained classifier to search for vehicles in images.
  • Run your pipeline on a video stream (start with the test_video.mp4 and later implement on full project_video.mp4) and create a heat map of recurring detections frame by frame to reject outliers and follow detected vehicles.
  • Estimate a bounding box for vehicles detected.

Advanced Lane Finding

The goals / steps of this project are the following:

  • Compute the camera calibration matrix and distortion coefficients given a set of chessboard images.
  • Apply a distortion correction to raw images.
  • Use color transforms, gradients, etc., to create a thresholded binary image.
  • Apply a perspective transform to rectify binary image ("birds-eye view").
  • Detect lane pixels and fit to find the lane boundary.
  • Determine the curvature of the lane and vehicle position with respect to center.
  • Warp the detected lane boundaries back onto the original image.
  • Output visual display of the lane boundaries and numerical estimation of lane curvature and vehicle position.

Behavioral Cloning

The goals / steps of this project are the following:

  • Use the simulator to collect data of good driving behavior
  • Design, train and validate a model that predicts a steering angle from image data
  • Use the model to drive the vehicle autonomously around the first track in the simulator. The vehicle should remain on the road for an entire loop around the track.
  • Summarize the results with a written report

The project uses a convolutional neural network to mimic driving behavior and successfully guide an autonomous vehicle around a simulated track by predicting the steering angle.  The project requires collecting appropriate data to train the model.

The writeup describes the approach taken to data collection, model architecture selection, and model training.

Traffic Sign Classification

The goals / steps of this project are the following:

  • Load the data set
  • Explore, summarize and visualize the data set
  • Design, train and test a model architecture
  • Use the model to make predictions on new images
  • Analyze the softmax probabilities of the new images
  • Summarize the results with a written report

The project uses a convolutional neural network (CNN) to classify a a traffic sign image based on the German Traffic Sign data set. The project  aims for prediction accuracy of at least 93%.

The project writeup discusses shortcomings of the model use, possible alternatives and outlines factors that will affect the model's ability to correctly classify images.

Finding Lane Lines

The goal of this project is to detect lane line using computer vision techniques including:

  • color channel selection
  • grayscaling
  • region of interest masking
  • Gaussian smoothing
  • Canny Edge Detection
  • Hough Transforms

The project creates a pipeline for detecting lane lines in a single image, then applying the pipeline to a video over which detections are plotted. 

The write up for the project describes issues in pipeline and identifies areas where improvements can be made.