Skip to content

This repo contains all projects that are done in Self Driving Car Nanodegree

License

Notifications You must be signed in to change notification settings

DavidAbdelmalek/Self_Driving_Car_ND

Repository files navigation

Udacity Self-Driving Car Engineer Nanodegree

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

Projects:

  • 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


Projects

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

Demo


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.

Demo


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.

Demo


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.

Demo


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.

Demo


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.

Demo

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.

Demo

Screen.Recording.2021-12-17.at.3.18.59.PM.mov

Certificate

[1] Traffic Sign Recognition with Multi-Scale Convolutional Networks

About

This repo contains all projects that are done in Self Driving Car Nanodegree

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published