Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Driver

Approver

Contributors

Informed

Objective

Due date

Key outcomes

Status

Status
titlenot started
/
Status
colourYellow
titlein progress
/
Status
colourGreen
titlecomplete

\uD83E\uDD14 Problem Statement

We need to be able to communicate from the ground with the drone. For the 2022-2023 competition certain requirements must be fulfilled.

🎯 Scope

Must have:

  • Waypoint input

  • et cetera

Nice to have:

  • Nice interface

Not in scope:

\uD83D\uDDD3 Timeline

Roadmap Planner
maplinks
timelinetrue
source%7B%22title%22%3A%22Roadmap%20Planner%22%2C%22timeline%22%3A%7B%22startDate%22%3A%222021-10-15%2000%3A00%3A00%22%2C%22endDate%22%3A%222022-06-15%2000%3A00%3A00%22%2C%22displayOption%22%3A%22MONTH%22%7D%2C%22lanes%22%3A%5B%7B%22title%22%3A%22Lane%201%22%2C%22color%22%3A%7B%22lane%22%3A%22%23d04437%22%2C%22bar%22%3A%22%23dc7369%22%2C%22text%22%3A%22%23ffffff%22%2C%22count%22%3A1%7D%2C%22bars%22%3A%5B%7B%22title%22%3A%22Feature%201%22%2C%22description%22%3A%22This%20is%20the%20first%20bar.%22%2C%22startDate%22%3A%222021-10-23%2017%3A06%3A32%22%2C%22duration%22%3A2%2C%22rowIndex%22%3A1%2C%22id%22%3A%2299880195-7faf-4b2f-ac44-a38516c4cad5%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22title%22%3A%22Feature%202%22%2C%22description%22%3A%22This%20is%20the%20second%20bar.%22%2C%22startDate%22%3A%222022-01-01%2014%3A43%3A57%22%2C%22duration%22%3A1.4356435643564356%2C%22rowIndex%22%3A2%2C%22id%22%3A%22604cae13-314a-4848-b142-95d3570aa3db%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A0%2C%22startDate%22%3A%222022-03-08%2001%3A25%3A32%22%2C%22id%22%3A%22739eee1a-3ad0-4154-a8a7-d630942c1b71%22%2C%22title%22%3A%22Feature%203%22%2C%22description%22%3A%22%22%2C%22duration%22%3A1.4356435643564356%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A3%2C%22startDate%22%3A%222022-04-30%2002%3A36%3A49%22%2C%22id%22%3A%22d2721513-87bf-4ea5-9981-d3971248c8f5%22%2C%22title%22%3A%22Feature%204%22%2C%22description%22%3A%22%22%2C%22duration%22%3A1.6633663366336633%2C%22pageLink%22%3A%7B%7D%7D%5D%7D%2C%7B%22title%22%3A%22Lane%202%22%2C%22color%22%3A%7B%22lane%22%3A%22%233b7fc4%22%2C%22bar%22%3A%22%236c9fd3%22%2C%22text%22%3A%22%23ffffff%22%2C%22count%22%3A1%7D%2C%22bars%22%3A%5B%7B%22title%22%3A%22iOS%20app%22%2C%22description%22%3A%22This%20is%20the%20third%20bar.%22%2C%22startDate%22%3A%222021-10-13%2021%3A23%3A10%22%2C%22duration%22%3A2.5%2C%22rowIndex%22%3A0%2C%22id%22%3A%22b10f9e72-539a-4a31-88bd-746bd09d7f1e%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A1%2C%22startDate%22%3A%222022-03-27%2003%3A08%3A19%22%2C%22id%22%3A%22e329a842-d49c-4f39-83ee-4d7af06dece7%22%2C%22title%22%3A%22Android%20app%22%2C%22description%22%3A%22%22%2C%22duration%22%3A1.683168316831683%2C%22pageLink%22%3A%7B%7D%7D%5D%7D%5D%2C%22markers%22%3A%5B%7B%22title%22%3A%22Marker%201%22%2C%22markerDate%22%3A%222018-10-05%2007%3A07%3A43%22%7D%2C%7B%22markerDate%22%3A%222019-03-15%2000%3A00%3A00%22%2C%22title%22%3A%22Marker%22%7D%5D%7D
pagelinks
titleRoadmap%20Planner
hashbf72b0d2e5ea24888f6179cf74c6606f

