Our video demo: https://www.youtube.com/watch?v=Qo-2rCpGn8w
Our main idea for this project is a Smartcar that is capable of autonomous parking in an empty spot when given a command to do so. We are directing our focus on automatic parking functionality, but will also see if there is enough time for additional functionalities to be implemented, namely - making manual controls for the car, autonomous parking specialization (for different cases).
Car will stay idle till it is interacted with. In order to relay the command to park, along with a few other commands (Bluetooth commands start moving, stop, LED light blinking during certain maneuvers, manual controls and parking feature), we are going to create UI for the car - a simple mobile app which uses bluetooth connection to communicate with the car. After receiving a command, Smartcar will change its movement accordingly to correspond to it. Smartcar at the same time will include obstacle avoidance capabilities to avoid collision while on autonomous movement (i.e. detecting obstacles in front of it, behind it, as well as on the car's right side in order to park without hitting anything).
Goal of this idea is to make the customer more comfortable and to increase efficiency in performing common everyday task with just a few buttons pressed on the smartphone. Autonomous parking aids safety purposes as well.
We want to reduce the amount of accidents the cars are involved in and increase its obstacle detection performance in order to avoid obstacles in a smarter way.
The Smartcar shield is the core of the car, all the components are mounted on the shield, including the Arduino Mega 2560 REV3 which is the "brain" of the Smartcar as the application that controls the car and all its connected components will run on this.
Three Ultrasonic Sensors HC-SR04 are mounted accordingly in front, to the right and on the back of the car and used to detect obstacles.
Moreover a Bluetooth Module HC-06 is also connected to the car to make the car communicate with the Android app- and two Speed encoders measure the distance travelled by the car (one for each side of the car).
Finally there are a LED light and a Gyroscope GY-50 L3G4200
Arduino IDE has been used to develop and test the application that would run on the car.
Android Studio has been used to develop and test the application that would run on the android phone.
The Smartcar is able to detect obstacles using the Ultrasonic Sensors mounted on the front, on the right side and on the back of the car.
The Smartcar can be connected to an android phone. From the Android app it is possible to turn on/off the bluetooth of the phone, see a list of discovered devices in the nearby and toggle the discoverability of the phone.
Through the Android app it is possible to manually control the Smartcar- the car is able to drive forward, backwards, forward turning left, forward turning right, backwards turning left and backwards turning right. The Smartcar is going to move as long as user is holding the button, as soon as the forward or backward button is released car stops.
Through the Android app it is possible to activate the autonomous driving mode which will make the car drive until an obstacle is approached, then the car will turn right or left if there is an obstacle to the right side of the car too. Afterwards, the car will continue with the ride, until the user gives another command.
Through the Android app it is possible to start the parking manoeuvre that will park the car between two obstacles as the picture shows here.
A LED Light will blink to signal that the car is in motion. As soon as the car stops, a LED light will stop blinking and switch the state to stable ON. This feature works for all 3 modes (Manual control, Autonomous driving (Cruise control), Automatic parallel parking)
Here you can find the steps to follow in order to try the app.
Before starting you should clone our repository, if you have Git Bash open a terminal and type
git clone https://github.com/DIT112-V19/group-08.git
Otherwise download the repository from here.
Now it's time to install the Android app: