Skip to content
This repository was archived by the owner on Feb 21, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 13 additions & 21 deletions src/tools/uav_viewer_py/gui/GUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
self.teleop = TeleopWidget(self)
self.teleop=TeleopWidget(self,0)
self.teleop1=TeleopWidget(self,1)
self.tlLayout.addWidget(self.teleop)
self.tlLayout_1.addWidget(self.teleop1)
self.teleop.setVisible(True)

self.record = False
Expand All @@ -45,9 +47,6 @@ def __init__(self, parent=None):
self.cameraCheck.stateChanged.connect(self.showCameraWidget)
self.sensorsCheck.stateChanged.connect(self.showSensorsWidget)

self.rotationDial.valueChanged.connect(self.rotationChange)
self.altdSlider.valueChanged.connect(self.altitudeChange)

self.cameraWidget = CameraWidget(self)
self.sensorsWidget = SensorsWidget(self)

Expand Down Expand Up @@ -98,10 +97,9 @@ def updateGUI(self):
def stopClicked(self):
if self.record == True:
self.extra.record(False)
self.rotationDial.setValue(self.altdSlider.maximum() / 2)
self.altdSlider.setValue(self.altdSlider.maximum() / 2)
self.cmdvel.sendCMDVel(0, 0, 0, 0, 0, 0)
self.teleop.stopSIG.emit()
self.teleop1.stopSIG.emit()

def takeOffClicked(self):
if (self.takeoff == True):
Expand Down Expand Up @@ -141,28 +139,22 @@ def showSensorsWidget(self, state):
def closeSensorsWidget(self):
self.sensorsCheck.setChecked(False)

def rotationChange(self, value):
value = (1.0 / (self.rotationDial.maximum() / 2)) * (value - (self.rotationDial.maximum() / 2))
self.rotValue.setText('%.2f' % value)
self.cmdvel.setYaw(value)
self.cmdvel.sendVelocities()

def altitudeChange(self, value):
value = (1.0 / (self.altdSlider.maximum() / 2)) * (value - (self.altdSlider.maximum() / 2))
self.altdValue.setText('%.2f' % value)
self.cmdvel.setVZ(value)
self.cmdvel.sendVelocities()

def setXYValues(self, newX, newY):
def setXYValues(self,newX,newY):
self.XValue.setText('%.2f' % newX)
self.YValue.setText('%.2f' % newY)
self.YValue.setText('%.2f' % -newY)
self.cmdvel.setVX(-newY)
self.cmdvel.setVY(-newX)
self.cmdvel.sendVelocities()

def setZYawValues(self,newZ,newYaw):
self.altdValue.setText('%.2f' % -newZ)
self.rotValue.setText('%.2f' % newYaw)
self.cmdvel.setVZ(-newZ)
self.cmdvel.setYaw(newYaw)
self.cmdvel.sendVelocities()

def closeEvent(self, event):
self.camera.stop()
self.navdata.stop()
self.pose.stop()
event.accept()

83 changes: 44 additions & 39 deletions src/tools/uav_viewer_py/gui/teleopWidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,97 +17,102 @@
# Alberto Martin Florido <almartinflorido@gmail.com>
#
import resources_rc
import math
from PyQt5.QtGui import QImage, QPainter, QPen
from PyQt5.QtCore import pyqtSignal, QPointF, Qt, QPoint
from PyQt5.QtWidgets import QWidget, QGridLayout


class TeleopWidget(QWidget):
stopSIG = pyqtSignal()

def __init__(self, winParent):
stopSIG=pyqtSignal()

def __init__(self,winParent,num):
super(TeleopWidget, self).__init__()
self.winParent = winParent
self.winParent=winParent
self.line = QPointF(0, 0);
self.qimage = QImage()
self.qimage=QImage()
self.qimage.load(':images/ball.png')
self.stopSIG.connect(self.stop)
self.initUI()
self.id = num

def initUI(self):
layout = QGridLayout()
layout=QGridLayout()
self.setLayout(layout)
self.setAutoFillBackground(True)
p = self.palette()
p.setColor(self.backgroundRole(), Qt.black)
self.setPalette(p)
self.resize(300, 300)
self.setMinimumSize(300, 300)
self.resize(300,300)
self.setMinimumSize(300,300)

def stop(self):
self.line = QPointF(0, 0);
self.repaint();

def mouseMoveEvent(self, e):
def mouseMoveEvent(self,e):
if e.buttons() == Qt.LeftButton:
x = e.x() - self.width() / 2
y = e.y() - self.height() / 2
x = e.x()-self.width()/2
y = e.y()-self.height()/2
self.line = QPointF(x, y)
self.repaint()

def paintEvent(self, e):

_width = self.width()
_height = self.height()


width = 2

painter = QPainter(self)
painter=QPainter(self)

pen = QPen(Qt.blue, width)
painter.setPen(pen)