\uD83D\uDEA9 Milestones and deadlines

Milestone

Owner

Deadline

Status

Finalize figma design

Implement sekeleton Program with 4 pages and a alert box

Get map activated

Home page Implementation

Harini Karthik

Motor Implementation

Manuel Stefan Christopher

Setup Page Implementation

Alex Yang

Logging Page Implementation

Amy Hu

Alert box Implementation

\uD83D\uDD17 Reference materials

PyQt5 threading:

https://www.youtube.com/watch?v=k5tIk7w50L4

This is an example of a simple GUI interface with a rasberry pi, displaying data in real time. This should give you and idea of the general architecture that is required to have this project completed

Code Block
import time
import Adafruit_DHT
from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)


class Ui_Room1(object):

    def AffichT(self):  
        sensor=11
        pin=4
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        if temperature is not None:
            print('Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity))
            return str(temperature)
        else:
            print('Failed to get reading. Try again!')
            sys.exit(1)

    def AffichH(self):            
        sensor=11
        pin=4
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        if humidity is not None:
            return str(humidity)
        else:
            print('Failed to get reading. Try again!')
            sys.exit(1)

    def setupUi(self, Room1):

        Room1.setObjectName(_fromUtf8("Room1"))
        Room1.resize(674, 422)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Room1.sizePolicy().hasHeightForWidth())
        Room1.setSizePolicy(sizePolicy)
        Room1.setMouseTracking(False)
        Room1.setStyleSheet(_fromUtf8("image: url(:/gradient1/Images/gradient1.png);\n"
"\n"
""))
        self.centralwidget = QtGui.QWidget(Room1)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
       self.centralwidget.setSizePolicy(sizePolicy)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.graphicsView = QtGui.QGraphicsView(self.centralwidget)
        self.graphicsView.setGeometry(QtCore.QRect(610, 30, 41, 41))
        self.graphicsView.setStyleSheet(_fromUtf8("background-color: transparent;\n"
"background-image: url(:/gradient1/Images/logout.png);\n"
"background-repeat: no;"))
        self.graphicsView.setFrameShape(QtGui.QFrame.NoFrame)
        self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
        self.label = QtGui.QLabel(self.centralwidget)
       self.label.setGeometry(QtCore.QRect(270, 50, 131, 31))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setPointSize(18)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setStyleSheet(_fromUtf8("image : none;\n"
"color: #fff;\n"
"background-color: transparent;"))
        self.label.setObjectName(_fromUtf8("label"))
        self.label_2 = QtGui.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(140, 170, 101, 61))
        self.label_2.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
        self.label_2.setObjectName(_fromUtf8("label_2"))
        self.label_3 = QtGui.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(140, 260, 101, 61))
        self.label_3.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
        self.label_3.setObjectName(_fromUtf8("label_3"))
        self.label_4 = QtGui.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(300, 170, 101, 61))
        self.label_4.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
        temp = self.AffichT()
        self.label_4.setText(_fromUtf8(temp+"°"))
        self.label_4.setObjectName(_fromUtf8("label_4"))
        self.label_5 = QtGui.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(300, 260, 101, 61))
        self.label_5.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
        hum = self.AffichH()
        self.label_5.setText(_fromUtf8(hum)+"%")
        self.label_5.setObjectName(_fromUtf8("label_5"))
        Room1.setCentralWidget(self.centralwidget)
        self.retranslateUi(Room1)
        QtCore.QMetaObject.connectSlotsByName(Room1)


    def retranslateUi(self, Room1):
        Room1.setWindowTitle(_translate("Room1", "Parents Room", None))
        self.label.setText(_translate("Room1", "Welcome !", None))
        self.label_2.setText(_translate("Room1", "Température:", None))
        self.label_3.setText(_translate("Room1", "Humidité:", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Room1 = QtGui.QMainWindow()
    ui = Ui_Room1()
    ui.setupUi(Room1)
    Room1.show()
    sys.exit(app.exec_())`

❓Questions

  • What will the ground station look like? Are we also displaying video data or will that be on a separate interface?

  • Do we want to dockerize this?