def initThresh(self): # Low and Critical decide what colors the boxes take for # Good (Green), Warning (Yellow), and Critical (Red) # If the parameter server has not set these values then we use the DEFAULT # values as of Oct. 2017 which are 26 and 20 # The GUI notifies that it is using defualt values and will continually # check to see if the params have been set, as symboloized by self.gotParams self.gotParams = True self.lowThreshold = 26 self.criticalThreshold = 20 try: self.lowThreshold = rospy.get_param('battery-voltage/low') self.criticalThreshold = rospy.get_param( 'battery-voltage/critical') except: print("Low and Critical Voltage not set, Low: 26 Critical:20") self.lowThreshold = 26 self.criticalThreshold = 20 self.gotParams = False # Thresh is a box in the top right of the GUI that displays Threshold values and box layouts # self.labelThresh = QLabel(self) # self.labelThresh.setGeometry(QtCore.QRect((150+2*self.boxWidth), (10), self.boxWidth, self.boxHeight)) threshText = "Low Threshold: {} \nCritical: {}".format( self.lowThreshold, self.criticalThreshold) self.labelThresh.setText(threshText) self.labelThresh.setStyleSheet( "QLabel { background-color : white; color : black; }") threshFont = QtGui.QFont("Times", (self.fontSize) / 3, QtGui.QFont.Bold) self.labelThresh.setFont(threshFont)
def __init__(self, filename, parent=None): self.parent = parent QtGui.QTextEdit.__init__(self, parent) self.setObjectName(' - '.join(['Editor', filename])) font = QtGui.QFont() font.setFamily("Fixed".decode("utf-8")) font.setPointSize(12) self.setFont(font) self.setLineWrapMode(QtGui.QTextEdit.NoWrap) self.setTabStopWidth(25) self.setAcceptRichText(False) self.setCursorWidth(2) self.setFontFamily("courier new") self.setProperty("backgroundVisible", True) self.regexp_list = [QtCore.QRegExp("\\binclude\\b"), QtCore.QRegExp("\\btextfile\\b"), QtCore.QRegExp("\\bfile\\b"), QtCore.QRegExp("\\bvalue=.*pkg:\/\/\\b"), QtCore.QRegExp("\\bvalue=.*package:\/\/\\b"), QtCore.QRegExp("\\bvalue=.*\$\(find\\b")] self.filename = filename self.file_info = None if self.filename: f = QtCore.QFile(filename); if f.open(QtCore.QIODevice.ReadOnly | QtCore.QIODevice.Text): self.file_info = QtCore.QFileInfo(filename) self.setText(unicode(f.readAll(), "utf-8")) self.path = '.' # enables drop events self.setAcceptDrops(True)
def resizeFont(self): # gets new window dimensions, the self is needed because we are referencing # our VoltageWidget class height = VoltageWidget.frameGeometry(self).height() # The ratio change in width and height caused by the resize heightRatio = height / self.height # update to current self.height = height # Fonts like 16, 24 are references to height of letters. So I thought it would # Make sense to change font size proportionally to changes in window height self.fontSize = self.fontSize * heightRatio newfont = QtGui.QFont("Times", self.fontSize, QtGui.QFont.Bold) self.labelMain.setFont(newfont) self.labelFL.setFont(newfont) self.labelFR.setFont(newfont) self.labelBL.setFont(newfont) self.labelBR.setFont(newfont) threshFont = QtGui.QFont("Times", (self.fontSize) / 3, QtGui.QFont.Bold) self.labelThresh.setFont(threshFont)
def __init__(self, context): super(HalloweenGUI, self).__init__(context) self.setObjectName('HalloweenGUI') self._widget = QWidget() self._widget.setFixedSize(525, 300) self.arm_db = ArmDB() self._tf_listener = TransformListener() # Action/service/message clients or servers switch_srv_name = 'pr2_controller_manager/switch_controller' rospy.loginfo('Waiting for switch controller service...') rospy.wait_for_service(switch_srv_name) self.switch_service_client = rospy.ServiceProxy( switch_srv_name, SwitchController) self.r_joint_names = [ 'r_shoulder_pan_joint', 'r_shoulder_lift_joint', 'r_upper_arm_roll_joint', 'r_elbow_flex_joint', 'r_forearm_roll_joint', 'r_wrist_flex_joint', 'r_wrist_roll_joint' ] self.l_joint_names = [ 'l_shoulder_pan_joint', 'l_shoulder_lift_joint', 'l_upper_arm_roll_joint', 'l_elbow_flex_joint', 'l_forearm_roll_joint', 'l_wrist_flex_joint', 'l_wrist_roll_joint' ] self.all_joint_names = [] self.all_joint_poses = [] self.saved_r_arm_pose = None self.saved_l_arm_pose = None self.lock = threading.Lock() rospy.Subscriber('joint_states', JointState, self.joint_states_cb) # Create a trajectory action client r_traj_controller_name = '/r_arm_controller/joint_trajectory_action' self.r_traj_action_client = SimpleActionClient(r_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for RIGHT arm...' ) self.r_traj_action_client.wait_for_server() l_traj_controller_name = '/l_arm_controller/joint_trajectory_action' self.l_traj_action_client = SimpleActionClient(l_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for LEFT arm...' ) self.l_traj_action_client.wait_for_server() QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.joint_sig.connect(self.joint_sig_cb) large_box = QtGui.QVBoxLayout() arm_box = QtGui.QHBoxLayout() right_arm_box = QtGui.QVBoxLayout() left_arm_box = QtGui.QVBoxLayout() left_arm_box.addItem(QtGui.QSpacerItem(50, 50)) right_arm_box.addItem(QtGui.QSpacerItem(50, 50)) right_arm_box.addWidget(self.create_button('Relax right arm')) right_arm_box.addWidget(self.create_button('Freeze right arm')) left_arm_box.addWidget(self.create_button('Relax left arm')) left_arm_box.addWidget(self.create_button('Freeze left arm')) left_arm_box.addItem(QtGui.QSpacerItem(50, 20)) right_arm_box.addItem(QtGui.QSpacerItem(50, 20)) left_pose_saver = PoseSaver(PoseSaver.LEFT, self) right_pose_saver = PoseSaver(PoseSaver.RIGHT, self) left_arm_box.addWidget( self.create_button("Create left arm pose", left_pose_saver.create_closure())) right_arm_box.addWidget( self.create_button("Create right arm pose", right_pose_saver.create_closure())) left_arm_box.addItem(QtGui.QSpacerItem(50, 20)) right_arm_box.addItem(QtGui.QSpacerItem(50, 20)) # Dropdown boxes for saved poses left_pose_loader = PoseLoader(PoseLoader.LEFT, self) right_pose_loader = PoseLoader(PoseLoader.RIGHT, self) self.combo_box_left = left_pose_loader.create_button() self.combo_box_right = right_pose_loader.create_button() left_arm_box.addWidget(self.combo_box_left) right_arm_box.addWidget(self.combo_box_right) left_pose_option_box = QtGui.QHBoxLayout() right_pose_option_box = QtGui.QHBoxLayout() right_pose_option_box.addWidget(self.create_button('Move to pose (R)')) left_pose_option_box.addWidget(self.create_button('Move to pose (L)')) # Buttons for deleting poses for left/right arms left_pose_option_box.addWidget(self.create_button('Delete pose (L)')) right_pose_option_box.addWidget(self.create_button('Delete pose (R)')) left_arm_box.addLayout(left_pose_option_box) right_arm_box.addLayout(right_pose_option_box) left_arm_box.addItem(QtGui.QSpacerItem(50, 50)) right_arm_box.addItem(QtGui.QSpacerItem(50, 50)) arm_box.addLayout(left_arm_box) arm_box.addItem(QtGui.QSpacerItem(20, 20)) arm_box.addLayout(right_arm_box) large_box.addLayout(arm_box) # Initialize state of saved arm poses for selected dropdowns self.update_saved_l_arm_pose() self.update_saved_r_arm_pose() # Update saved arm pose data on the changing of selected pose self.combo_box_left.connect( self.combo_box_left, QtCore.SIGNAL("currentIndexChanged(QString)"), self.update_saved_l_arm_pose) self.combo_box_right.connect( self.combo_box_right, QtCore.SIGNAL("currentIndexChanged(QString)"), self.update_saved_r_arm_pose) self._widget.setObjectName('HalloweenGUI') self._widget.setLayout(large_box) context.add_widget(self._widget) self._widget.setStyleSheet( "QWidget { image: url(%s) }" % (str(os.path.dirname(os.path.realpath(__file__))) + "/../../arm_gui_bg_large.png")) rospy.loginfo('GUI initialization complete.')
def __init__(self, context): super(PbDGUI, self).__init__(context) self.setObjectName('PbDGUI') self._widget = QWidget() self.speech_cmd_publisher = rospy.Publisher('recognized_command', Command) self.gui_cmd_publisher = rospy.Publisher('gui_command', GuiCommand) rospy.Subscriber('experiment_state', ExperimentState, self.exp_state_cb) rospy.Subscriber('robotsound', SoundRequest, self.robotSoundReceived) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.exp_state_sig.connect(self.update_state) self.commands = dict() self.commands[Command.TEST_MICROPHONE] = 'Test microphone' self.commands[Command.NEW_DEMONSTRATION] = 'New demonstration' self.commands[Command.START_RECORDING] = 'Start recording' self.commands[Command.STOP_RECORDING] = 'Stop recording' self.commands[Command.REPLAY_DEMONSTRATION] = 'Replay demonstration' self.commands[Command.DETECT_SURFACE] = 'Detect surface' self.commands[Command.TAKE_TOOL] = 'Take tool' self.commands[Command.RELEASE_TOOL] = 'Release tool' self.commands[Command.SAVE_ARM_POSE] = 'Save arm pose' self.currentAction = -1 self.currentStep = -1 allWidgetsBox = QtGui.QVBoxLayout() actionBox = QGroupBox('Demonstrations', self._widget) self.actionGrid = QtGui.QGridLayout() self.actionGrid.setHorizontalSpacing(0) for i in range(6): self.actionGrid.addItem(QtGui.QSpacerItem(90, 90), 0, i, QtCore.Qt.AlignCenter) self.actionGrid.setColumnStretch(i, 0) self.actionIcons = dict() actionBoxLayout = QtGui.QHBoxLayout() actionBoxLayout.addLayout(self.actionGrid) actionBox.setLayout(actionBoxLayout) actionButtonGrid = QtGui.QHBoxLayout() actionButtonGrid.addWidget( self.create_button(Command.NEW_DEMONSTRATION)) self.stepsBox = QGroupBox('No demonstrations', self._widget) self.stepsGrid = QtGui.QGridLayout() self.l_model = QtGui.QStandardItemModel(self) self.l_view = self._create_table_view(self.l_model, self.l_row_clicked_cb) self.r_model = QtGui.QStandardItemModel(self) self.r_view = self._create_table_view(self.r_model, self.r_row_clicked_cb) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 0, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(10, 10), 0, 1, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 2, 2, 3) self.stepsGrid.addWidget(QtGui.QLabel('Left Arm'), 0, 0) self.stepsGrid.addWidget(QtGui.QLabel('Right Arm'), 0, 2) self.stepsGrid.addWidget(self.l_view, 1, 0) self.stepsGrid.addWidget(self.r_view, 1, 2) stepsBoxLayout = QtGui.QHBoxLayout() stepsBoxLayout.addLayout(self.stepsGrid) self.stepsBox.setLayout(stepsBoxLayout) stepsButtonGrid = QtGui.QHBoxLayout() stepsButtonGrid.addWidget( self.create_button(Command.REPLAY_DEMONSTRATION)) motionButtonGrid = QtGui.QHBoxLayout() motionButtonGrid.addWidget(self.create_button(Command.START_RECORDING)) motionButtonGrid.addWidget(self.create_button(Command.STOP_RECORDING)) misc_grid = QtGui.QHBoxLayout() misc_grid.addWidget(self.create_button(Command.TEST_MICROPHONE)) misc_grid.addWidget(self.create_button(Command.DETECT_SURFACE)) misc_grid.addStretch(1) misc_grid2 = QtGui.QHBoxLayout() misc_grid2.addWidget(self.create_button(Command.TAKE_TOOL)) misc_grid2.addWidget(self.create_button(Command.RELEASE_TOOL)) misc_grid2.addStretch(1) misc_grid3 = QtGui.QHBoxLayout() misc_grid3.addWidget(self.create_button(Command.SAVE_ARM_POSE)) misc_grid3.addStretch(1) speechGroupBox = QGroupBox('Robot Speech', self._widget) speechGroupBox.setObjectName('RobotSpeechGroup') speechBox = QtGui.QHBoxLayout() self.speechLabel = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speechLabel.setPalette(palette) speechBox.addWidget(self.speechLabel) speechGroupBox.setLayout(speechBox) allWidgetsBox.addWidget(actionBox) allWidgetsBox.addLayout(actionButtonGrid) allWidgetsBox.addWidget(self.stepsBox) allWidgetsBox.addLayout(motionButtonGrid) allWidgetsBox.addLayout(stepsButtonGrid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid2) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 40)) allWidgetsBox.addLayout(misc_grid3) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addWidget(speechGroupBox) allWidgetsBox.addStretch(1) # Fix layout and add main widget to the user interface QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique')) vAllBox = QtGui.QVBoxLayout() vAllBox.addLayout(allWidgetsBox) vAllBox.addStretch(1) hAllBox = QtGui.QHBoxLayout() hAllBox.addLayout(vAllBox) hAllBox.addStretch(1) self._widget.setObjectName('PbDGUI') self._widget.setLayout(hAllBox) context.add_widget(self._widget) rospy.loginfo('Will wait for the experiment state service...') rospy.wait_for_service('get_experiment_state') exp_state_srv = rospy.ServiceProxy('get_experiment_state', GetExperimentState) rospy.loginfo('Got response from the experiment state service...') response = exp_state_srv() self.update_state(response.state)
def __init__(self, context): super(PbDGUI, self).__init__(context) self.setObjectName('PbDGUI') self._widget = QWidget() self.speech_cmd_publisher = rospy.Publisher('recognized_command', Command) self.gui_cmd_publisher = rospy.Publisher('gui_command', GuiCommand) rospy.Subscriber('experiment_state', ExperimentState, self.exp_state_cb) rospy.Subscriber('robotsound', SoundRequest, self.robotSoundReceived) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.exp_state_sig.connect(self.update_state) self.commands = dict() self.commands[Command.CREATE_NEW_ACTION] = 'New action' self.commands[Command.TEST_MICROPHONE] = 'Test microphone' self.commands[Command.NEXT_ACTION] = 'Next action' self.commands[Command.PREV_ACTION] = 'Previous action' self.commands[Command.SAVE_POSE] = 'Save pose' self.commands[Command.RELAX_RIGHT_ARM] = 'Relax right arm' self.commands[Command.RELAX_LEFT_ARM] = 'Relax left arm' self.commands[Command.FREEZE_RIGHT_ARM] = 'Freeze right arm' self.commands[Command.FREEZE_LEFT_ARM] = 'Freeze left arm' self.commands[Command.OPEN_RIGHT_HAND] = 'Open right hand' self.commands[Command.OPEN_LEFT_HAND] = 'Open left hand' self.commands[Command.CLOSE_RIGHT_HAND] = 'Close right hand' self.commands[Command.CLOSE_LEFT_HAND] = 'Close left hand' self.commands[Command.CLOSE_LEFT_HAND] = 'Close left hand' self.commands[Command.EXECUTE_ACTION] = 'Execute action' self.commands[Command.STOP_EXECUTION] = 'Stop execution' self.commands[Command.DELETE_ALL_STEPS] = 'Delete all' self.commands[Command.DELETE_LAST_STEP] = 'Delete last' self.commands[Command.RECORD_OBJECT_POSE] = 'Record object poses' self.currentAction = -1 self.currentStep = -1 allWidgetsBox = QtGui.QVBoxLayout() actionBox = QGroupBox('Actions', self._widget) self.actionGrid = QtGui.QGridLayout() self.actionGrid.setHorizontalSpacing(0) for i in range(6): self.actionGrid.addItem(QtGui.QSpacerItem(90, 90), 0, i, QtCore.Qt.AlignCenter) self.actionGrid.setColumnStretch(i, 0) self.actionIcons = dict() actionBoxLayout = QtGui.QHBoxLayout() actionBoxLayout.addLayout(self.actionGrid) actionBox.setLayout(actionBoxLayout) actionButtonGrid = QtGui.QHBoxLayout() actionButtonGrid.addWidget( self.create_button(Command.CREATE_NEW_ACTION)) self.stepsBox = QGroupBox('No actions created yet', self._widget) self.stepsGrid = QtGui.QGridLayout() self.l_model = QtGui.QStandardItemModel(self) self.l_view = self._create_table_view(self.l_model, self.l_row_clicked_cb) self.r_model = QtGui.QStandardItemModel(self) self.r_view = self._create_table_view(self.r_model, self.r_row_clicked_cb) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 0, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(10, 10), 0, 1, 2, 3) self.stepsGrid.addItem(QtGui.QSpacerItem(280, 10), 0, 2, 2, 3) self.stepsGrid.addWidget(QtGui.QLabel('Left Arm'), 0, 0) self.stepsGrid.addWidget(QtGui.QLabel('Right Arm'), 0, 2) self.stepsGrid.addWidget(self.l_view, 1, 0) self.stepsGrid.addWidget(self.r_view, 1, 2) stepsBoxLayout = QtGui.QHBoxLayout() stepsBoxLayout.addLayout(self.stepsGrid) self.stepsBox.setLayout(stepsBoxLayout) stepsButtonGrid = QtGui.QHBoxLayout() stepsButtonGrid.addWidget(self.create_button(Command.SAVE_POSE)) stepsButtonGrid.addWidget(self.create_button(Command.EXECUTE_ACTION)) stepsButtonGrid.addWidget(self.create_button(Command.STOP_EXECUTION)) stepsButtonGrid.addWidget(self.create_button(Command.DELETE_ALL_STEPS)) stepsButtonGrid.addWidget(self.create_button(Command.DELETE_LAST_STEP)) misc_grid = QtGui.QHBoxLayout() misc_grid.addWidget(self.create_button(Command.TEST_MICROPHONE)) misc_grid.addWidget(self.create_button(Command.RECORD_OBJECT_POSE)) misc_grid.addStretch(1) misc_grid2 = QtGui.QHBoxLayout() misc_grid2.addWidget(self.create_button(Command.RELAX_RIGHT_ARM)) misc_grid2.addWidget(self.create_button(Command.RELAX_LEFT_ARM)) misc_grid2.addWidget(self.create_button(Command.FREEZE_RIGHT_ARM)) misc_grid2.addWidget(self.create_button(Command.FREEZE_LEFT_ARM)) misc_grid2.addStretch(1) misc_grid3 = QtGui.QHBoxLayout() misc_grid3.addWidget(self.create_button(Command.OPEN_RIGHT_HAND)) misc_grid3.addWidget(self.create_button(Command.OPEN_LEFT_HAND)) misc_grid3.addWidget(self.create_button(Command.CLOSE_RIGHT_HAND)) misc_grid3.addWidget(self.create_button(Command.CLOSE_LEFT_HAND)) misc_grid3.addStretch(1) misc_grid4 = QtGui.QHBoxLayout() misc_grid4.addWidget(self.create_button(Command.PREV_ACTION)) misc_grid4.addWidget(self.create_button(Command.NEXT_ACTION)) misc_grid4.addStretch(1) speechGroupBox = QGroupBox('Robot Speech', self._widget) speechGroupBox.setObjectName('RobotSpeechGroup') speechBox = QtGui.QHBoxLayout() self.speechLabel = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speechLabel.setPalette(palette) speechBox.addWidget(self.speechLabel) speechGroupBox.setLayout(speechBox) allWidgetsBox.addWidget(actionBox) allWidgetsBox.addLayout(actionButtonGrid) allWidgetsBox.addWidget(self.stepsBox) allWidgetsBox.addLayout(stepsButtonGrid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid2) allWidgetsBox.addLayout(misc_grid3) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addLayout(misc_grid4) allWidgetsBox.addItem(QtGui.QSpacerItem(100, 20)) allWidgetsBox.addWidget(speechGroupBox) allWidgetsBox.addStretch(1) # Fix layout and add main widget to the user interface QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique')) vAllBox = QtGui.QVBoxLayout() vAllBox.addLayout(allWidgetsBox) vAllBox.addStretch(1) hAllBox = QtGui.QHBoxLayout() hAllBox.addLayout(vAllBox) hAllBox.addStretch(1) self._widget.setObjectName('PbDGUI') self._widget.setLayout(hAllBox) context.add_widget(self._widget) rospy.loginfo('Will wait for the experiment state service...') rospy.wait_for_service('get_experiment_state') exp_state_srv = rospy.ServiceProxy('get_experiment_state', GetExperimentState) rospy.loginfo('Got response from the experiment state service...') response = exp_state_srv() self.update_state(response.state)
def __init__(self, context): super(SimpleGUI, self).__init__(context) self.setObjectName('SimpleGUI') self._widget = QWidget() self._widget.setFixedSize(600, 600) self._sound_client = SoundClient() rospy.Subscriber('robotsound', SoundRequest, self.sound_cb) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.sound_sig.connect(self.sound_sig_cb) large_box = QtGui.QVBoxLayout() #Sound textbox sound_textbox = QtGui.QLineEdit("Squirtle Squirtle") #Default Text sound_textbox.setFixedWidth(450) #Set a handle on the textbox to retrieve the text when button clicked self.sound_textbox = sound_textbox button_box = QtGui.QHBoxLayout() button_box.addItem(QtGui.QSpacerItem(15, 20)) button_box.addWidget(self.create_button('Speak', self.command_cb)) button_box.addWidget(sound_textbox) button_box.addStretch(1) large_box.addLayout(button_box) speech_box = QtGui.QHBoxLayout() speech_box.addItem(QtGui.QSpacerItem(15, 20)) self.speech_label = QtGui.QLabel('Robot has not spoken yet.') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speech_label.setPalette(palette) speech_box.addWidget(self.speech_label) large_box.addLayout(speech_box) large_box.addStretch(1) #large_box.addItem(QtGui.QSpacerItem(50,20)) up_head = Head(Head.UP) head_box = QtGui.QVBoxLayout() up_head_box = QtGui.QHBoxLayout() up_head_button = self.create_button('^', up_head.create_closure()) #large_box.addWidget(up_head_button) down_head = Head(Head.DOWN) down_head_box = QtGui.QHBoxLayout() down_head_button = self.create_button('v', down_head.create_closure()) #large_box.addWidget(down_head_button) right_head = Head(Head.RIGHT) right_head_button = self.create_button('>', right_head.create_closure()) #large_box.addWidget(right_head_button) left_head = Head(Head.LEFT) left_head_button = self.create_button('<', left_head.create_closure()) left_right_head_box = QtGui.QHBoxLayout() up_head_box.addItem(QtGui.QSpacerItem(235, 20)) up_head_box.addWidget(up_head_button) up_head_box.addItem(QtGui.QSpacerItem(275, 20)) left_right_head_box.addItem(QtGui.QSpacerItem(160, 20)) left_right_head_box.addWidget(left_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(60, 20)) left_right_head_box.addWidget(right_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(225, 20)) down_head_box.addItem(QtGui.QSpacerItem(235, 20)) down_head_box.addWidget(down_head_button) down_head_box.addItem(QtGui.QSpacerItem(275, 20)) head_box.addLayout(up_head_box) head_box.addLayout(left_right_head_box) head_box.addLayout(down_head_box) large_box.addLayout(head_box) #large_box.addItem(QtGui.QSpacerItem(500,20)) #large_box.addWidget(left_head_button) gripper = Gripper(Gripper.RIGHT, Gripper.OPEN) right_gripper = self.create_button('Right gripper!', gripper.create_closure()) gripper = Gripper(Gripper.LEFT, Gripper.OPEN) left_gripper = self.create_button('Left gripper!', gripper.create_closure()) large_box.addItem(QtGui.QSpacerItem(100, 250)) gripper_box = QtGui.QHBoxLayout() gripper_box.addItem(QtGui.QSpacerItem(75, 20)) gripper_box.addWidget(left_gripper) gripper_box.addItem(QtGui.QSpacerItem(450, 20)) gripper_box.addWidget(right_gripper) gripper_box.addItem(QtGui.QSpacerItem(75, 20)) large_box.addLayout(gripper_box) base_box = QtGui.QVBoxLayout() large_box.addItem(QtGui.QSpacerItem(100, 100)) #forward forward_base_box = QtGui.QHBoxLayout() forward_base = Base(Base.FORWARD) forward_base_button = self.create_button('move forward', forward_base.create_closure()) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) forward_base_box.addWidget(forward_base_button) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(forward_base_box) #large_box.addWidget(forward_base_button) #left left_right_base_box = QtGui.QHBoxLayout() left_base = Base(Base.LEFT) left_base_button = self.create_button('move left', left_base.create_closure()) #large_box.addWidget(left_base_button) #right right_base = Base(Base.RIGHT) right_base_button = self.create_button('move right', right_base.create_closure()) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) left_right_base_box.addWidget(left_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(50, 20)) left_right_base_box.addWidget(right_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) base_box.addLayout(left_right_base_box) #large_box.addWidget(right_base_button) #backward backward_base_box = QtGui.QHBoxLayout() backward_base = Base(Base.BACKWARD) backward_base_button = self.create_button( 'move backward', backward_base.create_closure()) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) backward_base_box.addWidget(backward_base_button) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(backward_base_box) #large_box.addWidget(backward_base_button) large_box.addLayout(base_box) turn_base_box = QtGui.QHBoxLayout() #turn left turnleft_base = Base(Base.TURNLEFT) turnleft_base_button = self.create_button( ' /\n<--', turnleft_base.create_closure()) #large_box.addWidget(turnleft_base_button) #turn right turnright_base = Base(Base.TURNRIGHT) turnright_base_button = self.create_button( '\\\n -->', turnright_base.create_closure()) turn_base_box.addItem(QtGui.QSpacerItem(75, 20)) turn_base_box.addWidget(turnright_base_button) turn_base_box.addItem(QtGui.QSpacerItem(225, 20)) turn_base_box.addWidget(turnleft_base_button) turn_base_box.addItem(QtGui.QSpacerItem(100, 20)) large_box.addLayout(turn_base_box) #large_box.addWidget(turnright_base_button) self._widget.setObjectName('SimpleGUI') self._widget.setLayout(large_box) context.add_widget(self._widget) self._widget.setStyleSheet( "QWidget { image: url(%s) }" % "/home/vjampala/catkin_ws/src/cse481/hw1/rqt_simplegui/rosie_background.jpg" )
def __init__(self): super(ManualWindow, self).__init__() self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.ui = '../forms/manual.ui' loadUi(self.ui, self) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.layout = self.findChild(QtWidgets.QGridLayout, 'layout') self.mode = JOYSTICK_ONLY_MODE self.visual_frame = rviz.VisualizationFrame() self.visual_frame.setSplashPath("") self.visual_frame.initialize() self.add_rviz_config() self.visual_frame.setMenuBar(None) self.visual_frame.setStatusBar(None) self.visual_frame.setHideButtonVisibility(False) self.layout.addWidget(self.visual_frame) self.visual_frame.hide() self.manager = self.visual_frame.getManager() self.grid_display = self.manager.getRootDisplayGroup().getDisplayAt(0) self.video_frame = QtWidgets.QLabel() video_frame_font = QtGui.QFont("Verdana", 62, QtGui.QFont.Bold) self.video_frame.setFont(video_frame_font) self.video_frame.setText("No video frame") self.video_frame.setAlignment(QtCore.Qt.AlignCenter) self.video_frame.hide() self.layout.addWidget(self.video_frame) self.joystick_frame = QtWidgets.QLabel() pixmap = QtGui.QPixmap('../static/img/xbox_controller_grey.png') pixmap = pixmap.scaledToWidth(800) self.joystick_frame.setPixmap(pixmap) self.joystick_frame.setAlignment(QtCore.Qt.AlignCenter) self.layout.addWidget(self.joystick_frame) # Buttons self.change_mode_btn = self.findChild(QtWidgets.QPushButton, 'changeModeBtn') self.turn_left = self.findChild(QtWidgets.QToolButton, 'turnRobotLeft') self.turn_right = self.findChild(QtWidgets.QToolButton, 'turnRobotRight') self.stand_btn = self.findChild(QtWidgets.QPushButton, 'standBtn') self.walk_btn = self.findChild(QtWidgets.QPushButton, 'walkBtn') self.stairs_btn = self.findChild(QtWidgets.QPushButton, 'stairsBtn') self.exit_btn = self.findChild(QtWidgets.QPushButton, 'exitBtn') self.powerBtn = self.findChild(QtWidgets.QPushButton, 'powerBtn') self.emergency_btn = self.findChild(QtWidgets.QPushButton, 'emergencyBtn') # Status indicators self.signal_btn = self.findChild(QtWidgets.QPushButton, 'signalBtn') self.controller_battery_btn = self.findChild(QtWidgets.QPushButton, 'controllerBatteryBtn') self.battery_btn = self.findChild(QtWidgets.QPushButton, 'batteryBtn') self.health_btn = self.findChild(QtWidgets.QPushButton, 'healthBtn') # Button connections self.emergency_btn.clicked.connect(self.turn_robot_off) self.powerBtn.clicked.connect(self.power_on) self.exit_btn.clicked.connect(self.close_window) self.change_mode_btn.clicked.connect(self.change_mode) # Button shortcuts self.exit_btn.setShortcut("Ctrl+Q") # Mode Layouts #self.video_frame = self.findChild(QtWidgets.QLabel, 'videoFrame') # self.xbox_controller_frame = self.findChild( # QtWidgets.QLabel, 'xboxcontrollerFrame') # self.video_frame.hide() # Stylesheets self.powerBtn.setStyleSheet( "QPushButton#powerBtn:checked {color:black; background-color: red;}" ) self.signal_btn.setStyleSheet( "QPushButton#signalBtn:checked {color:black; background-color: green;}" ) self.video_stream_subscriber = VideoStreamSubscriber( 'camera/image_raw', Image) self.show()
def __init__(self, context): self.prompt_width = 170 self.input_width = 250 super(SimpleGUI, self).__init__(context) self.setObjectName('SimpleGUI') self._widget = QWidget() self._sound_client = SoundClient() #find relative path for files to load self.local_dir = os.path.dirname(__file__) self.dir = os.path.join(self.local_dir, './lib/rqt_simplegui/') if not os.path.isdir(self.dir): os.makedirs(self.dir) #need to add any additional subfolders as needed if not os.path.isdir(self.dir + 'animations/'): os.makedirs(self.dir + 'animations/') # Creates a subscriber to the ROS topic, having msg type SoundRequest rospy.Subscriber('robotsound', SoundRequest, self.sound_cb) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.sound_sig.connect(self.sound_sig_cb) # Code used for saving/ loading arm poses for the robot switch_srv_name = 'pr2_controller_manager/switch_controller' rospy.loginfo('Waiting for switch controller service...') rospy.wait_for_service(switch_srv_name) self.switch_service_client = rospy.ServiceProxy( switch_srv_name, SwitchController) self.r_joint_names = [ 'r_shoulder_pan_joint', 'r_shoulder_lift_joint', 'r_upper_arm_roll_joint', 'r_elbow_flex_joint', 'r_forearm_roll_joint', 'r_wrist_flex_joint', 'r_wrist_roll_joint' ] self.l_joint_names = [ 'l_shoulder_pan_joint', 'l_shoulder_lift_joint', 'l_upper_arm_roll_joint', 'l_elbow_flex_joint', 'l_forearm_roll_joint', 'l_wrist_flex_joint', 'l_wrist_roll_joint' ] self.all_joint_names = [] self.all_joint_poses = [] # Hash tables storing the name of the pose and the # associated positions for that pose, initially empty self.saved_l_poses = {} self.saved_r_poses = {} # Hash tables for storing name of animations and the associated pose list self.saved_animations = {} self.lock = threading.Lock() rospy.Subscriber('joint_states', JointState, self.joint_states_cb) #parsing for animations dir = os.path.dirname(__file__) qWarning(dir) filename = os.path.join(self.dir, 'animations/') ani_path = filename ani_listing = os.listdir(ani_path) for infile in ani_listing: pose_left = [] pose_right = [] left_gripper_states = [] right_gripper_states = [] line_num = 1 for line in fileinput.input(ani_path + infile): if (line_num % 2 == 1): pose = [float(x) for x in line.split()] pose_left.append(pose[:len(pose) / 2]) pose_right.append(pose[len(pose) / 2:]) else: states = line.split() left_gripper_states.append(states[0]) right_gripper_states.append(states[1]) line_num += 1 self.saved_animations[os.path.splitext(infile)[0]] = Quad( pose_left, pose_right, left_gripper_states, right_gripper_states) # Create a trajectory action client r_traj_controller_name = '/r_arm_controller/joint_trajectory_action' self.r_traj_action_client = SimpleActionClient(r_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for RIGHT arm...' ) self.r_traj_action_client.wait_for_server() l_traj_controller_name = '/l_arm_controller/joint_trajectory_action' self.l_traj_action_client = SimpleActionClient(l_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for LEFT arm...' ) self.l_traj_action_client.wait_for_server() # Navigation functionality initialization self.roomNav = RoomNavigator() self._tf_listener = TransformListener() self.animPlay = AnimationPlayer(None, None, None, None) # Detection and pickup functionality self.pap = PickAndPlaceManager(self._tf_listener, self.roomNav, self.animPlay) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.joint_sig.connect(self.joint_sig_cb) # Create a large vertical box that is top aligned large_box = QtGui.QVBoxLayout() large_box.setAlignment(QtCore.Qt.AlignTop) large_box.setMargin(0) large_box.addItem(QtGui.QSpacerItem(10, 0)) # Buttons for controlling the head of the robot head_box = QtGui.QHBoxLayout() head_box.addItem(QtGui.QSpacerItem(230, 0)) head_box.addWidget(self.create_pressed_button('Head Up')) head_box.addStretch(1) large_box.addLayout(head_box) button_box = QtGui.QHBoxLayout() button_box.addItem(QtGui.QSpacerItem(80, 0)) button_box.addWidget(self.create_pressed_button('Head Turn Left')) button_box.addWidget(self.create_pressed_button('Head Down')) button_box.addWidget(self.create_pressed_button('Head Turn Right')) button_box.addStretch(1) button_box.setMargin(0) button_box.setSpacing(0) large_box.addLayout(button_box) # Shows what the robot says speech_box = QtGui.QHBoxLayout() self.speech_label = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speech_label.setPalette(palette) # speech_box.addItem(QtGui.QSpacerItem(100, 0)) #speech_box.addWidget(self.speech_label) # large_box.addLayout(speech_box) # Speak button speak_button_box = QtGui.QHBoxLayout() speech_prompt = QtGui.QLabel('Enter Speech Text:') speech_prompt.setFixedWidth(self.prompt_width) speak_button_box.addWidget(speech_prompt) robot_says = QtGui.QLineEdit(self._widget) robot_says.setFixedWidth(self.input_width) robot_says.textChanged[str].connect(self.onChanged) # speak_button_box.addWidget(robot_says) speak_button_box.addWidget(self.create_button('Speak')) speak_button_box.addStretch(1) large_box.addLayout(speak_button_box) large_box.addItem(QtGui.QSpacerItem(0, 50)) # Buttons for arm poses pose_button_box1 = QtGui.QHBoxLayout() pose_button_box1.addItem(QtGui.QSpacerItem(150, 0)) pose_button_box1.addWidget(self.create_button('Relax Left Arm')) pose_button_box1.addWidget(self.create_button('Relax Right Arm')) pose_button_box1.addStretch(1) large_box.addLayout(pose_button_box1) # Buttons for grippers gripper_button_box = QtGui.QHBoxLayout() gripper_button_box.addItem(QtGui.QSpacerItem(150, 0)) gripper_button_box.addWidget(self.create_button('Open Left Gripper')) gripper_button_box.addWidget(self.create_button('Open Right Gripper')) gripper_button_box.addStretch(1) large_box.addLayout(gripper_button_box) large_box.addItem(QtGui.QSpacerItem(0, 25)) # Buttons for animation animation_box = QtGui.QHBoxLayout() play_anim_label = QtGui.QLabel('Select Animation:') play_anim_label.setFixedWidth(self.prompt_width) animation_box.addWidget(play_anim_label) self.saved_animations_list = QtGui.QComboBox(self._widget) animation_box.addWidget(self.saved_animations_list) pose_time_label = QtGui.QLabel('Duration(sec):') pose_time_label.setFixedWidth(100) animation_box.addWidget(pose_time_label) self.pose_time = QtGui.QLineEdit(self._widget) self.pose_time.setFixedWidth(50) self.pose_time.setText('2.0') animation_box.addWidget(self.pose_time) animation_box.addWidget(self.create_button('Play Animation')) animation_box.addStretch(1) large_box.addLayout(animation_box) animation_box2 = QtGui.QHBoxLayout() animation_name_label = QtGui.QLabel('Enter Animation Name:') animation_name_label.setFixedWidth(self.prompt_width) animation_box2.addWidget(animation_name_label) self.animation_name = QtGui.QLineEdit(self._widget) self.animation_name.setFixedWidth(self.input_width) animation_box2.addWidget(self.animation_name) animation_box2.addWidget(self.create_button('Save Animation')) animation_box2.addStretch(1) large_box.addLayout(animation_box2) animation_box3 = QtGui.QHBoxLayout() pose_name_label = QtGui.QLabel('Enter Pose Name:') pose_name_label.setFixedWidth(self.prompt_width) animation_box3.addWidget(pose_name_label) self.pose_name_temp = QtGui.QLineEdit(self._widget) self.pose_name_temp.setFixedWidth(self.input_width) animation_box3.addWidget(self.pose_name_temp) animation_box3.addWidget(self.create_button('Add Current Pose')) animation_box3.addStretch(1) large_box.addLayout(animation_box3) # Playing around with UI stuff play_box = QtGui.QHBoxLayout() pose_sequence_label = QtGui.QLabel('Current Pose Sequence:') pose_sequence_label.setFixedWidth(self.prompt_width) pose_sequence_label.setAlignment(QtCore.Qt.AlignTop) self.list_widget = QListWidget() self.list_widget.setDragDropMode(QAbstractItemView.InternalMove) self.list_widget.setMaximumSize(self.input_width, 200) play_box.addWidget(pose_sequence_label) play_box.addWidget(self.list_widget) play_box.addStretch(1) large_box.addLayout(play_box) large_box.addItem(QtGui.QSpacerItem(0, 50)) # Buttons for first row of base controls first_base_button_box = QtGui.QHBoxLayout() first_base_button_box.addItem(QtGui.QSpacerItem(70, 0)) first_base_button_box.addWidget( self.create_pressed_button('Rotate Left')) first_base_button_box.addWidget(self.create_pressed_button('^')) first_base_button_box.addWidget( self.create_pressed_button('Rotate Right')) first_base_button_box.addStretch(1) large_box.addLayout(first_base_button_box) # Buttons for second row of base controls second_base_button_box = QtGui.QHBoxLayout() second_base_button_box.addItem(QtGui.QSpacerItem(70, 0)) second_base_button_box.addWidget(self.create_pressed_button('<')) second_base_button_box.addWidget(self.create_pressed_button('v')) second_base_button_box.addWidget(self.create_pressed_button('>')) second_base_button_box.addWidget(self.create_button('Move to Bin')) second_base_button_box.addWidget(self.create_button('Object Detect')) second_base_button_box.addWidget(self.create_button('Clean Room')) second_base_button_box.addStretch(1) large_box.addLayout(second_base_button_box) # Animation related items to store intermediate pose co-ordinates to save self.animation_map = {} self.create_state = False self._widget.setObjectName('SimpleGUI') self._widget.setLayout(large_box) context.add_widget(self._widget) # Look straight and down when launched self.head_x = 1.0 self.head_y = 0.0 self.head_z = 0.5 self.head_action(self.head_x, self.head_y, self.head_z) # Set grippers to closed on initialization self.left_gripper_state = '' self.right_gripper_state = '' self.gripper_action('l', 0.0) self.gripper_action('r', 0.0) # Lab 6 self.marker_publisher = rospy.Publisher('visualization_marker', Marker) # Saved states for poses saved_pose_box = QtGui.QHBoxLayout() self.saved_left_poses = QtGui.QLabel('') self.saved_right_poses = QtGui.QLabel('') saved_pose_box.addWidget(self.saved_left_poses) saved_pose_box.addWidget(self.saved_right_poses) large_box.addLayout(saved_pose_box) # Preload the map of animations self.saved_animations_list.addItems(self.saved_animations.keys()) # Move the torso all the way down # self.torso_down(True) # Autonomous navigation stuff ''' self.locations = [Pose(Point(2.48293590546, 3.90075874329, 0.000), Quaternion(0.000, 0.000, -0.783917630973, 0.620864838632)), Pose(Point(3.70106744766, 0.304672241211, 0.000), Quaternion(0.000, 0.000, 0.950186880196, -0.311680754463)), Pose(Point(2.57326722145, 1.51304531097, 0.000), Quaternion(0.000, 0.000, 0.96127194482, -0.275601611212)), Pose(Point(1.28060531616, 1.52380752563, 0.000), Quaternion(0.000, 0.000, 0.946345258806, -0.323157316388)), Pose(Point(2.11048603058, 0.420155525208, 0.000), Quaternion(0.000, 0.000, 0.945222393391, -0.326427062346)), Pose(Point(2.82733058929, -0.739856719971, 0.000), Quaternion(0.000, 0.000, 0.945473998362, -0.325697587373)), Pose(Point(1.29184818268, -1.90485572815, 0.000), Quaternion(0.000, 0.000, 0.942275557345, -0.334838429739)), Pose(Point(0.722846984863, -1.0921459198, 0.000), Quaternion(0.000, 0.000, 0.949330143731, -0.314280572424))] ''' self.locations = [ Pose(Point(2.04748392105, 2.04748010635, 0.000), Quaternion(0.000, 0.000, -0.776968030817, 0.629540053601)), Pose(Point(2.34193611145, 1.43208932877, 0), Quaternion(0, 0, -0.841674385779, 0.539985396398)), Pose(Point(3.43202018738, -0.258297920227, 0.000), Quaternion(0.000, 0.000, 0.996656413122, -0.0817067572629)), Pose(Point(0.931655406952, -1.96435832977, 0.000), Quaternion(0.000, 0.000, 0.691187586713, 0.722675390458)), Pose(Point(-0.369112968445, 0.0330476760864, 0.000), Quaternion(0.000, 0.000, 0.0275340398899, 0.999620866453)) ] self.index = 1 rospy.loginfo("Completed GUI initialization")
def __init__(self, context): super(SimpleGUI, self).__init__(context) self.setObjectName('SimpleGUI') self._widget = QWidget() self._widget.setFixedSize(600, 600) self._sound_client = SoundClient() rospy.Subscriber('robotsound', SoundRequest, self.sound_cb) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.sound_sig.connect(self.sound_sig_cb) large_box = QtGui.QVBoxLayout() # Textbox to enter words for PR2 to say sound_textbox = QtGui.QLineEdit("Squirtle Squirtle") # Default Text sound_textbox.setFixedWidth(450) self.marker_publisher = rospy.Publisher('visualization_marker', Marker) # Set a handler on the textbox to retrieve the text when button clicked self.sound_textbox = sound_textbox button_box = QtGui.QHBoxLayout() button_box.addItem(QtGui.QSpacerItem(15, 20)) button_box.addWidget(self.create_button('Speak', self.command_cb)) button_box.addWidget(sound_textbox) button_box.addStretch(1) large_box.addLayout(button_box) speech_box = QtGui.QHBoxLayout() speech_box.addItem(QtGui.QSpacerItem(15, 20)) self.speech_label = QtGui.QLabel('Robot has not spoken yet') palette = QtGui.QPalette() palette.setColor(QtGui.QPalette.Foreground, QtCore.Qt.blue) self.speech_label.setPalette(palette) speech_box.addWidget(self.speech_label) large_box.addLayout(speech_box) large_box.addStretch(1) #large_box.addItem(QtGui.QSpacerItem(50,20)) # Buttons to move the PR2's head up_head = Head(Head.UP, self) head_box = QtGui.QVBoxLayout() up_head_box = QtGui.QHBoxLayout() up_head_button = self.create_button('^', up_head.create_closure()) down_head = Head(Head.DOWN, self) down_head_box = QtGui.QHBoxLayout() down_head_button = self.create_button('v', down_head.create_closure()) right_head = Head(Head.RIGHT, self) right_head_button = self.create_button('>', right_head.create_closure()) left_head = Head(Head.LEFT, self) left_head_button = self.create_button('<', left_head.create_closure()) left_right_head_box = QtGui.QHBoxLayout() up_head_box.addItem(QtGui.QSpacerItem(235, 20)) up_head_box.addWidget(up_head_button) up_head_box.addItem(QtGui.QSpacerItem(275, 20)) left_right_head_box.addItem(QtGui.QSpacerItem(160, 20)) left_right_head_box.addWidget(left_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(60, 20)) left_right_head_box.addWidget(right_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(225, 20)) down_head_box.addItem(QtGui.QSpacerItem(235, 20)) down_head_box.addWidget(down_head_button) down_head_box.addItem(QtGui.QSpacerItem(275, 20)) head_box.addLayout(up_head_box) head_box.addLayout(left_right_head_box) head_box.addLayout(down_head_box) large_box.addLayout(head_box) # Buttons to move the grippers gripper = Gripper(Gripper.RIGHT, Gripper.OPEN, self) right_gripper = self.create_button('Right gripper', gripper.create_closure()) gripper = Gripper(Gripper.LEFT, Gripper.OPEN, self) left_gripper = self.create_button('Left gripper', gripper.create_closure()) large_box.addItem(QtGui.QSpacerItem(100, 250)) gripper_box = QtGui.QHBoxLayout() gripper_box.addItem(QtGui.QSpacerItem(75, 20)) gripper_box.addWidget(left_gripper) gripper_box.addItem(QtGui.QSpacerItem(450, 20)) gripper_box.addWidget(right_gripper) gripper_box.addItem(QtGui.QSpacerItem(75, 20)) large_box.addLayout(gripper_box) # Buttons to move the base base_box = QtGui.QVBoxLayout() large_box.addItem(QtGui.QSpacerItem(100, 100)) forward_base_box = QtGui.QHBoxLayout() forward_base = Base(Base.FORWARD, self) forward_base_button = self.create_button('move forward', forward_base.create_closure()) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) forward_base_box.addWidget(forward_base_button) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(forward_base_box) left_right_base_box = QtGui.QHBoxLayout() left_base = Base(Base.LEFT, self) left_base_button = self.create_button('move left', left_base.create_closure()) right_base = Base(Base.RIGHT, self) right_base_button = self.create_button('move right', right_base.create_closure()) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) left_right_base_box.addWidget(left_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(50, 20)) left_right_base_box.addWidget(right_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) base_box.addLayout(left_right_base_box) backward_base_box = QtGui.QHBoxLayout() backward_base = Base(Base.BACKWARD, self) backward_base_button = self.create_button( 'move backward', backward_base.create_closure()) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) backward_base_box.addWidget(backward_base_button) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(backward_base_box) large_box.addLayout(base_box) turn_base_box = QtGui.QHBoxLayout() counter_base = Base(Base.COUNTER, self) counter_base_button = self.create_button('\\\n -->', counter_base.create_closure()) clockwise_base = Base(Base.CLOCKWISE, self) clockwise_base_button = self.create_button( ' /\n<--', clockwise_base.create_closure()) turn_base_box.addItem(QtGui.QSpacerItem(75, 20)) turn_base_box.addWidget(counter_base_button) turn_base_box.addItem(QtGui.QSpacerItem(225, 20)) turn_base_box.addWidget(clockwise_base_button) turn_base_box.addItem(QtGui.QSpacerItem(100, 20)) large_box.addLayout(turn_base_box) self._widget.setObjectName('SimpleGUI') self._widget.setLayout(large_box) context.add_widget(self._widget) self._widget.setStyleSheet( "QWidget { image: url(%s) }" % (str(os.path.dirname(os.path.realpath(__file__))) + "/../../rosie_background.jpg"))
def __init__(self, context): super(Milestone1GUI, self).__init__(context) self._sound_client = SoundClient() rospy.Subscriber('robotsound', SoundRequest, self.sound_cb) switch_srv_name = 'pr2_controller_manager/switch_controller' rospy.loginfo('Waiting for switch controller service...') rospy.wait_for_service(switch_srv_name) self.switch_service_client = rospy.ServiceProxy( switch_srv_name, SwitchController) self.r_joint_names = [ 'r_shoulder_pan_joint', 'r_shoulder_lift_joint', 'r_upper_arm_roll_joint', 'r_elbow_flex_joint', 'r_forearm_roll_joint', 'r_wrist_flex_joint', 'r_wrist_roll_joint' ] self.l_joint_names = [ 'l_shoulder_pan_joint', 'l_shoulder_lift_joint', 'l_upper_arm_roll_joint', 'l_elbow_flex_joint', 'l_forearm_roll_joint', 'l_wrist_flex_joint', 'l_wrist_roll_joint' ] # Create a trajectory action client r_traj_controller_name = '/r_arm_controller/joint_trajectory_action' self.r_traj_action_client = SimpleActionClient(r_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for RIGHT arm...' ) self.r_traj_action_client.wait_for_server() l_traj_controller_name = '/l_arm_controller/joint_trajectory_action' self.l_traj_action_client = SimpleActionClient(l_traj_controller_name, JointTrajectoryAction) rospy.loginfo( 'Waiting for a response from the trajectory action server for LEFT arm...' ) self.l_traj_action_client.wait_for_server() #init torso self.torso = Torso() #init gripper self.l_gripper = Gripper('l') self.r_gripper = Gripper('r') #init navigation self.navigation = Navigation() self._widget = QWidget() self._widget.setFixedSize(600, 600) QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) large_box = QtGui.QVBoxLayout() #Button for outreaching to recieve book from Human button_box = QtGui.QVBoxLayout() box_1 = QtGui.QHBoxLayout() box_2 = QtGui.QHBoxLayout() box_3 = QtGui.QHBoxLayout() box_4 = QtGui.QHBoxLayout() box_5 = QtGui.QHBoxLayout() box_6 = QtGui.QHBoxLayout() box_7 = QtGui.QHBoxLayout() box_8 = QtGui.QHBoxLayout() box_9 = QtGui.QHBoxLayout() box_10 = QtGui.QHBoxLayout() box_1.addItem(QtGui.QSpacerItem(15, 2)) box_1.addWidget( self.create_button('Prepare To Take', self.prepare_to_take)) box_1.addItem(QtGui.QSpacerItem(445, 2)) box_2.addItem(QtGui.QSpacerItem(15, 2)) box_2.addWidget( self.create_button('Take From Human', self.take_from_human)) box_2.addItem(QtGui.QSpacerItem(445, 2)) box_3.addItem(QtGui.QSpacerItem(15, 2)) box_3.addWidget( self.create_button('Prepare To Navigate', self.prepare_to_navigate)) box_3.addItem(QtGui.QSpacerItem(445, 2)) # Button to move to shelf box_5.addItem(QtGui.QSpacerItem(15, 2)) box_5.addWidget( self.create_button('Navigate To Shelf', self.navigate_to_shelf)) box_5.addItem(QtGui.QSpacerItem(445, 2)) box_4.addItem(QtGui.QSpacerItem(15, 2)) box_4.addWidget( self.create_button('Place On Shelf', self.place_on_shelf)) box_4.addItem(QtGui.QSpacerItem(445, 2)) box_6.addItem(QtGui.QSpacerItem(15, 2)) box_6.addWidget( self.create_button('Give Information', self.give_information)) box_6.addItem(QtGui.QSpacerItem(445, 2)) box_7.addItem(QtGui.QSpacerItem(15, 2)) box_7.addWidget( self.create_button('Navigate To Person', self.navigate_to_person)) box_7.addItem(QtGui.QSpacerItem(445, 2)) self.book_textbox = QtGui.QLineEdit() self.book_textbox.setFixedWidth(100) box_8.addItem(QtGui.QSpacerItem(15, 2)) box_8.addWidget(self.book_textbox) box_8.addWidget( self.create_button('Pick Up Book', self.pick_up_from_shelf_button)) box_8.addItem(QtGui.QSpacerItem(445, 2)) box_9.addItem(QtGui.QSpacerItem(15, 2)) box_9.addWidget(self.create_button('Localize', self.spin_base)) box_9.addItem(QtGui.QSpacerItem(445, 2)) box_10.addItem(QtGui.QSpacerItem(15, 2)) box_10.addWidget( self.create_button('Non-nav Pick Up', self.pick_up_from_shelf)) box_10.addItem(QtGui.QSpacerItem(445, 2)) button_box.addItem(QtGui.QSpacerItem(20, 120)) button_box.addLayout(box_1) button_box.addLayout(box_2) button_box.addLayout(box_3) button_box.addLayout(box_5) button_box.addLayout(box_4) button_box.addLayout(box_6) button_box.addLayout(box_7) button_box.addLayout(box_8) button_box.addLayout(box_9) button_box.addLayout(box_10) button_box.addItem(QtGui.QSpacerItem(20, 240)) large_box.addLayout(button_box) self.marker_perception = ReadMarkers() self.speech_recognition = SpeechRecognition(self) self.bookDB = BookDB() self.book_map = self.bookDB.getAllBookCodes() self._widget.setObjectName('Milestone1GUI') self._widget.setLayout(large_box) context.add_widget(self._widget) self._widget.setStyleSheet( "QWidget { image: url(%s) }" % (str(os.path.dirname(os.path.realpath(__file__))) + "/../../librarian_gui_background.jpg"))
def __init__(self, context): super(WaterPulse, self).__init__(context) self.setObjectName('WaterPulse') self._widget = QWidget() self._widget.setFixedSize(600, 600) self._sound_client = SoundClient() rospy.Subscriber('robotsound', SoundRequest, self.sound_cb) self.l_joint_names = [ 'l_shoulder_pan_joint', 'l_shoulder_lift_joint', 'l_upper_arm_roll_joint', 'l_elbow_flex_joint', 'l_forearm_roll_joint', 'l_wrist_flex_joint', 'l_wrist_roll_joint' ] l_traj_contoller_name = None l_traj_controller_name = '/l_arm_controller/joint_trajectory_action' self.l_traj_action_client = SimpleActionClient(l_traj_controller_name, JointTrajectoryAction) rospy.loginfo('Waiting for a response from the trajectory ' + 'action server for LEFT arm...') self.l_traj_action_client.wait_for_server() QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10)) self.sound_sig.connect(self.sound_sig_cb) large_box = QtGui.QVBoxLayout() # Textbox to enter words for PR2 to say sound_textbox = QtGui.QLineEdit("Squirtle Squirtle") # Default Text sound_textbox.setFixedWidth(450) self.marker_publisher = rospy.Publisher('visualization_marker', Marker) # Set a handler on the textbox to retrieve the text when button clicked self.sound_textbox = sound_textbox button_box = QtGui.QHBoxLayout() button_box.addItem(QtGui.QSpacerItem(15, 20)) button_box.addWidget(self.create_button('Speak', self.command_cb)) button_box.addWidget(sound_textbox) button_box.addStretch(1) large_box.addLayout(button_box) # 'Trick or Treat' & 'Thank You' Buttons halloween_box = QtGui.QHBoxLayout() halloween_box.addItem(QtGui.QSpacerItem(15, 20)) halloween_box.addWidget( self.create_button('Trick or Treat', self.command_cb)) halloween_box.addWidget( self.create_button('Thank You', self.command_cb)) halloween_box.addStretch(1) large_box.addLayout(halloween_box) # Buttons to move the PR2's head up_head = Head(Head.UP, self) head_box = QtGui.QVBoxLayout() up_head_box = QtGui.QHBoxLayout() up_head_button = self.create_button('^', up_head.create_closure()) down_head = Head(Head.DOWN, self) down_head_box = QtGui.QHBoxLayout() down_head_button = self.create_button('v', down_head.create_closure()) right_head = Head(Head.RIGHT, self) right_head_button = self.create_button('>', right_head.create_closure()) left_head = Head(Head.LEFT, self) left_head_button = self.create_button('<', left_head.create_closure()) left_right_head_box = QtGui.QHBoxLayout() head_speed_sld = QtGui.QSlider(QtCore.Qt.Horizontal) head_speed_sld.setFocusPolicy(QtCore.Qt.NoFocus) head_speed_sld.setMinimum(1) head_speed_sld.setMaximum(5) head_speed_sld.valueChanged[int].connect(Head.set_speed) up_head_box.addItem(QtGui.QSpacerItem(235, 20)) up_head_box.addWidget(up_head_button) up_head_box.addItem(QtGui.QSpacerItem(275, 20)) left_right_head_box.addItem(QtGui.QSpacerItem(160, 20)) left_right_head_box.addWidget(left_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(60, 20)) left_right_head_box.addWidget(right_head_button) left_right_head_box.addItem(QtGui.QSpacerItem(225, 20)) down_head_box.addItem(QtGui.QSpacerItem(235, 20)) down_head_box.addWidget(down_head_button) down_head_box.addItem(QtGui.QSpacerItem(275, 20)) head_sld_box = QtGui.QHBoxLayout() head_sld_box.addItem(QtGui.QSpacerItem(225, 20)) head_sld_box.addWidget(head_speed_sld) head_sld_box.addItem(QtGui.QSpacerItem(225, 20)) head_box.addLayout(up_head_box) head_box.addLayout(left_right_head_box) head_box.addLayout(down_head_box) head_box.addLayout(head_sld_box) large_box.addLayout(head_box) # Buttons to move the grippers gripper = Gripper(Gripper.RIGHT, Gripper.OPEN, self) right_gripper = self.create_button('Right gripper', gripper.create_closure()) gripper = Gripper(Gripper.LEFT, Gripper.OPEN, self) left_gripper = self.create_button('Left gripper', gripper.create_closure()) knock_button = self.create_button('Knock', self.knock) large_box.addItem(QtGui.QSpacerItem(100, 250)) gripper_box = QtGui.QHBoxLayout() gripper_box.addItem(QtGui.QSpacerItem(75, 20)) gripper_box.addWidget(left_gripper) gripper_box.addWidget(knock_button) gripper_box.addItem(QtGui.QSpacerItem(450, 20)) gripper_box.addWidget(right_gripper) gripper_box.addItem(QtGui.QSpacerItem(75, 20)) large_box.addLayout(gripper_box) # Buttons to move the base base_box = QtGui.QVBoxLayout() large_box.addItem(QtGui.QSpacerItem(100, 100)) forward_base_box = QtGui.QHBoxLayout() forward_base = Base(Base.FORWARD, self) forward_base_button = self.create_button('move forward', forward_base.create_closure()) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) forward_base_box.addWidget(forward_base_button) forward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(forward_base_box) left_right_base_box = QtGui.QHBoxLayout() left_base = Base(Base.LEFT, self) left_base_button = self.create_button('move left', left_base.create_closure()) right_base = Base(Base.RIGHT, self) right_base_button = self.create_button('move right', right_base.create_closure()) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) left_right_base_box.addWidget(left_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(50, 20)) left_right_base_box.addWidget(right_base_button) left_right_base_box.addItem(QtGui.QSpacerItem(300, 20)) base_box.addLayout(left_right_base_box) backward_base_box = QtGui.QHBoxLayout() backward_base = Base(Base.BACKWARD, self) backward_base_button = self.create_button( 'move backward', backward_base.create_closure()) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) backward_base_box.addWidget(backward_base_button) backward_base_box.addItem(QtGui.QSpacerItem(400, 20)) base_box.addLayout(backward_base_box) large_box.addLayout(base_box) turn_base_box = QtGui.QHBoxLayout() counter_base = Base(Base.COUNTER, self) counter_base_button = self.create_button('\\\n -->', counter_base.create_closure()) clockwise_base = Base(Base.CLOCKWISE, self) clockwise_base_button = self.create_button( ' /\n<--', clockwise_base.create_closure()) turn_base_box.addItem(QtGui.QSpacerItem(75, 20)) turn_base_box.addWidget(counter_base_button) turn_base_box.addItem(QtGui.QSpacerItem(225, 20)) turn_base_box.addWidget(clockwise_base_button) turn_base_box.addItem(QtGui.QSpacerItem(100, 20)) large_box.addLayout(turn_base_box) self._widget.setObjectName('WaterPulse') self._widget.setLayout(large_box) context.add_widget(self._widget) self._widget.setStyleSheet( "QWidget { image: url(%s) }" % (str(os.path.dirname(os.path.realpath(__file__))) + "/../../rosie_background.jpg"))
def __init__(self, context): super(BehaviorTreePlugin, self).__init__(context) self.setObjectName('BehaviorTreePlugin') self.tree = None self.initialized_buttons = False self.prev_graphviz = '' self.behavior_tree_graphviz_sub = rospy.Subscriber('behavior_tree_graphviz', String, self.behavior_tree_graphviz_callback) self.timer = rospy.Timer(rospy.Duration(0.1), self.timer_callback) self.functions_mutex = Lock() self.functions = {} self.last_graphviz_string = '' self.widget = QWidget() self.vbox = qt.QVBoxLayout() self.widget.setLayout(self.vbox) context.add_widget(self.widget) #self.widget.setStyleSheet('QWidget{margin-left:-1px;}') self.top_widget = qt.QWidget() self.top_layout = qt.QVBoxLayout() self.top_widget.setLayout(self.top_layout) self.graph_widget = qt.QWidget() self.graph_layout = qt.QVBoxLayout() self.graph_widget.setLayout(self.graph_layout) self.image_label = qt.QLabel('asdfadsf') #self.graph_layout.addWidget(self.image_label) self.xdot_widget = DotWidget() self.graph_layout.addWidget(self.xdot_widget) self.top_layout.addWidget(self.graph_widget) self.graph_widget.setStyleSheet("background-color: rgb(255, 255, 255);") self.config_widget = qt.QWidget() self.config_widget.setStyleSheet('QWidget{margin-left:-1px;}') self.config_layout = qt.QHBoxLayout() self.config_widget.setLayout(self.config_layout) self.config_widget.setFixedHeight(50) self.config_button = qt.QPushButton('Open Config...') self.config_button.clicked.connect(self.select_config_file) self.config_layout.addWidget(self.config_button) self.tree_label = qt.QLabel('tree filename: ') self.config_layout.addWidget(self.tree_label) self.debug_checkbox = qt.QCheckBox('Debug Mode') self.config_layout.addWidget(self.debug_checkbox) self.debug_checkbox.stateChanged.connect(self.debug_mode_changed) #self.config_widget.setStyleSheet("background-color: rgb(255, 0, 0);") self.top_layout.addWidget(self.config_widget) #self.vbox.addWidget(self.top_widget) self.button_container_widget = qt.QWidget() self.button_container_layout = qt.QVBoxLayout() self.button_container_widget.setLayout(self.button_container_layout) #self.vbox.addWidget(self.button_container_widget) self.button_widget = qt.QWidget() self.button_layout = qt.QHBoxLayout() self.button_widget.setLayout(self.button_layout) #self.button_widget.setStyleSheet("background-color: rgb(0, 0, 255);") self.condition_widget = qt.QWidget() self.condition_layout = qt.QVBoxLayout() self.condition_widget.setLayout(self.condition_layout) self.button_layout.addWidget(self.condition_widget) self.condition_label = qt.QLabel() self.condition_label.setText('Conditions') self.condition_label.setAlignment(Qt.AlignCenter) self.condition_label.setFont(gui.QFont("SansSerif", 18, gui.QFont.Bold)) self.condition_layout.addWidget(self.condition_label) self.action_widget = qt.QWidget() self.action_layout = qt.QVBoxLayout() self.action_widget.setLayout(self.action_layout) self.button_layout.addWidget(self.action_widget) self.action_label = qt.QLabel() self.action_label.setText('Actions') self.action_label.setAlignment(Qt.AlignCenter) self.action_label.setFont(gui.QFont("SansSerif", 18, gui.QFont.Bold)) self.action_layout.addWidget(self.action_label) self.button_scroll_area = qt.QScrollArea() self.button_scroll_area.setWidget(self.button_widget) #self.button_scroll_area.setFixedHeight(200) #self.button_container_widget.setFixedHeight(200) self.button_container_layout.addWidget(self.button_scroll_area) self.button_widget.setMinimumWidth(self.button_scroll_area.sizeHint().width()) self.button_scroll_area.setWidgetResizable(True) self.horizontal_splitter = qt.QSplitter(core.Qt.Vertical) self.horizontal_splitter.addWidget(self.top_widget) self.horizontal_splitter.addWidget(self.button_container_widget) self.vbox.addWidget(self.horizontal_splitter) self.button_container_widget.hide()
def setupUi(self, MainWindow): ############################################################################################### self.lock = Lock() self.talker = Talker('gui') rospy.Subscriber('bbBackup',bbBackup,self.backupFunction) rospy.Subscriber('clicked_point',PointStamped,self.clickedPintRviz) ############################################################################################### MainWindow.setObjectName("MainWindow") MainWindow.resize(560, 440) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gBnewTask = QtWidgets.QGroupBox(self.centralwidget) self.gBnewTask.setGeometry(QtCore.QRect(10, 60, 541, 291)) self.gBnewTask.setObjectName("gBnewTask") self.gBc = QtWidgets.QGroupBox(self.gBnewTask) self.gBc.setEnabled(False) self.gBc.setGeometry(QtCore.QRect(420, 80, 111, 151)) self.gBc.setObjectName("gBc") self.label_29 = QtWidgets.QLabel(self.gBc) self.label_29.setGeometry(QtCore.QRect(10, 30, 16, 21)) self.label_29.setObjectName("label_29") self.label_30 = QtWidgets.QLabel(self.gBc) self.label_30.setGeometry(QtCore.QRect(10, 90, 21, 21)) self.label_30.setObjectName("label_30") self.label_31 = QtWidgets.QLabel(self.gBc) self.label_31.setGeometry(QtCore.QRect(10, 60, 16, 21)) self.label_31.setObjectName("label_31") self.cx = QtWidgets.QDoubleSpinBox(self.gBc) self.cx.setGeometry(QtCore.QRect(30, 30, 69, 26)) self.cx.setObjectName("cx") self.cx.setRange(-100.0,100.0) self.cy = QtWidgets.QDoubleSpinBox(self.gBc) self.cy.setGeometry(QtCore.QRect(30, 60, 69, 26)) self.cy.setObjectName("cy") self.cy.setRange(-100.0,100.0) self.cz = QtWidgets.QDoubleSpinBox(self.gBc) self.cz.setGeometry(QtCore.QRect(30, 90, 69, 26)) self.cz.setObjectName("cz") self.cz.setRange(-100.0,100.0) self.cw = QtWidgets.QDoubleSpinBox(self.gBc) self.cw.setGeometry(QtCore.QRect(30, 120, 69, 26)) self.cw.setObjectName("cw") self.cw.setRange(-100.0,100.0) self.label_39 = QtWidgets.QLabel(self.gBc) self.label_39.setGeometry(QtCore.QRect(10, 120, 21, 21)) self.label_39.setObjectName("label_39") self.gBb = QtWidgets.QGroupBox(self.gBnewTask) self.gBb.setEnabled(False) self.gBb.setGeometry(QtCore.QRect(300, 80, 111, 151)) self.gBb.setObjectName("gBb") self.label_40 = QtWidgets.QLabel(self.gBb) self.label_40.setGeometry(QtCore.QRect(10, 30, 16, 21)) self.label_40.setObjectName("label_40") self.label_41 = QtWidgets.QLabel(self.gBb) self.label_41.setGeometry(QtCore.QRect(10, 90, 21, 21)) self.label_41.setObjectName("label_41") self.label_42 = QtWidgets.QLabel(self.gBb) self.label_42.setGeometry(QtCore.QRect(10, 60, 16, 21)) self.label_42.setObjectName("label_42") self.bx = QtWidgets.QDoubleSpinBox(self.gBb) self.bx.setGeometry(QtCore.QRect(30, 30, 69, 26)) self.bx.setObjectName("bx") self.bx.setRange(-100.0,100.0) self.by = QtWidgets.QDoubleSpinBox(self.gBb) self.by.setGeometry(QtCore.QRect(30, 60, 69, 26)) self.by.setObjectName("by") self.by.setRange(-100.0,100.0) self.bz = QtWidgets.QDoubleSpinBox(self.gBb) self.bz.setGeometry(QtCore.QRect(30, 90, 69, 26)) self.bz.setObjectName("bz") self.bz.setRange(-100.0,100.0) self.bw = QtWidgets.QDoubleSpinBox(self.gBb) self.bw.setGeometry(QtCore.QRect(30, 120, 69, 26)) self.bw.setObjectName("bw") self.bw.setRange(-100.0,100.0) self.label_43 = QtWidgets.QLabel(self.gBb) self.label_43.setGeometry(QtCore.QRect(10, 120, 21, 21)) self.label_43.setObjectName("label_43") self.gBtaskType = QtWidgets.QGroupBox(self.gBnewTask) self.gBtaskType.setGeometry(QtCore.QRect(10, 80, 161, 151)) self.gBtaskType.setObjectName("gBtaskType") self.radioButton = QtWidgets.QRadioButton(self.gBtaskType) self.radioButton.setEnabled(True) self.radioButton.setGeometry(QtCore.QRect(10, 30, 131, 23)) self.radioButton.setChecked(True) self.radioButton.setObjectName("radioButton") self.radioButton_2 = QtWidgets.QRadioButton(self.gBtaskType) self.radioButton_2.setGeometry(QtCore.QRect(10, 60, 101, 23)) self.radioButton_2.setObjectName("radioButton_2") self.radioButton_3 = QtWidgets.QRadioButton(self.gBtaskType) self.radioButton_3.setGeometry(QtCore.QRect(10, 90, 131, 23)) self.radioButton_3.setObjectName("radioButton_3") self.radioButton_4 = QtWidgets.QRadioButton(self.gBtaskType) self.radioButton_4.setGeometry(QtCore.QRect(10, 120, 141, 23)) self.radioButton_4.setObjectName("radioButton_4") self.gBa = QtWidgets.QGroupBox(self.gBnewTask) self.gBa.setEnabled(True) self.gBa.setGeometry(QtCore.QRect(180, 80, 111, 151)) self.gBa.setObjectName("gBa") self.label_25 = QtWidgets.QLabel(self.gBa) self.label_25.setGeometry(QtCore.QRect(10, 30, 16, 21)) self.label_25.setObjectName("label_25") self.label_26 = QtWidgets.QLabel(self.gBa) self.label_26.setGeometry(QtCore.QRect(10, 90, 21, 21)) self.label_26.setObjectName("label_26") self.label_27 = QtWidgets.QLabel(self.gBa) self.label_27.setGeometry(QtCore.QRect(10, 60, 16, 21)) self.label_27.setObjectName("label_27") self.ax = QtWidgets.QDoubleSpinBox(self.gBa) self.ax.setGeometry(QtCore.QRect(30, 30, 69, 26)) self.ax.setObjectName("ax") self.ax.setRange(-100.0,100.0) self.ay = QtWidgets.QDoubleSpinBox(self.gBa) self.ay.setGeometry(QtCore.QRect(30, 60, 69, 26)) self.ay.setObjectName("ay") self.ay.setRange(-100.0,100.0) self.az = QtWidgets.QDoubleSpinBox(self.gBa) self.az.setGeometry(QtCore.QRect(30, 90, 69, 26)) self.az.setObjectName("az") self.az.setRange(-100.0,100.0) self.aw = QtWidgets.QDoubleSpinBox(self.gBa) self.aw.setGeometry(QtCore.QRect(30, 120, 69, 26)) self.aw.setObjectName("aw") self.aw.setRange(-100.0,100.0) self.label_28 = QtWidgets.QLabel(self.gBa) self.label_28.setGeometry(QtCore.QRect(10, 120, 21, 21)) self.label_28.setObjectName("label_28") self.btnAddTask = QtWidgets.QPushButton(self.gBnewTask) self.btnAddTask.setEnabled(True) self.btnAddTask.setGeometry(QtCore.QRect(10, 240, 521, 31)) self.btnAddTask.setObjectName("btnAddTask") self.widget = QtWidgets.QWidget(self.gBnewTask) self.widget.setGeometry(QtCore.QRect(10, 30, 521, 28)) self.widget.setObjectName("widget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.label_3 = QtWidgets.QLabel(self.widget) self.label_3.setObjectName("label_3") self.horizontalLayout.addWidget(self.label_3) self.sBtaskid = QtWidgets.QSpinBox(self.widget) self.sBtaskid.setObjectName("sBtaskid") self.horizontalLayout.addWidget(self.sBtaskid) self.label_4 = QtWidgets.QLabel(self.widget) self.label_4.setObjectName("label_4") self.horizontalLayout.addWidget(self.label_4) self.sbtaskPriority = QtWidgets.QSpinBox(self.widget) self.sbtaskPriority.setObjectName("sbtaskPriority") self.horizontalLayout.addWidget(self.sbtaskPriority) self.label_5 = QtWidgets.QLabel(self.widget) self.label_5.setObjectName("label_5") self.horizontalLayout.addWidget(self.label_5) self.sbtaskPayload = QtWidgets.QSpinBox(self.widget) self.sbtaskPayload.setObjectName("sbtaskPayload") self.horizontalLayout.addWidget(self.sbtaskPayload) self.gBrobotState = QtWidgets.QGroupBox(self.centralwidget) self.gBrobotState.setGeometry(QtCore.QRect(10, 360, 541, 71)) self.gBrobotState.setObjectName("gBrobotState") self.sBrobotId = QtWidgets.QSpinBox(self.gBrobotState) self.sBrobotId.setGeometry(QtCore.QRect(80, 30, 48, 31)) self.sBrobotId.setObjectName("sBrobotId") self.radioButton_5 = QtWidgets.QRadioButton(self.gBrobotState) self.radioButton_5.setGeometry(QtCore.QRect(140, 32, 61, 31)) self.radioButton_5.setChecked(True) self.radioButton_5.setObjectName("radioButton_5") self.radioButton_6 = QtWidgets.QRadioButton(self.gBrobotState) self.radioButton_6.setGeometry(QtCore.QRect(280, 32, 71, 31)) self.radioButton_6.setObjectName("radioButton_6") self.radioButton_7 = QtWidgets.QRadioButton(self.gBrobotState) self.radioButton_7.setGeometry(QtCore.QRect(210, 32, 51, 31)) self.radioButton_7.setObjectName("radioButton_7") self.btnsetRobotState = QtWidgets.QPushButton(self.gBrobotState) self.btnsetRobotState.setEnabled(True) self.btnsetRobotState.setGeometry(QtCore.QRect(380, 30, 151, 31)) self.btnsetRobotState.setObjectName("btnsetRobotState") self.label_32 = QtWidgets.QLabel(self.gBrobotState) self.label_32.setGeometry(QtCore.QRect(10, 30, 81, 31)) self.label_32.setObjectName("label_32") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(10, 20, 81, 17)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(300, 20, 141, 17)) self.label_2.setObjectName("label_2") self.lblblackBoard = QtWidgets.QLabel(self.centralwidget) self.lblblackBoard.setGeometry(QtCore.QRect(100, 20, 141, 17)) font = QtGui.QFont() font.setItalic(True) self.lblblackBoard.setFont(font) self.lblblackBoard.setObjectName("lblblackBoard") self.lblbackupBlackboard = QtWidgets.QLabel(self.centralwidget) self.lblbackupBlackboard.setGeometry(QtCore.QRect(450, 20, 91, 17)) font = QtGui.QFont() font.setItalic(True) self.lblbackupBlackboard.setFont(font) self.lblbackupBlackboard.setObjectName("lblbackupBlackboard") MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.currentpint = 1