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 import roslib; roslib.load_manifest('pr2_calibration_launch')
00035 import rospy
00036 import yaml
00037 import sys
00038 import pr2_calibration_executive.capture_exec
00039 import time
00040 from calibration_msgs.msg import RobotMeasurement
00041 import os
00042 import string
00043
00044 print "Starting executive..."
00045 time.sleep(7.0)
00046
00047 rospy.init_node("pr2_capture_executive_node")
00048
00049 samples_dir = rospy.myargv()[1]
00050 config_dir = rospy.myargv()[2]
00051
00052 executive = pr2_calibration_executive.capture_exec.CaptureExecutive(config_dir)
00053 time.sleep(1.0)
00054
00055 left_sample_names = [x for x in os.listdir(samples_dir + "/left/") if ".yaml" in x]
00056 right_sample_names = []
00057 far_sample_names = []
00058 right_sample_names = [x for x in os.listdir(samples_dir + "/right/") if ".yaml" in x]
00059 far_sample_names = [x for x in os.listdir(samples_dir + "/far/") if ".yaml" in x]
00060
00061 left_sample_names.sort()
00062 right_sample_names.sort()
00063 far_sample_names.sort()
00064
00065 print "Left Samples: \n - %s" % "\n - ".join(left_sample_names)
00066 print "Right Samples: \n - %s" % "\n - ".join(right_sample_names)
00067 print "Far Samples: \n - %s" % "\n - ".join(far_sample_names)
00068
00069 pub = rospy.Publisher("robot_measurement", RobotMeasurement)
00070
00071 far_success_count = 0
00072 left_success_count = 0
00073 left_fail_count = 0
00074 right_success_count = 0
00075 right_fail_count = 0
00076
00077
00078 try:
00079
00080 keep_collecting = True
00081
00082 while not rospy.is_shutdown() and keep_collecting:
00083 print "Choose L,R, or F"
00084 resp = raw_input("> ")
00085 if string.upper(resp) == "L":
00086 print "Choose sample index"
00087 resp = raw_input("> ")
00088 cur_sample_path = samples_dir + "/left/" + left_sample_names[int(resp)]
00089 elif string.upper(resp) == "R":
00090 print "Choose sample index"
00091 resp = raw_input("> ")
00092 cur_sample_path = samples_dir + "/right/" + right_sample_names[int(resp)]
00093 elif string.upper(resp) == "F":
00094 cur_sample_path = samples_dir + "/far/" + far_sample_names[0]
00095 elif string.upper(resp) == "":
00096 print "Repeating Previous Command"
00097 else:
00098 print "Unknown input. Exiting"
00099 break
00100
00101 print "On sample [%s]" % cur_sample_path
00102 cur_config = yaml.load(open(cur_sample_path))
00103
00104 print "Choose Timeout"
00105 timeout = raw_input("> ")
00106 if timeout == "":
00107 timeout = "1.0"
00108
00109 m_robot = executive.capture(cur_config, rospy.Duration(float(timeout)))
00110 if m_robot is None:
00111 print "--------------- Failed To Capture a Far Sample -----------------"
00112 else:
00113 print "++++++++++++++ Successfully Captured a Far Sample ++++++++++++++"
00114 pub.publish(m_robot)
00115
00116
00117 except EOFError:
00118 print "Exiting"
00119