基于PyQt5的ROS移动机器人的人机交互UI界面

 

百度云链接失效了,上传了github:https://github.com/1508912767/ros_car 和https://github.com/1508912767/ros_car_py


每次做实验的时候,手动rosrun,roslaunch太过麻烦,通过 ui界面的话,只需要点点按钮就可以啦

ros_car_py包括运动,建图,导航,ui界面的程序全部打包上传,相互依赖关系见ros_car_py包。

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import os
import paramiko


# 控制小车运动,启动服务器线程
class WorkThread(QThread):
    """
    使用 pyqtsignalo函数创建信号时,信号可以传递多个参数,并指定信号传递参
    数的类型,参数类型是标准的 Python数据类型(字符串、日期、布尔类型、数字、
    列表、元组和字典)
    """
    # 写在这里是有讲究的,类外也用到了这个trigger
    trigger = pyqtSignal()

    def __int__(self):
        super(WorkThread, self).__init__()

    def run(self):
        os.system(
            "gnome-terminal -x bash -c 'source ~/catkin_ws/devel/setup.bash; roslaunch ros_car_py car_running.launch'"
        )
        # 循环完毕后发出信号
        self.trigger.emit()


# 使用ssh连接板子,启动客户端线程
class WorkThreadA(QThread):
    trigger = pyqtSignal()

    def __int__(self):
        super(WorkThreadA, self).__init__()
        self.hostname = "192.168.7.2"
        self.port = 22
        self.username = "root"
        self.password = ""
        self.execmd = "python"

    def run(self):
        s = paramiko.SSHClient()
        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        s.connect(hostname=self.hostname, port=self.port, username=self.username, password=self.password)
        stdin, stdout, stderr = s.exec_command(self.execmd)
        stdin.write("Y")  # Generally speaking, the first connection, need a simple interaction.
        # print(stdout.read())
        s.close()
        # 循环完毕后发出信号
        self.trigger.emit()

# 启动建图线程
class WorkThreadB(QThread):
    trigger = pyqtSignal()

    def __int__(self):
        super(WorkThreadB, self).__init__()

    def run(self):
        os.system(
            "gnome-terminal -x bash -c 'source ~/catkin_ws/devel/setup.bash; roslaunch ros_car_py car_gmapping.launch'"
        )
        # 循环完毕后发出信号
        self.trigger.emit()

# 启动导航线程
class WorkThreadC(QThread):
    trigger = pyqtSignal()

    def __int__(self):
        super(WorkThreadC, self).__init__()

    def run(self):
        os.system(
           "gnome-terminal -x bash -c 'source ~/catkin_ws/devel/setup.bash; roslaunch ros_car_py car_navigation.launch'"
        )
        # 循环完毕后发出信号
        self.trigger.emit()

# 显示小车状态,速度信息窗口
class ThirdWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("小车的速度状态")
        self.resize(600, 300)
        self.center()

        # 实例化指针
        self.pointer = QPixmap()     
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值