Skip to content

Peiran-Wei/group-13

 
 

Repository files navigation

Mini Project: System Development

WELCOME TO RAV

Group 13

Members:

  1. Aditya Nair
  2. Bora Kocak
  3. Jiacheng Li
  4. Maheli Silva
  5. Najeb Albakar
  6. Peiran Wei
  7. Zubeen S Maruf

In order to showcase of our final product, we have recorded a video demonstrating the full functionality of our system. We hope the video gives you a good presentation of what we've been trying to achieve. Thanks for watching!

Table of Contents

  1. What does the product contain?
  2. Why did we need it?
  3. What does it solve?
  4. How did we develop it?
  5. Get Started
  6. Application User Manual
  7. Software Architecture
  8. Technology
  9. Resource

What ?

A software that allows an end user to control a smart car remotely in a less traditional way by using a GUI. We created an android mobile app based controller.This app will allow users to control and watch a live stream of their car performing tasks.Besides, the smart car can detect obstacles around it and avoid it using embedded sensors for it to travel freely. The smart car is also equipped with other features such as cruise control, to maintain a constant speed. Emergency stop button, to halt the car a stop incase of any emergency while controlling the car.

Why ?

The main objective of this software is to utilize and demonstrate the use of a real-time based embedded system in this case a functional user interface with the smart car emulator. One of our main goals is to implement a responsible GUI which can easily control all the functionality in the smart car emulator. Here we have also added practical based possible scenarios our system can go through.

Scenario 1: The car owner is at a shopping mall or supermarket and has a handful of groceries and bags in their hand, the car is parked far away from the entrance and it is quite difficult to get to the car.

Scenario 2: It is pouring down with rain and the family is stranded at the entrance of their establishment they were not prepared for the sudden rain, the car is parked outside at a carpark and the family cannot reach to the car due to the heavy rainfall.

Scenario 3: The car owner wants to check up on the car to check if everything is ok and is out of danger, a check around the surroundings would give the owner assurance their car is fine.

What does it solve ?

Aid the driver with more information about surroundings located around the car. It also reduces human error and time during the operation.The following shows the sollutions to the scenarios explained above.

Scenario 1: The car owner does not have to carry the heavy bags all the way to the car. They dont have to leave the groceries in doubt to go get the the car first.

Scenario 2: It prevents the family from getting drenched in the rain. If the family has kids it also prevents safetly concers due to the rain.

Scenario 3: For security purposes the car owner can monitor their car at all times.

How ?

We are going to solve the above mentioned problems through an agile method of working. To do so we are going to have regular group meetings in which we discuss and decide our tasks that we are going to complete till the next meeting. In addition we will also have Q&A sessions with the TA’s or teachers throughout the time we are working on the project to have regular feedback or suggestions on the product we are creating. For the practical based scenarios here is how they will solve them:

Scenario 1 and 2: The car owner logins to the android and by using the joystick they can bring the car around, if the car is out of view they can use the live camera built in to the car to steer the vehicle at their located position, saving both time and effort of the car owners.

Scenario 3: For security purposes the car owner can monitor their car at all times by logging in to the app and connecting with the car's built in function to check the vehicles environment surroundings, giving the car owner assurance everything is fine with the vehicle.

Check the wiki page for environment requirements and set up instructions.

Environment settings:

Software and platform:

1. Microsoft Windows and Mac OS
2. Android Studio
3. JDK1.8
4. SmartCarEmulator
5. ArduinoIDE
6. Hivemq-ce(or any other MQTT broker)

Get started:

  1. Clone the project's repository by SSH key:
git@github.com:DIT112-V21/group-13.git
  1. After you clone or download the whole project from our repository.

  2. Use the Android Studio to open the “JoystickTest” file and sync the “build.gradle”file.

Screenshot 2021-05-29 at 01 46 08

  1. Next, you should start the local broker(Here we use Hivemq-ce as an example) For Mac users run ./run.sh
    Screenshot 2021-05-29 at 01 48 36

  2. The default MQTThost is your local-IP and the default MQTTport is 1883. You can set the MQTThost in the “MainActivity.java”.

Screenshot 2021-05-29 at 01 50 40

  1. Then, use the Arduino IDE to open the “joystickcar.ino”. And set the same host, port, USERNAME, and PASSWORD.

Screenshot 2021-05-30 at 02 17 08

  1. Open the SMCE(SmartCarEmulator) to compile “joystickcar.ino” and run the android studio “JoystickTest” project.

Application User Manual

Screenshot 2021-05-30 at 02 24 27

  1. Click the “REGISTER” to register an account. Make sure you enter the same password twice. After you confirm your account, click 'back' to log into the system.

Screenshot 2021-05-30 at 02 24 47

  1. When you login into the system successfully, you need to start the SMCE car and click the connect button be connected to the car via the MQTT broker. The camera will work after you click the black space above the joystick. After the image appears, you can control the car by moving the red joystick.

Screenshot 2021-05-30 at 02 25 48

3. By pressing the buttons 'Curise Control' and 'Stop', a user can manually control the car into curising mode or stop the car immediately.

Screenshot 2021-05-30 at 18 38 25

Software Architecture

Sequence Diagram

Sequence diagram

Activity Diagram

Activity diagram

JoystickTest is an application where a user can login and control their car remotely. It allows the user to control the car by using MQTT as a broker. If the user is a registered user, he/she will be able to login to the program by providing their username and password, and if they are not, they will be able to create a new account. The user's information will be saved in a database once they have registered. A successful message is displayed to the user once they have registered or logged in, while an unsuccessful message is presented if the procedure fails.

The user will be able to control the car once they have logged in. They can either move/turn the car, use cruise control, camera or stop the car. The user can move the car using the joystick as they wish. The car will be driven, and if an obstacle is encountered along the path, it will be automatically detected and avoided.

The camera function implemented will allow the user to see the road on which the car is traveling. If the cruise control function is enabled, the car will roam around until the function is disabled. Users can also halt the car with the stop button.

Technology

  • C++
  • Java
  • SMCE
  • Arduino IDE & VS Code & Android Studio
  • Java FX & Swing

Resource

  1. SMCE
  2. Android Stuido

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 90.5%
  • C++ 9.5%