teach_mode.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 #Disabling E1002 check since it complains about super for no reason - inheriting from QObject
00004 #pylint: disable=E1002
00005 
00006 import os
00007 from python_qt_binding import loadUi
00008 from qt_gui.plugin import Plugin
00009 from QtGui import QWidget
00010 import rospy
00011 import rospkg
00012 from sr_robot_msgs.srv import RobotTeachMode, RobotTeachModeRequest, RobotTeachModeResponse
00013 
00014 
00015 class SrGuiTeachMode(Plugin):
00016     """
00017     A rosgui plugin for loading the different controllers
00018     """
00019 
00020     def __init__(self, context):
00021         super(SrGuiTeachMode, self).__init__(context)
00022         self.setObjectName('SrGuiTeachMode')
00023 
00024         self._publisher = None
00025         self._widget = QWidget()
00026 
00027         ui_file = os.path.join(rospkg.RosPack().get_path('sr_gui_teach_mode'), 'uis', 'SrTeachMode.ui')
00028         loadUi(ui_file, self._widget)
00029         self._widget.setObjectName('SrTeachModeUi')
00030         context.add_widget(self._widget)
00031 
00032         self._rh_teach_buttons = []
00033         self._lh_teach_buttons = []
00034         self._ra_teach_buttons = []
00035         self._la_teach_buttons = []
00036 
00037         # rh group
00038         self._rh_teach_buttons.append(self._widget.radioButton_1)
00039         self._rh_teach_buttons.append(self._widget.radioButton_2)
00040         self._rh_teach_buttons.append(self._widget.radioButton_3)
00041         self._widget.radioButton_1.toggled.connect(self.teach_mode_button_toggled_rh)
00042         self._widget.radioButton_2.toggled.connect(self.teach_mode_button_toggled_rh)
00043         self._widget.radioButton_3.toggled.connect(self.teach_mode_button_toggled_rh)
00044 
00045         # lh group
00046         self._lh_teach_buttons.append(self._widget.radioButton_4)
00047         self._lh_teach_buttons.append(self._widget.radioButton_5)
00048         self._lh_teach_buttons.append(self._widget.radioButton_6)
00049         self._widget.radioButton_4.toggled.connect(self.teach_mode_button_toggled_lh)
00050         self._widget.radioButton_5.toggled.connect(self.teach_mode_button_toggled_lh)
00051         self._widget.radioButton_6.toggled.connect(self.teach_mode_button_toggled_lh)
00052 
00053         # ra group
00054         self._ra_teach_buttons.append(self._widget.radioButton_7)
00055         self._ra_teach_buttons.append(self._widget.radioButton_8)
00056         self._ra_teach_buttons.append(self._widget.radioButton_9)
00057         self._widget.radioButton_7.toggled.connect(self.teach_mode_button_toggled_ra)
00058         self._widget.radioButton_8.toggled.connect(self.teach_mode_button_toggled_ra)
00059         self._widget.radioButton_9.toggled.connect(self.teach_mode_button_toggled_ra)
00060 
00061         # la group
00062         self._la_teach_buttons.append(self._widget.radioButton_10)
00063         self._la_teach_buttons.append(self._widget.radioButton_11)
00064         self._la_teach_buttons.append(self._widget.radioButton_12)
00065         self._widget.radioButton_10.toggled.connect(self.teach_mode_button_toggled_la)
00066         self._widget.radioButton_11.toggled.connect(self.teach_mode_button_toggled_la)
00067         self._widget.radioButton_12.toggled.connect(self.teach_mode_button_toggled_la)
00068 
00069     def teach_mode_button_toggled_rh(self, checked):
00070         self.teach_mode_button_toggled(checked, "right_hand", self._rh_teach_buttons)
00071 
00072     def teach_mode_button_toggled_lh(self, checked):
00073         self.teach_mode_button_toggled(checked, "left_hand", self._lh_teach_buttons)
00074 
00075     def teach_mode_button_toggled_ra(self, checked):
00076         self.teach_mode_button_toggled(checked, "right_arm", self._ra_teach_buttons)
00077 
00078     def teach_mode_button_toggled_la(self, checked):
00079         self.teach_mode_button_toggled(checked, "left_arm", self._la_teach_buttons)
00080 
00081     def teach_mode_button_toggled(self, checked, robot, buttons):
00082         if checked:
00083             if buttons[0].isChecked():
00084                 mode = RobotTeachModeRequest.TRAJECTORY_MODE
00085             elif buttons[1].isChecked():
00086                 mode = RobotTeachModeRequest.TEACH_MODE
00087             elif buttons[2].isChecked():
00088                 mode = RobotTeachModeRequest.POSITION_MODE
00089             else:
00090                 rospy.logerr("None of the buttons checked for robot %s", robot)
00091                 return
00092 
00093             rospy.loginfo("Changing robot %s to mode %d", robot, mode)
00094             self.change_teach_mode(mode, robot)
00095 
00096     @staticmethod
00097     def change_teach_mode(mode, robot):
00098 
00099         teach_mode_client = rospy.ServiceProxy('/teach_mode', RobotTeachMode)
00100 
00101         req = RobotTeachModeRequest()
00102         req.teach_mode = mode
00103         req.robot = robot
00104         try:
00105             resp = teach_mode_client(req)
00106             if resp.result == RobotTeachModeResponse.ERROR:
00107                 rospy.logerr("Failed to change robot %s to mode %d", robot, mode)
00108             else:
00109                 rospy.loginfo("Changed robot %s to mode %d Result = %d", robot, mode, resp.result)
00110         except rospy.ServiceException:
00111             rospy.logerr("Failed to call service teach_mode")


sr_gui_teach_mode
Author(s): Toni Oliver
autogenerated on Fri Aug 28 2015 17:17:25