Skip to the content.
Home Projects

Self-Driving Car Projects

Lane Line Detection

Animated GIF showing lane line detection on a highway

The goal of this project is to write a software pipeline to identify the road lane boundaries in a video. The steps to achieve this goal include the following:

See the code for this project.

Traffic Sign Classification

A row of road traffic signs

The goal of this project is to build a Convolutional Neural Network (CNN) that recognizes traffic signs. The steps to achieve this goal include the following:

See the code for this project.

Behavioral Cloning

Animated GIF car driving using a CNN trained using behavioral cloning

The goal of this project is to use convolutional neural networks (CNNs) to clone driving behavior and train a self-driving car to autonomously navigate a track. This project has the following requirements:

See the code for this project.

Extended Kalman Filter

Extended Kalman Filter

The goal of this project is to implement a an Extended Kalman Filter (EKF) and use the EFK with noisy LiDAR and RADAR measurements to estimate the state of a moving object of interest. An extended Kalman filter (EKF) is the nonlinear version of the Kalman filter which linearizes about an estimate of the current mean and covariance. In the case of well-defined transition models, the EKF has been considered the de facto standard in the theory of nonlinear state estimation, navigation systems, and GPS. The Extended Kalman Filter is also used widely in self-driving cars and sensor fusion.

See the code for this project.

2D Particle Filter

2D Particle Filter

The goal of this project is to implement a 2-dimensional particle filter in C++. The particle filter is given a map and some initial localization information (analogous to what a GPS would provide). At each time step the filter will also get observation and control data. This is a sparse localization problem, i.e., we are building an end-to-end localizer where we are localizing relative to a sparse set of landmarks using particle filters.

See the code for this project.

Path Planning

Path Planner that creates smooth, safe trajectories for a self-driving car

The goal of this project is to implement a Path Planner that creates smooth, safe trajectories for a self-driving car to follow, enabling the car to safely navigate around a virtual highway in the presence of other traffic.

Project notes:

See the code for this project.

PID Controller

A self-driving car manoeuvring around a track using a PID controller

The goal of this project is to implement a PID controller in C++, and tune the PID hyperparameters, to enable a self-driving car to manoeuvre around a track. The simulator provides the cross track error (CTE) and the velocity (mph) in order to compute the appropriate steering angle. The speed limit is 100 mph. The goal is to drive safely as fast as possible.

Control in this context refers to how we use the steering, throttle, and breaks to move a car where we want it to go. Control is a trickier problem than it might first seem. When a human comes to an intersection, we use our intuition to determine how hard to steer, when to accelerate, or whether we need to step on the brakes. Teaching a computer how to do this is difficult. Control algorithms are often called controllers. One of the most common and fundamental of controllers is called the PID controller.

See the code for this project.

Autonomous Vehicle Control

A self-driving car manoeuvring around a track using core functionality implemented as ROS nodes

The goal of this project is to program a real Self-Driving Car by writing ROS (Robot Operating System) nodes. For this project, I wrote ROS nodes to implement core functionality of the autonomous vehicle system, including traffic light detection, vehicle control, and waypoint following.

See the code for this project.

An agent trained using DRL navigating in a large, square world and collecting bananas

This project demonstrates how to use Deep Reinforcement Learning to train an agent to navigate in a large, square world and collect bananas.

See the code for this project.