2017-11-11 99 views
0

我正在爲使用python的rqt內部的機器人設計UI插件。基本上,有一個按鈕稱爲「轉到主頁」按鈕。點擊此按鈕後,我想移動機器人。請注意,無論何時單擊此按鈕,機器人都會移動,但GUI在一段時間內變得無響應,這很明顯是通過編寫代碼的方式。請看下面的代碼片段:rqt ROS中的線程Python

import rospy 
from robot_controller import RobotController 

from qt_gui.plugin import Plugin 
from python_qt_binding.QtGui import QWidget, QVBoxLayout, QPushButton 
class MyPlugin(Plugin): 
    def __init__(self, context): 
     super(MyPlugin, self).__init__(context) 

     # Give QObjects reasonable names 
     self.setObjectName('MyPlugin') 

     # Create QWidget 
     self._widget = QWidget() 
     self._widget.setObjectName('MyPluginUi') 

     # Create push button and connect a function 
     self._goto_home_button = QPushButton('Goto Home') 
     self._goto_home_button.clicked.connect(self.goto_home) 
     self._vertical_layout = QVBoxLayout() 
     self._vertical_layout.addWidget(self._goto_home_button.) 
     self._widget.setLayout(self._vertical_layout) 
     context.add_widget(self._widget) 

     # Create robot object to move robot from GUI 
     self._robot = RobotController() 

    def goto_home(self): 
     self._robot.move_to_joint_angles(self._joint_angles) 

我想在這裏實現一個線程。更加珍貴的是,如何使用rqt中的線程調用self._robot.move_to_joint_angles(self._joint_angles)。請注意,我在Ubuntu 14.04 LTS PC上使用ROS Indigo中的Python 2.7。

回答

0

我找到了解決方法。請參閱下面的代碼片段:

import thread 
thread.start_new_thread(self.baxter.move_to_joint_angles, (self.home_pose,)) 

有沒有更好的方法來做到這一點?