Udacity Self-Driving Cars Engineer NanoDegree

In 2019, I completed Udacity's Self-Driving Cars Engineering NanoDegree. It was a great learning experience and taught me a lot more about how driverless cars work from a top-down end-to-end manner. You can review some of the work I submitted below:

Traffic Sign Classifier

Architect a Convolutional Neural Network (CNN) to classify traffic signs. Train and validate the model so it can classify traffic sign images using the German Traffic Sign Dataset.

Extended Kalman Filtering

Use an Extended Kalman Filter (EKF) to estimate the state of a moving object of interest with noisy LiDAR and RADAR measurements. Obtain RMSE values that are lower than a given tolerance.

Path Planning

Design a highway driving path planner and test it in simulation with traffic, telemetry, and sensor fusion data. The car must satisfy several velocity, acceleration, and jerk motion constraints while also avoiding collisions, staying within lane markers (other than lane changes), and achieving a high average velocity in traffic by changing lanes and obeying the posted speed limit.


Implement a 2-D particle filter in C++, which is given a map and some initial localization information, similar to what a GPS would provide. At each time step your filter will also get noisy observation and control data.

Behavioral Cloning

Build a CNN in Keras to clone driving behavior. Train, validate and test a model that outputs a steering angle to an autonomous vehicle.

Lane Marker Detection

Use openCV to write a software pipeline to identify the lane boundaries in a video. Apply a distortion correction to raw images, perspective transforms to rectify binary images, detect lane pixels and fit them to find the lane boundary, and determine the curvature of the lane and vehicle position with respect to center.

PID Control

Build a PID (proportional/integral/differential) controller, tune PID hyperparameters and test in simulator. The simulator provides cross-track error (CTE), speed, and steering angle data via uWS. The controller must respond with steering and throttle commands to drive the car reliably around the simulator track. Expand on this project by building a simulated controller in ROS.

Model Predictive Control

Coming Soon!!