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 Draws circles around the pr2 shoulders to show distances to the wrist either continuously or when asked to
00037 """
00038
00039 import roslib
00040 roslib.load_manifest('pr2_marker_control')
00041 import rospy
00042 import object_manipulator.draw_functions
00043 import scipy
00044 from std_msgs.msg import Empty
00045 import sys
00046
00047
00048 def draw_circles(duration):
00049 draw_functions.draw_rviz_circle(scipy.matrix(scipy.identity(4)), 0.82, frame = 'l_shoulder_pan_link',
00050 ns = 'left_wrist', id = 0, duration = duration, color = [0,1,1], opaque = 1,
00051 frame_locked = True)
00052 draw_functions.draw_rviz_circle(scipy.matrix(scipy.identity(4)), 0.82, frame = 'r_shoulder_pan_link',
00053 ns = 'right_wrist', id = 0, duration = duration, color = [1,0,1], opaque = 1,
00054 frame_locked = True)
00055
00056
00057 def draw_continuous():
00058 rate = rospy.Rate(2.0)
00059 while not rospy.is_shutdown():
00060 draw_circles(0.)
00061 rate.sleep()
00062
00063
00064 def callback(msg):
00065 print "drawing reachable zones"
00066 draw_circles(20.)
00067
00068 if __name__ == '__main__':
00069 rospy.init_node('draw_reachable_zones')
00070 marker_topic = "grasp_markers"
00071 draw_functions = object_manipulator.draw_functions.DrawFunctions(marker_topic, latch=False)
00072
00073 if len(sys.argv) >= 2 and sys.argv[1] == "c":
00074 print 'drawing reachable zones continuously'
00075 draw_continuous()
00076 else:
00077 rospy.Subscriber("draw_reachable_zones/ping", Empty, callback)
00078 print "subscribed to draw_reachable_zones/ping"
00079 rospy.spin()
00080