jonathanloganmoran / ND0013-Self-Driving-Car-Engineer

This is the repository for the ND0013 - Self-Driving Car Engineer Nanodegree programme given at Udacity during the 2022 session.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Self-Driving Car Engineer Nanodegree

Udacity ND0013 | 2022 Cohort

This is the repository for the ND0013 - Self-Driving Car Engineer Nanodegree programme given at Udacity during the 2022 session.

Courses

Projects

Contents

The following topics are covered in course projects:

Course 1: Computer Vision
  • Training a SSD object detection model on the Waymo Open Dataset in TensorFlow
  • Fine-tuning strategies and making architectural optimisations for DNNs
  • Conducting exploratory data analysis (EDA) and training / evaluation error analysis
  • And so much more ... (see 1-Computer-Vision for full list of course topics).
Course 2: Sensor Fusion
  • Extract and transform LiDAR range images into 3D point clouds and bird's-eye view (BEV) maps;
  • Build and experiment with state-of-the-art 3D object detection nets;
  • Pre-process and perform multi-object tracking with multi-modal sensor data (LiDAR, RGB camera, radar);
  • Implement the Extended Kalman filter (EKF) and the Unscented Kalman filter (UKF) for multi-object tracking;
  • And so much more ... (see 2-Sensor-Fusion for full list of course topics).
Course 3: Localization
  • Master robot localisation from one-dimensional motion models to three-dimensional point cloud maps;
  • Master the fundamentals of Bayes' theorem and the Markov assumption applied to robot localisation;
  • Implement Markov localisation to perform 1D object tracking in C++;
  • Write and optimise two scan matching algorithms in C++: Iterative Closest Point (ICP) and Normal Distributions Transform (NDT);
  • Apply the scan matching algorithms to simulated LiDAR point clouds processed with the Point Cloud Library (PCL);
  • And so much more ... (see 3-Localization for full list of course topics).
Course 4: Planning
  • Design and implement weighted cost functions and behaviour planning systems in C++;
  • Perform structured trajectory generation in C++;
  • Implement the A* and Hybrid A* search algorithms in C++;
  • Use numerical approximation and discretisation to solve the Polynomial splines problem;
  • Generate optimal, feasible, collision-free paths;
  • And so much more ... (see 4-Planning for full list of course topics).
Course 5: Control
  • Design and implement feedback controllers (PID and MPC) for trajectory tracking;
  • Select design parameters to guarantee stability;
  • Use MPC to design a feedback controller for non-linear dynamics;
  • Test and evaluate the feedback controllers w.r.t. real-world perturbations using CARLA Simulator;
  • And so much more ... (see 5-Control for full list of course topics).

Material

Syllabus:

Literature:

  • See specific courses for related literature.

Datasets:

Lectures:

  • Lecture materials (videos, slides) available offline. Course lecture notes available on request.

Other resources

Companion code:

About

This is the repository for the ND0013 - Self-Driving Car Engineer Nanodegree programme given at Udacity during the 2022 session.


Languages

Language:Jupyter Notebook 85.7%Language:Makefile 8.0%Language:C++ 4.4%Language:Python 1.5%Language:TeX 0.2%Language:C 0.1%Language:CMake 0.1%Language:Shell 0.0%Language:Dockerfile 0.0%Language:Gnuplot 0.0%