# Centro del widget
painter.translate(QPoint(_width / 2, _height / 2))
#Centro del widget
painter.translate(QPoint(_width/2, _height/2))

# eje
#eje
painter.drawLine(QPointF(-_width, 0),
QPointF(_width, 0))
QPointF( _width, 0))

painter.drawLine(QPointF(0, -_height),
QPointF(0, _height))
QPointF(0, _height))

# con el raton
#con el raton
pen = QPen(Qt.red, width)
painter.setPen(pen)

# Comprobamos que el raton este dentro de los limites
if abs(self.line.x() * 2) >= self.size().width():
if self.line.x() >= 0:
self.line.setX(self.size().width() / 2)
elif self.line.x() < 0:
self.line.setX((-self.size().width() / 2) + 1)
#Comprobamos que el raton este dentro de los limites
if abs(self.line.x()*2) >= self.size().width():
if self.line.x()>=0:
self.line.setX(self.size().width()/2)
elif self.line.x()<0:
self.line.setX((-self.size().width()/2)+1)

if abs(self.line.y() * 2) >= self.size().height():
if self.line.y() >= 0:
self.line.setY(self.size().height() / 2)
elif self.line.y() < 0:
self.line.setY((-self.size().height() / 2) + 1)
if abs(self.line.y()*2) >= self.size().height():
if self.line.y()>=0:
self.line.setY(self.size().height()/2)
elif self.line.y()<0:
self.line.setY((-self.size().height()/2)+1)

painter.drawLine(QPointF(self.line.x(), -_height),
QPointF(self.line.x(), _height))
QPointF(self.line.x(), _height))

painter.drawLine(QPointF(-_width, self.line.y()),
QPointF(_width, self.line.y()))
QPointF( _width, self.line.y()))

# print "x: %f y: %f" % (self.line.x(), self.line.y())
#print "x: %f y: %f" % (self.line.x(), self.line.y())

v_normalized = (1.0 / (self.size().height() / 2)) * self.line.y()
v_normalized = (1.0/(self.size().height()/2)) * self.line.y()
v_normalized = float("{0:.2f}".format(v_normalized))
w_normalized = (1.0 / (self.size().width() / 2)) * self.line.x()
w_normalized = (1.0/(self.size().width()/2)) * self.line.x()
w_normalized = float("{0:.2f}".format(w_normalized))

# print "v: %f w: %f" % (v_normalized,w_normalized)
self.winParent.setXYValues(w_normalized, v_normalized)
painter.drawImage(self.line.x() - self.qimage.width() / 2, self.line.y() - self.qimage.height() / 2,
self.qimage);

#print "v: %f w: %f" % (v_normalized,w_normalized)
if self.id == 0:
self.winParent.setZYawValues(v_normalized,w_normalized*math.pi)
elif self.id == 1:
self.winParent.setXYValues(w_normalized,v_normalized)
painter.drawImage(self.line.x()-self.qimage.width()/2, self.line.y()-self.qimage.height()/2, self.qimage);
69 changes: 39 additions & 30 deletions src/tools/uav_viewer_py/gui/ui_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,53 @@
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(660, 370)
MainWindow.setMinimumSize(QtCore.QSize(660, 370))
MainWindow.setMaximumSize(QtCore.QSize(660, 370))
MainWindow.resize(790, 550)
MainWindow.setMinimumSize(QtCore.QSize(790, 550))
MainWindow.setMaximumSize(QtCore.QSize(790, 550))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.takeoffButton = QtWidgets.QPushButton(self.centralwidget)
self.takeoffButton.setGeometry(QtCore.QRect(470, 30, 161, 41))
self.takeoffButton.setGeometry(QtCore.QRect(80, 380, 220, 41))
self.takeoffButton.setObjectName("takeoffButton")
self.altdSlider = QtWidgets.QSlider(self.centralwidget)
self.altdSlider.setGeometry(QtCore.QRect(400, 30, 19, 311))
self.altdSlider.setMaximum(100)
self.altdSlider.setProperty("value", 49)
self.altdSlider.setOrientation(QtCore.Qt.Vertical)
self.altdSlider.setObjectName("altdSlider")

self.stopButton = QtWidgets.QPushButton(self.centralwidget)
self.stopButton.setGeometry(QtCore.QRect(470, 80, 161, 41))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/images/stop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.stopButton.setIcon(icon)
self.stopButton.setGeometry(QtCore.QRect(80, 425, 220, 51))
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/images/stop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.stopButton.setIcon(icon1)
self.stopButton.setObjectName("stopButton")

