Our academic project revolves around the design and implementation of an application for smart cars rental service. Clients would pick a destination through the app, then a self-driving car would get sent to pick them up and drop them off at their desired destination.
Our team called EraDev conceived DoobyCar: a prototype of a self-driving car to simulate the rental cars. DoobyCar is designed to be smart and autonomous to travel through the routes requested by the users.

Our vision throughout the project was to implement incremental versions to include each of the required features.
Starting out with the basics, X0 was made from a simple toy car chassis with 4 wheels, 4 motors, a motor shield and an Arduino UNO. The car receives a script (describing movements) from the serial through Arduino UNO. This script is then parsed by a compiler written in C, to be executed.
This version replaces Arduino UNO by an Arduino MEGA. This gave us the advantage of having more pins to use, therefore enough space to integrate an SD card module. X1 isn't dependent on the serial because we can read the trajectory script from the SD card directly.
Reading from an SD card is fun and all, until you need to change your script. Taking the SD card everytime just to change the script became a tedious task quite quickly. X2 replaces the SD card module by a Bluetooth module for more flexibility in sending the trajectory script.
As the features of the project started to grow, we were in need of a bigger computing power. We then resorted to Raspberry Pi 4 Model B as the 'brain' of our smart car prototype. This change opened up new possibilities so we included Navigation with ROS, GPS navigation, obstacle avoidance and traffic sign detection.
Here are some videos of us having fun with our prototype in action. Apologies for the shakiness.
