gabrielsong9674 / Avatar-Grace

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Contributors Forks Stargazers Issues MIT License


Logo

Avatar

An application of Machine Learning on brainwave donations in order to remotely pilot a drone in real-time through brainwave reading.

Explore the docs »

Get help in the Wiki »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

This is an open source project from the Cloud Computing Club of Saint Cloud State University. Brainwaves are read using an OpenBCI headset. These brainwaves are sent to a server and randomly renamed and dated for privacy. After shuffling, the data is loaded into Spark where it is processed and a piloting prediction is made. A client-side request reads the most recent prediction and instructs the drone for its next action.

Institutional Review Board

Brainwave collection is considered human subject donation, and this project is compliant with the policies of the IRB .

(back to top)

Built With

(back to top)

Getting Started

There several components to the software. The server directory handles operations needed for storing data and generating ML models. The brainwave-prediction-app directory is operations to complete a live reading, receive a prediction, and then pilot the drone.

Prerequisites

Equipment

OpenBCI Headset with Cyton 16 Channel board

DJI Tello Edu Drone

Installation

Clone the repo (use sparse checkout if only wanting to run the client app for live demos)

git clone https://github.com/3C-SCSU/Avatar.git

(back to top)

Usage

How to run a live demo

Steps:

  1. On the VPS, install and launch the server.py file. It can be run from the command line with the command:

    python server.py
  2. Using the OpenBCI software, test the connections on the headset for the person wearing it. Adjust as necessary. Try and make all connections “Not Railed”

  3. Locally, launch the GUI application using either an IDE play button or from terminal

    python GUI.py
  • Note the relative pathing to the images folder and launch with both a terminal and local files appropriately pathed
  • If you receive a module error it can be installed using pip i.e.
    pip3 install <module name>
  1. In the GUI select Brainwave Reading

  2. Future implementations - select between Manual Control or AutoPilot

  3. Connect the computer to the Drone’s wifi and press the Connect button in the GUI to connect to the drone.

  4. Give the person wearing the headset a 5 second countdown and instructions on which drone action to think about.

  5. Press Read my Mind to automatically initiate a 10 second reading. This triggers the brainflow1.py file and sends the data to the server.py endpoint. The results of the prediction will automatically be displayed in the output table of the GUI. (The endpoint IP may need to be manually configured until environment variables are set up to handle this operation)

  6. If the prediction is correct, press the Execute button to have the drone perform the action. If the prediction is wrong, override the drone action by typing an alternative in the text input box and press Not what I was thinking…

  7. At any time, press “Keep Drone Alive” to attempt to maintain the drone’s hovering while it waits for a prediction command. (Note: This isn’t working well and will need to be improved)

This section will be updated further as the project progresses.

Roadmap

  • Read Brainwaves using OpenBCI software
    • Configure workstation Chromebooks for compatibility with BCI dongle
  • Encrypted File Transfer from workstation to VPS
  • Automated file shuffling
  • Containerize VPS applications
  • Implement K8s
  • Connect Spark with GCP bucket
  • Configure Spark with Delta Lake
  • Create Application to Control Drone
    • GUI
    • Drone Control
    • Headset Data transferring
    • Connect with ML Predictions

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

University Contributions

If you have been informed that your submission for contribution was selected and approved by the Cloud Computing Club, follow the below steps to add it to the project and receive the bounty.

  1. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  2. Name the feature branch using format feature-bounty ex. file_shuffler-bounty
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request and select a review from the list of Collaborators.
  6. Update the Wiki with an explanation of your added feature.

External Contributions

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Pull requests will be rieviewed and merged:

Community Members by Category

Members by promotion and merit voted in the weekly's #3C meeting:

  1. Sporadic contributors: any developer who decides to start contributing to the project's code base.

  2. Committers: contributors promoted above the so-called sporadic contributors. To become a committer, the person must get 20 patches approved. When becoming a committer, then the committer will review and support code submitted from sporadic contributors

  3. Reviewers: are generally either the founding developers of the project - like initial administrator developers; or contributors who become committers, who then, after 50 patch contributions to the project's code base, are promoted to the status of reviewers. Reviewers will decide and review any conflict in code contributions to the project.

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Cloud Computing Club 3c.scsu@gmail.com

Discord: https://discord.gg/mxbQ7HpPjq

Project Link: https://github.com/3C-SCSU/Avatar

(back to top)

Acknowledgments

  • Dr. A. Cavalcanti - Faculty Advisor for #3C-SCSU

(back to top)

About

License:MIT License


Languages

Language:Jupyter Notebook 62.6%Language:Python 28.4%Language:PureBasic 6.8%Language:Dockerfile 2.1%Language:HTML 0.1%