PyQT GUI + ROS melodic get freezing

asked 2022-08-27 07:38:12 -0500

jenanaputra gravatar image

I tried to make a GUI in ROS melodic using PyQT. I tried monitoring my robot's attitude by subscribing to the topics and showing the values using LCDNumber. But, I got an issue when I was running the GUI. It is freezing after I run it for over 20 minutes. Any suggestion for this issue ?

I also attached my code file below :

#!/usr/bin/env python                                                                                                                                                import rospy                                                                                                                                                                     from std_msgs.msg import Int64, Float32, Float64                                                                                                              from gb_msgs.msg import Valeport_Altimeter                                                                                                                    from cola2_msgs.msg import LinkquestDvl                                                                                                                          from gb_msgs.msg import Spatial, Gui                                                                                                                               from sensor_msgs.msg import NavSatFix                                                                                                                          import math as mat         

from PyQt5 import QtTest                                                                                                                                                  from PyQt5 import QtCore, QtGui, QtWidgets

import sys
import os
basedir = os.path.dirname(os.path.abspath(__file__))
PATH = basedir + '/Gambar_GUI'
sys.path.insert(0, PATH)
import source_rc

class Ui_Form(object):

def __init__(self) :
    self.x_velo, self.y_velo, self.z_velo = 0.0, 0.0, 0.0
    self.depth_data =  0.0
    self.roll_deg, self.pitch_deg, self.yaw_deg = 0.0, 0.0, 0.0
    self.lat_, self.long_ = 0.0, 0.0

    # surge #
    self.sp_surge, self.actual_surge = 0.0, 0.0

    # mm_pitch #
    self.mm_des, self.mm_actual = 0, 0

    # mm_roll #
    self.sp_roll, self.actual_roll = 0.0, 0.0

    #  yaw #
    self.sp_yaw, self.actual_yaw = 0.0, 0.0

    # heave #
    self.heave_ = 0.0

    # battery #
    self.volt_, self.cur_ = 0.0, 0.0

    self.status_ = 0

    rospy.Subscriber('/gather_gui', Gui, self.callback_)
    self.pub = rospy.Publisher("/status", Int64, queue_size=10)



    def callback_(self, data) :
        self.x_velo = round(data.velocity_x,4)
        self.y_velo = round(data.velocity_y,4)
        self.z_velo = round(data.velocity_z,4)
        self.depth_data = round(data.depth_data,4)
        self.roll_deg = round(data.roll_data,4)
        self.pitch_deg = round(data.pitch_data,4)
        self.yaw_deg = round(data.yaw_data,4)
        self.lat_ = round(data.lat,8)
        self.long_ = round(data.long,8)
        self.callback_print()

    def callback_print(self) :
        # Showing the value into GUI whenever data has been subscribed #
        self.lcdNumber.display(self.x_velo) 
        self.lcdNumber_2.display(self.y_velo) 
        self.lcdNumber_3.display(self.z_velo )
        # # calculate surge #
        # self.actual_surge = mat.sqrt(pow(data.velocity_x,2) + pow(data.velocity_y,2))

        self.lcdNumber_4.display(self.depth_data)
        self.lcdNumber_5.display(self.roll_deg ) 
        self.lcdNumber_6.display(self.pitch_deg ) 
        self.lcdNumber_7.display(self.yaw_deg )
        self.lcdNumber_8.display(self.lat_) 
        self.lcdNumber_9.display(self.long_)





    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1850, 868)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        Form.setFont(font)
        Form.setStyleSheet("QWidget{\n"
"    background-color:\"#0D083B\"\n"
"}")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(10, 20, 151, 61))
        self.label.setStyleSheet("image: url(:/newPrefix/auv-2.png);")
        self.label.setText("")
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(1660, 850, 191, 17))
        self.label_2.setStyleSheet("QLabel{\n"
"    color:\"white\"\n"
"}")
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(Form)
        self.label_3.setGeometry(QtCore.QRect(210, 100, 141, 61))
        font = QtGui.QFont()
        font.setPointSize(25)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setStyleSheet("QLabel{\n"
"   color:\"white\"\n"
"}")
        self.label_3.setAlignment(QtCore.Qt ...
(more)
edit retag flag offensive close merge delete