record_ell_poses.py
Go to the documentation of this file.
00001 #!/usr/bin/python
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()


hrl_face_adls
Author(s): Kelsey Hawkins, Advisor: Prof. Charlie Kemp, Lab: Healthcare Robotics Lab
autogenerated on Wed Nov 27 2013 11:47:39