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.
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.