Apr 16, 2020

My Experience with the Udacity Self Driving Car Nanodegree A Summary

In year 2018 I completed the Udacity Self Driving Car Nanodegree which allowed me to enter the career as Self Driving Car Engineer.

Get My Experience in Detail in this PDF-Slideshow.

Below a list of the various coding projects I worked on during the project. Click one to go to the respective GitHub project:

Finding Lane Lines
Already during the second week of the Nanodegree a simple lane finding algorithm based on Edge Detection and Huff Transformations is developed in Python Notebooks.
Traffic Sign Classifier
A traffic sign classifier with a modified LeNet-5 Network architecture is trained and tested on the "German Traffic Sign Dataset" with Tensorflow.
Behavioral Cloning
Keras + Tensorflow is used to train a Modified Nvidia Network from video images of a simulated 3D-world and respective control inputs. The classifier can later drive the car itself in the simulated environment.
Advanced Lane Finding
The very first project is revisited. Real-world metrics like curve radius and offset from lane center are added. Also, lens corrections and a more stable lane tracing algorithm (based on proximity search on previous images) are added.
Vehicle Detection and Tracking
A support vector machine is trained to recognize cars based on "Hog features" and Histogram features. This SVM is convoluted with the video frames manually using different kernel sizes in order to detect cars.
Extended Kalman Filters
Extended Kalman Filters allow combining various uncertain measurements over time into a (more) certain one. A basic Kalman filter that combines radar and lidar in a 2D-world is implemented in C++.
Unscented Kalman Filters
Unscented Kalman Filters are like Extended Kalman Filters, but instead of using Jacobian Matrizes to linearize the gaussian distribution, they sample by determine well-chosen "sigma points".
Localization: Particle Filters
In order to improve on GPS-localization, Particle Filters can determine more precisely where a vehicle is based on observed distances to landmarks. A 2D-particle filter was implemented with this project.
PID Controllers
Another C++ project. PID controllers are a fundamental algorithm from control theory. They control actuators of vehicles towards a target trajectory only by observing the previous error (P) as well as a differential (D) and integral (I) term.
Model Predictive Control
Yet another C++ project. Predictive Controllers improve on PID controllers by modelling a simulated trajectory close along multiple future waypoints taking into account physical constraints and optimizing for the right control inputs with an optimizer (here: "ipopt").
Path Planning
With a C++ program, steer a car in the Udacity Simulator by reacting correctly to cars in the surrounding, changing lanes or speeding up / slowing down according to specification.
Advanced Deep Learning
As one elective (the other one being "Vehicle Saftety") a Fully Convolutional Neural Network is implemented which can classify contents of a camera image on a pixel level (Semantic Segmentation). The project also includes optimizing Neural Networks with TensorFlow for embedded systems.
System Integration
Finally, putting everything together with ROS (Robot Operating System). In a team of 5, a PID-Controller, Path Planner and Traffic Light Classifier are implemented as ROS nodes and executed on the real Udacity Self Driving Car.

Other Blog Posts

Jun 2, 2016: Finished Udacity Data Analyst Nanodegree A few insights from the 1-year journey

Summarizing some insights I had into personal growth during my data analyst nanodegree project.

Jan 10, 2016: What will happen here? What to expect in this space of the web.

Interesting things about data science, integration and the occasional story about travels, photography and other pursuits.