self.windowsLabel = QtWidgets.QLabel(self.centralwidget)
self.windowsLabel.setGeometry(QtCore.QRect(540, 190, 71, 21))
self.windowsLabel.setGeometry(QtCore.QRect(350, 380, 71, 21))
self.windowsLabel.setObjectName("windowsLabel")
self.cameraCheck = QtWidgets.QCheckBox(self.centralwidget)
self.cameraCheck.setGeometry(QtCore.QRect(540, 220, 94, 26))
self.cameraCheck.setGeometry(QtCore.QRect(350, 410, 94, 26))
self.cameraCheck.setObjectName("cameraCheck")
self.sensorsCheck = QtWidgets.QCheckBox(self.centralwidget)
self.sensorsCheck.setGeometry(QtCore.QRect(540, 250, 94, 26))
self.sensorsCheck.setGeometry(QtCore.QRect(350, 440, 94, 26))
self.sensorsCheck.setObjectName("sensorsCheck")

self.altdLabel = QtWidgets.QLabel(self.centralwidget)
self.altdLabel.setGeometry(QtCore.QRect(390, 340, 51, 21))
self.altdLabel.setGeometry(QtCore.QRect(220, 340, 61, 21))
self.altdLabel.setObjectName("altdLabel")

self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(20, 30, 361, 301))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.tlLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.tlLayout.setObjectName("tlLayout")
self.rotationDial = QtWidgets.QDial(self.centralwidget)
self.rotationDial.setGeometry(QtCore.QRect(440, 220, 50, 64))
self.rotationDial.setMaximum(100)
self.rotationDial.setProperty("value", 49)
self.rotationDial.setObjectName("rotationDial")
####################NUEVO####################
self.verticalLayoutWidget_1 = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget_1.setGeometry(QtCore.QRect(400, 30, 361, 301))
self.verticalLayoutWidget_1.setObjectName("verticalLayoutWidget_1")
self.tlLayout_1 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_1)
self.tlLayout_1.setObjectName("tlLayout_1")
#######################

self.rotationLabel = QtWidgets.QLabel(self.centralwidget)
self.rotationLabel.setGeometry(QtCore.QRect(440, 280, 65, 21))
self.rotationLabel.setGeometry(QtCore.QRect(350, 340, 65, 21))
self.rotationLabel.setObjectName("rotationLabel")

self.XLabel = QtWidgets.QLabel(self.centralwidget)
self.XLabel.setGeometry(QtCore.QRect(20, 340, 21, 21))
self.XLabel.setObjectName("XLabel")
Expand All @@ -71,31 +73,38 @@ def setupUi(self, MainWindow):
self.YValue.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.YValue.setObjectName("YValue")
self.altdValue = QtWidgets.QLabel(self.centralwidget)
self.altdValue.setGeometry(QtCore.QRect(390, 10, 41, 21))
self.altdValue.setGeometry(QtCore.QRect(280, 340, 41, 21))
self.altdValue.setAlignment(QtCore.Qt.AlignCenter)
self.altdValue.setObjectName("altdValue")
self.rotValue = QtWidgets.QLabel(self.centralwidget)
self.rotValue.setGeometry(QtCore.QRect(445, 200, 41, 21))
self.rotValue.setGeometry(QtCore.QRect(430, 340, 41, 21))
self.rotValue.setAlignment(QtCore.Qt.AlignCenter)
self.rotValue.setObjectName("rotValue")

self.resetButton = QtWidgets.QPushButton(self.centralwidget)
self.resetButton.setGeometry(QtCore.QRect(470, 130, 161, 41))
self.resetButton.setGeometry(QtCore.QRect(80, 480, 220, 41))
self.resetButton.setObjectName("resetButton")
self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(480, 380, 150, 150))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.logoLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.logoLayout.setSpacing(0)
self.logoLayout.setObjectName("logoLayout")
MainWindow.setCentralWidget(self.centralwidget)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Uav Viewer"))
MainWindow.setWindowTitle(_translate("MainWindow", "UAV Viewer"))
self.takeoffButton.setText(_translate("MainWindow", "Take off"))
self.stopButton.setText(_translate("MainWindow", "Stop"))
self.windowsLabel.setText(_translate("MainWindow", "Windows:"))
self.cameraCheck.setText(_translate("MainWindow", "Camera"))
self.sensorsCheck.setText(_translate("MainWindow", "Sensors"))
self.altdLabel.setText(_translate("MainWindow", "Altitude"))
self.rotationLabel.setText(_translate("MainWindow", "Rotation"))
self.altdLabel.setText(_translate("MainWindow", "Altitude:"))
self.rotationLabel.setText(_translate("MainWindow", "Rotation:"))
self.XLabel.setText(_translate("MainWindow", "X:"))
self.YLabel.setText(_translate("MainWindow", "Y:"))
self.XValue.setText(_translate("MainWindow", "0"))
Expand Down
Binary file removed src/tools/uav_viewer_py/resources/play.png
Binary file not shown.
1 change: 0 additions & 1 deletion src/tools/uav_viewer_py/resources/resources.qrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<RCC>
<qresource prefix="images">
<file>ball.png</file>
<file>play.png</file>
<file>stop.png</file>
</qresource>
</RCC>