Go to the documentation of this file.00001
00002
00003 import sys
00004 import yaml
00005 import numpy as np
00006
00007 import roslib
00008 roslib.load_manifest("hrl_face_adls")
00009 import rospy
00010
00011 from hrl_pr2_arms.ep_arm_base import create_ep_arm
00012 from hrl_ellipsoidal_control.ellipsoid_controller import EllipsoidParamServer
00013 from hrl_face_adls.srv import RequestRegistration
00014
00015 def main():
00016 rospy.init_node("record_ell_poses")
00017 assert len(sys.argv) == 4
00018 tool = sys.argv[1]
00019 modes = {"shaver" : "shaving", "spoon" : "feeding", "scratcher" : "scratching" }
00020 mode = modes[tool]
00021 side = sys.argv[2]
00022
00023 request_registration = rospy.ServiceProxy("/request_registration", RequestRegistration)
00024 print "Waiting for /request_registration"
00025 request_registration.wait_for_service()
00026 raw_input("Load Registration")
00027 reg_resp = request_registration(mode, side)
00028 if not reg_resp.success:
00029 print "Not registered"
00030 return
00031 eps = EllipsoidParamServer()
00032 eps.load_params(reg_resp.e_params)
00033 end_link = "l_gripper_%s45_frame" % tool
00034 arm = create_pr2_arm('l', end_link=end_link, timeout=1.)
00035 poses = {}
00036 while not rospy.is_shutdown():
00037 name = raw_input("Type name for this pose (Enter nothing to stop): ")
00038 if name == "":
00039 break
00040 ell_coords, ell_quat = eps.get_ell_pose(arm.get_end_effector_pose())
00041 poses[name] = [np.array(ell_coords).tolist(), ell_quat.tolist()]
00042 f = file(sys.argv[3], 'w')
00043 yaml.dump(poses, f)
00044 f.close()
00045
00046 if __name__ == "__main__":
00047 main()