Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 from python_qt_binding.QtGui import QMessageBox
00038
00039 import actionlib
00040 import rospy
00041 from rqt_robot_dashboard.widgets import MenuDashWidget
00042 import std_srvs.srv
00043
00044 from naoqi_bridge_msgs.msg import BodyPoseWithSpeedAction, BodyPoseWithSpeedGoal
00045
00046
00047 class Motors(MenuDashWidget):
00048 """
00049 Dashboard widget to display motor state and allow interaction.
00050 """
00051 def __init__(self, context, topic_prefix):
00052 """
00053 :param context: the plugin context
00054 :type context: qt_gui.plugin.Plugin
00055 :param reset_callback: calback for the "reset" action
00056 :type reset_callback: function
00057 :param halt_callback: calback for the "reset" action
00058 :type halt_callback: function
00059 """
00060 ok_icon = ['bg-green.svg', 'ic-motors.svg']
00061 warn_icon = ['bg-yellow.svg', 'ic-motors.svg', 'ol-warn-badge.svg']
00062 err_icon = ['bg-red.svg', 'ic-motors.svg', 'ol-err-badge.svg']
00063 stale_icon = ['bg-grey.svg', 'ic-motors.svg', 'ol-stale-badge.svg']
00064
00065 icons = [ok_icon, warn_icon, err_icon, stale_icon]
00066
00067 super(Motors, self).__init__('Motors', icons)
00068 self.update_state(3)
00069
00070 self.add_action('Wakeup', self.on_wakeup)
00071 self.add_action('Rest', self.on_rest)
00072 self.add_action('Enable Life', self.on_enable_life)
00073 self.add_action('Disable Life', self.on_disable_life)
00074 self.add_action('Remove stiffness immediately', self.on_remove_stiffness)
00075
00076
00077 self.stiffnessEnableClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/body_stiffness/enable", std_srvs.srv.Empty)
00078 self.stiffnessDisableClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/body_stiffness/disable", std_srvs.srv.Empty)
00079 self.wakeupClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/wakeup", std_srvs.srv.Empty)
00080 self.restClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/rest", std_srvs.srv.Empty)
00081 self.lifeEnableClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/life/enable", std_srvs.srv.Empty)
00082 self.lifeDisableClient = rospy.ServiceProxy(str(topic_prefix)+"/pose/life/disable", std_srvs.srv.Empty)
00083
00084 def set_ok(self):
00085 self.update_state(0)
00086
00087 def set_warn(self):
00088 self.update_state(1)
00089
00090 def set_error(self):
00091 self.update_state(2)
00092
00093 def set_stale(self):
00094 self.update_state(3)
00095
00096 def on_wakeup(self):
00097 self.wakeupClient.call()
00098
00099 def on_rest(self):
00100 self.restClient.call()
00101
00102 def on_enable_life(self):
00103 self.lifeEnableClient.call()
00104
00105 def on_disable_life(self):
00106 self.lifeDisableClient.call()
00107
00108 def on_remove_stiffness(self):
00109 reply = QMessageBox.question(self, 'Caution',
00110 'Robot may fall. Continue to remove stiffness?', QMessageBox.Yes, QMessageBox.No)
00111 if(reply == QMessageBox.Yes):
00112 self.stiffnessDisableClient.call()