This directory includes all of the projects I have completed for the Introduction to Self-Driving Cars Nanodegree program, which is offered by Udacity. In this program, I have gained a comprehensive understanding of the core principles and techniques related to autonomous driving, and have applied my knowledge through various projects designed to simulate real-world scenarios. These projects have allowed me to develop practical skills in areas such as computer vision, sensor fusion, control systems, and machine learning, among others.
- Project 1: Joy_Ride
- Project 2: 2D_Histogram_Filter_in_Python
- Project 3: Implement_Matrix_Class
- Project 4: Translate_Python_Cpp
- Project 5: Optimize_Histogram_Filter
- Project 6: Implement_Route_Planner
- Project 7: Reconstructing_Trajectories_from_Sensor_Data
- Project 8: Image_Classifier_from_Scratch
This task requires you to begin writing code that will control a simulated vehicle. You will need to send appropriate throttle and steering commands to the car, with the aim of helping it navigate around a predefined test track.
For this initial project, I wrote the sense and move functions for a 2-dimensional histogram filter in Python. The sense function allows the robot to use sensor readings to update the probability distribution of its location, while the move function will enable the robot to update its position based on a predefined set of movement instructions.
In this project, I have had the opportunity to apply my object-oriented programming and matrix mathematics expertise by completing the methods in a partially implemented Matrix class.
In this project, I implemented the core functionality of the Histogram Filter algorithm in C++, including the sense, move, and initialization functions.
Efficiency is a critical consideration in the development of self-driving cars, as these vehicles must operate without wasting any resources, including memory. In this project, identified inefficiencies in code and implemented more efficient algorithms and data structures to improve performance.
I had the opportunity to use my expertise in data structures, particularly graph data structures, and search algorithms to design an algorithm that can identify the fastest route between two points on a map.
I used raw data from a vehicle's accelerometer, odometer, and rate gyros to reconstruct its X and Y trajectory. I did processing the data from these sensors, including acceleration, displacement, and angular rotation, to determine the vehicle's position and movement in two dimensions.
The goal of this project is to build a classification pipeline that can accurately label images of traffic lights as either red, green, or yellow. I developed an algorithm that can extract relevant features from the input image, and use those features to classify the image into one of the three categories. The pipeline is able to handle various lighting conditions, image resolutions, and other factors that can affect the accuracy of the classification.