예제 #1
0
 def make_traj(warped_demo, inds=None, offset=0):
     traj = {}
     total_feas_inds = 0
     all_feas = True
     for lr in "lr":
         leftright = {"l":"left","r":"right"}[lr]
         if "%s_gripper_tool_frame"%lr in warped_demo:
             pos = warped_demo["%s_gripper_tool_frame"%lr]["position"]
             ori = warped_demo["%s_gripper_tool_frame"%lr]["orientation"]
             if inds is not None:
                 pos, ori = pos[inds], ori[inds]
             arm_traj, feas_inds = lfd_traj.make_joint_traj_by_graph_search(
                 pos + offset,
                 ori,
                 pr2.robot.GetManipulator("%sarm"%leftright),
                 "%s_gripper_tool_frame"%lr,
                 check_collisions=True)
             if len(feas_inds) == 0: assert False and 'failure'
             traj["%s_arm"%lr] = arm_traj
             traj["%s_arm_feas_inds"%lr] = feas_inds
             total_feas_inds += len(feas_inds)
             all_feas = all_feas and len(feas_inds) == len(arm_traj)
             rospy.loginfo("%s arm: %i of %i points feasible", leftright, len(feas_inds), len(arm_traj))
     return traj, total_feas_inds, all_feas
예제 #2
0
traj, warped_demo = None, None
if args.traj_file:
    with open(args.traj_file, 'r') as f:
        traj = pickle.load(f)
        print traj
else:
    with open(args.warped_demo, 'r') as f:
        warped_demo = pickle.load(f)
    traj = {}
    for lr in "lr":
        leftright = {"l": "left", "r": "right"}[lr]
        #if best_demo["arms_used"] in [lr, "b"]:
        if True:
            arm_traj, feas_inds = lfd_traj.make_joint_traj_by_graph_search(
                warped_demo["%s_gripper_tool_frame" % lr]["position"],
                warped_demo["%s_gripper_tool_frame" % lr]["orientation"],
                pr2.robot.GetManipulator("%sarm" % leftright),
                "%s_gripper_tool_frame" % lr,
                check_collisions=True)
            if len(feas_inds) == 0: assert False and 'failure'
            traj["%s_arm" % lr] = arm_traj
            rospy.loginfo("%s arm: %i of %i points feasible", leftright,
                          len(feas_inds), len(arm_traj))


def show_ik_solns(part_name, manip, i, warped_demo):
    frame = "%s_gripper_tool_frame" % part_name[0]
    hmat = conv.trans_rot_to_hmat(warped_demo[frame]['position'][i],
                                  warped_demo[frame]['orientation'][i])
    solns = traj_ik_graph_search.ik_for_link(hmat,
                                             manip,
                                             frame,
예제 #3
0
if args.traj_file:
    with open(args.traj_file, 'r') as f:
        traj = pickle.load(f)
        print traj
else:
    with open(args.warped_demo, 'r') as f:
        warped_demo = pickle.load(f)
    traj = {}
    for lr in "lr":
        leftright = {"l":"left","r":"right"}[lr]
        #if best_demo["arms_used"] in [lr, "b"]:
        if True:
            arm_traj, feas_inds = lfd_traj.make_joint_traj_by_graph_search(
                warped_demo["%s_gripper_tool_frame"%lr]["position"],
                warped_demo["%s_gripper_tool_frame"%lr]["orientation"],
                pr2.robot.GetManipulator("%sarm"%leftright),
                "%s_gripper_tool_frame"%lr,
                check_collisions=True
            )
            if len(feas_inds) == 0: assert False and 'failure'
            traj["%s_arm"%lr] = arm_traj
            rospy.loginfo("%s arm: %i of %i points feasible", leftright, len(feas_inds), len(arm_traj))

def show_ik_solns(part_name, manip, i, warped_demo):
    frame = "%s_gripper_tool_frame"%part_name[0]
    hmat = conv.trans_rot_to_hmat(warped_demo[frame]['position'][i], warped_demo[frame]['orientation'][i])
    solns = traj_ik_graph_search.ik_for_link(hmat, manip, frame, return_all_solns=True)

    # newrobots = []
    print 'Displaying', len(solns), 'IK solutions for', part_name, 'at time', i
    print solns