This is the repo for our Software Engineering project. The Search and Rescue Assistant (or S.A.R.A.) is a drone that will help first responders find and save people trapped due to natural disasters. More info about this project can be found on our website. A drone is connected to a Raspberry Pi and an Android phone is used as the camera. The drone controller and camera are integrated to the website. The functions of S.A.R.A. are split between 4 subgroups:
-
image-process: The drone is equipped with a camera that will be used to assess its surroundings and locate people in danger. It has a direct connection with the website when used with mobile devices.
-
location-data: The location data will be used to keep track of where an emergency is taking place so S.A.R.A. can be led to the right place.
-
physical-data: This branch deals with controlling how S.A.R.A. will move when in search and rescue mode. It will keep track of its speed, direction, power consumption, and more.
-
obstacles: With help from its physical data, S.A.R.A. can alert users on how to respond to obstacles in its path when navigating through debris to find victims.
The project is split into 6 folders: code, unit testing, integration testing, data collection, documentation, and UML design.
Links to the README subfolders:
Open our website and click on Controller to see S.A.R.A in action. For a local copy, clone this repo. There are 3 components to S.A.R.A: the website, the sensors (optional), and the infared camera (optional):
Open index.html
from this directory in your favorite browser (CTRL+O) to see the About page with details about our group. The other source files can be found in the about folder. Open controller.html
in the controller folder to see the hub for S.A.R.A. From there, you can choose your webcam, toggle the camera, see your battery level, speed, location, and sensor data (for implementation see below). Move around your device to see the speed change in real time. Note: you must allow your browser to use your camera and track your location.
To test the sensors, you will need a Raspberry Pi and two sensors connected as shown in newleft_sensor.py
and newright_sensor.py
in the Obstacles folder. Look for the PIN_TRIGGER and PIN_ECHO variables for reference. Then run those two python scripts in separate terminals, running on the Pi locally. Distance values are written into leftsensor.txt
and rightsensor.txt
. Next, in a third terminal, you'll need to run a python server in order for the webpage to accept fetch requests to the distance values:
$ python3 newleft_sensor.py
$ python3 newright_sensor.py
$ python3 -m http.server PORT_NUM
Then open localhost:PORT_NUM to see the sensor data update in real time. To stop the sensor scripts at any time, just press CTRL+C on that terminal window.
To see a heat map of your surroundings, you will need a Seek Thermal Compact Camera as well as its corresponding app. Once configured, open the app on your smartphone for a heat map for your next emergency.
1_code/ // Folder for source code
about/ // Folder for about page
custom.js // Logic code for about page
jquery.js // jQuery source code
slide-1.jpg // JPG file containing an image used in the website
slide-2.jpg // JPG file containing an image used in the website
style.css // Styles for about page
vegas.min.js // Plugin to add background images
wow.min.js // Plugin for animations while scrolling
controller/ // Folder for controller page
Obstacles/ // Folder for Obstacle detection
distance.txt // Test text file for storing random values
HCSR04.py // Initial script to run one sensor
leftsensor.txt // Text file for storing left sensor's distance in cm
Multi-HCSR04.py // Initial script to run multiple sensors
newleft_sensor.py // Script to run left sensor
newright_sensor.py // Script to run right sensor
rightsensor.txt // Text file for storing right sensor's distance in cm
control-logic.js // Logic code for controller page
control.html // Web file for controller page
control_style.css // Styles for controler page
README.md // README explaining this folder
2_unit_testing/ // Folder for unit testing
Physical Data/ // Folder for Physical Data
src/ // Source code folder for Velocity.java
Velocity.java // Original test code to get speed
.classpath // File that specifies what source files are needed
.gitignore // File that tells git what files to ignore
.project // File for the project description for Velocity.Java
Battery.html // Web demo for getting the battery level of device
Controls.jar // package file for original controller code
README.md // README for unit testing
3_integration_testing/ // Folder for integration testing
ReadWrite/ // Folder for ReadWrite tests
numbers.txt // Text file for random numbers
numGen.m // Test file that writes numbers to a text file
numtransfer.html // Web demo that outputs the number from numbers.txt
printtest.html // Web demo for write_to_file.py
write_to_file.py // Code to write output to a text file
cgi_test.py // Test code to scrape web data
README.md // README for integration testing
4_data_collection/ // Folder for data collection
distance.java // Calculates distance using latitude and longitude
README.md // README for data collection
5_documentation/ // Folder for documentation
reports/ // Folder for reports
Group 8 Report1_Full.pdf // Full report 1
Group 8 Report1_part1.pdf // Part 1 of report 1
Group 8 Report1_part2.pdf // Part 2 of report 1
Group 8 Report2_Full.pdf // Full report 2
Group 8 Report2_part1.pdf // Part 1 of report 2
Group 8 Report2_part2.pdf // Part 2 of report 2
Group 8 Report3_Full.pdf // Full report 3
Group 8 Report3_part1.pdf // Part 1 of report 3
BrochureSARA.pdf // Brochure for 1st demo
BrochureSARA2.pdf // Brochure for 2nd demo
Group 8 contribution breakdown for demo2.xlsx // Contribution table for demo 2
Group 8 Demo 1.pptx // Demo 1 presentation
Group 8 Demo 2.pttx // Demo 2 presentation
Individual Contributions (Demo 1).xlsx // Contribution table for demo 1
Technical Documentation.pdf // Technical Documentation
User Documentation.pdf // User Documentation
6_uml_design/ // Folder for UML diagrams (created using UMLet)
check_obstacles.png // CheckObstacles sequence diagram
class_diagram.png // Class diagram
domain_model.png // Domain model
get_location.png // GetLocation sequence diagram
getData.png // GetData sequence diagram
getStatus.png // GetStatus sequence diagram
moveDrone.png // MoveDrone sequence diagram
package_diagram.png // Package diagram
use_case_diagram.png // Use case diagram
.gitattributes // Formatting rules for GitHub repo
index.html // Main web file for about page
README.md // The README file you're looking at!
For more information, please read our technical documentation and our user documentation.