This is the repository for the ND0013 - Self-Driving Car Engineer Nanodegree programme given at Udacity during the 2022 session.
- ✅ Course 1: Computer Vision
- ✅ Course 2: Sensor Fusion
- ✅ Course 3: Localization
- ✅ Course 4: Planning
- ✅ Course 5: Control
- ✅ Project 1.1: Object Detection in Urban Environments (2D)
- ✅ Project 2.1: 3D Object Detection with LiDAR Data
- ✅ Project 2.2: Multi-Target Tracking with Extended Kalman filter (MTT with EKF)
- ✅ Project 3.1: Scan Matching Localization
- ✅ Project 4.1: Motion Planning and Decision Making for Autonomous Vehicles
- ✅ Project 5.1: Control and Trajectory Tracking for Autonomous Vehicles
The following topics are covered in course projects:
- 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).
- 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).
- 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).
- 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).
- 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).
Syllabus:
Literature:
- See specific courses for related literature.
Datasets:
Lectures:
- Lecture materials (videos, slides) available offline. Course lecture notes available on request.
Companion code: