Udacity Self-Driving Car Engineer Nano Degree projects.
In this program, I learnt the techniques that power self-driving cars across the full stack of a vehicle’s autonomous capabilities. Using Deep Learning with radar and lidar sensor fusion, I also trained the vehicle to detect and identify its surroundings to inform navigation. This program is co-authored with Mercedes Benz and Waymo
-
Finding Lane Lines
-
Traffic Sign Classifier
-
Object detection in urban enviroment
-
3D Object detection
-
Sensor Fusion
-
Scan Matching Localization
-
Motion Planning
-
Control and Trajectory tracking
The goal of the project is to detect road lines in an image taken from a roof-mounted camera. Then, create detection pipeline that can be applied to video stream from same camera. This project applies only computer vision techniques without any machine learning involed.
Keywords: Python, Computer Vision, Hough Transforms, Canny edge detection
Using deep neural networks and CNN to classific german traffic signs using TensorFlow. Perform image pre-processing, data augmentation, and validation to guard against overfitting. After several experiments using different architectures, our select model is inspired by LeNet [1] architecture but fine-tuned to match our goal.
- Keywords: Python, Deep Learning, CNN, TensorFlow, Data Augmentation, Hyperparameters.
Accurately detecting the surrounding objects can help autonomous vehicles react and prevent potential collisions. In this project, we use convolutional neural network approaches to detect and classify objects using data from Waymo Open dataset, which provides driving scenes, will be used to train our neural network models. The dataset contains images of urban environments containing annotated cyclists, pedestrians and vehicles. I trained SSD_ResNet_50 using default hyperparamters and apply data augmentation to avoid overfitting.
- Keywords: Python, CNN, Object detection, ResNet, Pytorch, Data Augmentation, Bounding boxes, TensorFlow Object Detection API.
In this project, we first load and process 3D lidar point clouds and then use a deep-learning approach to detect vehicles in LiDAR data (Waymo Open dataset) based on a birds-eye view perspective of the 3D point-cloud. We then used precision and recall metrics to evaluate our model.
- Keywords: Python, CNN, Object detection, LiDar, Sensor Fusion, Bird eye, Bounding boxes, Object Detection, Point cloud.
After fusing camera and lidar detections and detecting 3D objects, In this project we focus on multi-object tracking in real-world scenarios using Extended Kalman Filter. Along with creating tracking managemenet, updating and deleting tracks, assigning measurements to tracks with data association techniques, and managing several tracks simultaneously.
- Keywords: Python, multi-object tracking, Object detection, Kalman Filter, Sensor Fusion, Point cloud, RSME.
The goal of the project is to localize a car driving in simulation for at least 170m from the starting position and never exceeding a distance pose error of 1.2m. The simulation car is equipped with a lidar, provided by the simulator at regular intervals are lidar scans. There is also a point cloud map already available, and by using point registration matching between the map and scans localization for the car can be accomplished. This point cloud map is extracted from the CARLA simulator.
- Keywords: Python, CARLA, Localization, Point cloud.
ICP.mov
I implemented two main components of a traditional hierarchical planner: The Behavior Planner and the Motion Planner.
- Avoid static objects (cars, bicycles and trucks) parked on the side of the road
- Handle any type of intersection (3-way, 4-way intersections and roundabouts) by STOPPING in all of them (by default)
- Track the centerline on the traveling lane.
To accomplish this, I implemented:
-
Behavioral planning logic using Finite State Machines - FSM
-
Static objects Collision checking.
-
Path and Trajectory generation using Cubic Spirals
-
Best trajectory selection though a cost function evaluation. This cost function will mainly perform a collision check and a proximity check to bring cost higher as we get closer or collide with objects but maintaining a bias to stay closer to the lane center line.
-
Keywords: Python, Finite State Machines, Motion planning, Behavior Planner.
Screen.Recording.2021-12-17.at.3.18.59.PM.mov
[1] Traffic Sign Recognition with Multi-Scale Convolutional Networks