Self Driving Car Engineer Nanodegree

Lanes Line Detection

These videos are a demonstration of Term 1 Project Lane Detection of the UDACITY Self-Driving Car Engineer Nanodegree.

○ Developed a processing pipeline to identify lane lines in roads from camera using color information, edge detection, and Hough Transform

○ Technologies Used: Ubuntu Linux, Python and OpenCV

Driving Behavior Cloning

This video is a demonstration of Term 1 Project: Behavioural Cloning of the UDACITY Self-Driving Car Engineer Nanodegree. The goals of this project was to use a simulator to collect data of good driving behavior; and then build, a convolution neural network in Keras that predicts steering angles from images. The objective was to mimic the human driving behaviour so that the the model successfully drives around a track without leaving the road. The developed model has 3 convolution stages and 2 fully connected layers and was trained on ~9000 images with data augmentation. It successfully navigates the track!

○ Used an open source simulator to collect data of good driving data

○ Built a convolution neural network in Keras (with TensorFlow backend) that predicts steering angles from images

○ Trained and validated the model with a training and validation set

○ Tested that the model successfully drives around track one without leaving the road

Programming Environment and Tools: Python using Keras (Tensor flow Backend) and OpenCV

Advanced Lane Finding

This video is a demonstration of Term 1 Project: Advanced Lane Lind Detection of the UDACITY Self-Driving Car Engineer Nanodegree. Through this project an algorithmic pipeline was developed capable of tracking the road lane-lines and localizing the position of the vehicle with respect to them.

○ Developed advanced processing pipeline to detect road lane lines using OpenCV and Python.

○ Extracted binary image based on gradients and colour transformations to identify the lines.

○ Localized lines and fitted them to a polynomial to find the curvature and distance from centre.

Technologies Used: Ubuntu Linux, Python and OpenCV

Vehicle Detection and Tracking

This video is a demonstration of Term 1 Project: Vehicle Detection of the UDACITY Self-Driving Car Engineer Nanodegree. Through this project an algorithmic pipeline was developed capable of detecting and tracking vehicles.

○ Created a vehicle detection and tracking pipeline with OpenCV, histogram of oriented gradients (HOG), and support vector machines (SVM)

○ Optimized and evaluated the model on video data from an automotive camera taken during highway driving to detect and track cars in successive video frames

○ Technologies Used: Ubuntu Linux, Python, SciKit-Learn, and OpenCV


Tracking with Kalman Filters

This video is a demonstration of Term 2 Project: implementation of the extended Kalman filter in C++ of the UDACITY Self-Driving Car Engineer Nanodegree.

○ Developed a sensor fusion pipeline for both extended and unscented Kalman Filters that uses lidar and radar measurements to accurately and performantly track the position and velocity of a turning object

Technologies Used: Ubuntu Linux, C++, Python, Eigen C++ library

Particle Filter Localization

This video is a demonstration of Term 2 Project: Implementation of a 2 dimensional particle filter in C++ for self-driving vehicle localization of the UDACITY Self-Driving Car Engineer Nanodegree. The particle filter is given a map and some initial localization information and the goal is to localize a kidnapped vehicle in a map.

○ Implemented a 2-dimensional particle filter in C++ capable of localizing a vehicle within desired accuracy and time

Technologies Used: Ubuntu Linux, C++

PID Controller for Self-driving Cars

This video is a demonstration of Term 2 Project: Implementation of a PID controller for self-driving vehicles of the UDACITY Self-Driving Car Engineer Nanodegree.

○ Implemented a PID controller to maneuver a car around and track.

○ Manually fine-tuned the parameters to achieve stable result

Technologies Used: Ubuntu Linux, C++

Model Predictive Controller for Self-Driving Cars

This video is a demonstration of Term 2 Project: Model Predictive Control in C++ for controlling the trajectory of a self-driving vehicle of the UDACITY Self-Driving Car Engineer Nanodegree.

○ Implemented a model predictive control algorithm to drive a car round a track with waypoints and even with additional latency between commands

Technologies Used: Ubuntu Linux, C++, Eigen Library, Ipopt Library, CppAD Library

Object Detection for Self-Driving Cars

Rapid object detection suitable for implementation in autonomous vehicles

○ Implemented a convolutional neural network that performs single shot detection of various objects that a car needs to be aware of.

Technologies Used: Tensorflow Object Detection API, OpenCV, Python, Jupyter Notebook

UDACITY SDCE Nanodegree Term 3— Project 1: Path Planning

The goal of this project was to design a path planner that is able to create smooth, safe paths for the car to follow along a 3-lane highway with traffic. The path planner should be able to keep inside its lane, avoid hitting other cars, and pass slower moving traffic all by using localization, sensor fusion, and map data.

Technologies used: C++, spline.h, Finite State Machine Platform: Ubuntu Linux, Udacity Simulator

UDACITY SDCE Nanodegree Term 3— Project 2 (Elective): Advanced Deep Learning and Semantic Segmentation

This specific module of the UDACITY Self-Driving Car Engeneer Nanodegree was a collaboration between UDACITY and NVIDIAs Deep Learning Institute. This module covers semantic segmentation, and inference optimization. The objective of this project is to label pixels corresponding to road in images using a Fully Convolutional Networ`k (FCN). The training of the network was carried out using Amazon Web Services using the KITTI Road Dataset. The deep learning framework used was Tensorflow, with python and scipy for data manipulation. The final network was able to identify road segments in the images.

Technologies used: Python, Sci-Py, Tensorflow Platform: Amazon Web Services, Ubuntu Linux, GPU