def goto_aruco(tag_id, offset_x, offset_y, offset_z):
    tf_listener = tf.TransformListener()
    tag_frame_name = 'tag_'+str(tag_id)
    tf_listener.waitForTransform('/world', tag_frame_name, rospy.Time(), rospy.Duration(4.0))
    (trans_tag, rot_tag) = tf_listener.lookupTransform('/world', tag_frame_name, rospy.Time(0)) 
    motion_primitives.set_pose([trans_tag[0]+offset_x, trans_tag[1]+offset_y, trans_tag[2]+offset_z, -0.7071, -0.0, 0.7071, 0.0])
        
    print trans_tag, rot_tag
Пример #2
0
        sim = config['sim']
        table_height_wrt_world = -0.02
        
        # Set TCP speed     
        group.set_max_velocity_scaling_factor(tcp_speed)
        
        
        pre_pick_pose = [-0.092, 0.592, 0.416, 0.7071, -0.0, -0.7071, 0.0]
        pick_pose = [-0.092, 0.592, 0.282, 0.7071, -0.0, -0.7071, 0.0]
        init_pose=[-0.344, 0.538, 0.458, -0.7071, -0.0, 0.7071, 0.0]
        regrasp_pose=[-0.344, 0.538, 0.350, -0.7071, -0.0, 0.7071, 0.0]
        
        Robotiq.goto(robotiq_client, pos=0.04, speed=config['gripper_speed'], force=config['gripper_force'], block=False)   
        rospy.sleep(0.5)
                
        motion_primitives.set_pose(pre_pick_pose)
        rospy.sleep(0.5)
        motion_primitives.set_pose(pick_pose)
        rospy.sleep(1)
        Robotiq.goto(robotiq_client, pos=object_thickness+0.002, speed=config['gripper_speed'], force=config['gripper_force'], block=False)   
        rospy.sleep(1)
        motion_primitives.set_pose(pre_pick_pose)
        #Robotiq.goto(robotiq_client, pos=object_thickness+0.003, speed=config['gripper_speed'], force=config['gripper_force'], block=False)   
        
        
        motion_primitives.set_pose(regrasp_pose)
        
        #for i in range(11):
        #    rospy.sleep(1)
        #    print 10-i
        dynamixel.set_length(115)
        #Robotiq.goto(robotiq_client, pos=object_thickness+0.015, speed=config['gripper_speed'], force=config['gripper_force'], block=False)
        #rospy.sleep(0.5)
        #motion_primitives.set_pose(init_pose)
        #motion_primitives.set_pose(prepick_pose)
        #motion_primitives.set_pose(pick_pose)
        Robotiq.goto(robotiq_client,
                     pos=object_thickness + 0.006,
                     speed=config['gripper_speed'],
                     force=config['gripper_force'],
                     block=False)
        rospy.sleep(0.5)
        #motion_primitives.set_pose(prepick_pose)
        #motion_primitives.set_pose(tilt_pose)
        motion_primitives.set_pose(prior_pose)
        rospy.sleep(10)
        motion_primitives.set_pose(initial_pose)

        # read position from real robot.

        p = group.get_current_pose().pose
        trans_tool0 = [p.position.x, p.position.y, p.position.z]
        rot_tool0 = [
            p.orientation.x, p.orientation.y, p.orientation.z, p.orientation.w
        ]
        T_wg = tf.TransformerROS().fromTranslationRotation(
            trans_tool0, rot_tool0)
        P_g_center = [
            tcp2fingertip + object_length - delta_0, -object_thickness / 2, 0,
            1
Пример #4
0
        #Robotiq.goto(robotiq_client, pos=0.04, speed=config['gripper_speed'], force=config['gripper_force'], block=False)
        #rospy.sleep(0.5)
        #motion_primitives.set_pose(pre_pick_pose)

        #motion_primitives.set_pose(pick_pose)

        Robotiq.goto(robotiq_client,
                     pos=object_thickness + 0.006,
                     speed=config['gripper_speed'],
                     force=config['gripper_force'],
                     block=False)
        #rospy.sleep(0.5)
        #motion_primitives.set_pose(pre_pick_pose)

        motion_primitives.set_pose(regrasp_pose)

        # read position from real robot.

        p = group.get_current_pose().pose
        trans_tool0 = [p.position.x, p.position.y, p.position.z]
        rot_tool0 = [
            p.orientation.x, p.orientation.y, p.orientation.z, p.orientation.w
        ]
        T_wg = tf.TransformerROS().fromTranslationRotation(
            trans_tool0, rot_tool0)
        P_g_center = [tcp2fingertip + object_length - delta_0, 0, 0, 1]
        P_w_center = np.matmul(T_wg, P_g_center)
        center = [P_w_center[0], P_w_center[1], P_w_center[2]]

        # Tilt
Пример #5
0
    try:
        tcp_speed = config['tcp_speed']
        theta_0 = config['theta_0']
        delta_0 = config['delta_0']
        psi_regrasp = config['psi_regrasp']
        theta_tilt = config['theta_tilt']
        tuck_angle = config['tuck']
        axis =  config['axis']
        object_thickness = config['object_thickness']
        object_length = config['object_length']
        tcp2fingertip = config['tcp2fingertip']
        sim = config['sim']
        table_height_wrt_world = -0.02

        pose = [-0.3, 0.630, table_height_wrt_world+tcp2fingertip+object_length-delta_0, 0.7071, 0, -0.7071, 0]
        motion_primitives.set_pose(pose)


        # read position from real robot. 
        p = group.get_current_pose().pose
        trans_tool0 = [p.position.x, p.position.y, p.position.z]
        rot_tool0 = [p.orientation.x, p.orientation.y, p.orientation.z, p.orientation.w] 
        T_wg = tf.TransformerROS().fromTranslationRotation(trans_tool0, rot_tool0)
        P_g_center = [tcp2fingertip+object_length-delta_0, 0, 0, 1]
        P_w_center = np.matmul(T_wg, P_g_center)
        
        # Set TCP speed     
        group.set_max_velocity_scaling_factor(tcp_speed)
        
        # Set gripper position
        Robotiq.goto(robotiq_client, pos=object_thickness+0.005, speed=config['gripper_speed'], force=config['gripper_force'], block=False)   
def calibration(trans_mag, ori_mag):
    p = group.get_current_pose().pose
    pos = [p.position.x, p.position.y, p.position.z]
    ori = [p.orientation.x, p.orientation.y, p.orientation.z, p.orientation.w]
    T_wg = tf.TransformerROS().fromTranslationRotation(pos, ori)

    pos = []
    rot = []
    pos.append(copy.deepcopy([0, trans_mag, 0]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(-ori_mag, 0, 0, 'rzyx')))
    pos.append(copy.deepcopy([0, trans_mag, 0]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, trans_mag, trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(-ori_mag, ori_mag, 0,
                                                     'rzyx')))
    pos.append(copy.deepcopy([0, trans_mag, trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, 0, trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(0, ori_mag, 0, 'rzyx')))
    pos.append(copy.deepcopy([0, 0, trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, -trans_mag, trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(ori_mag, ori_mag, 0,
                                                     'rzyx')))
    pos.append(copy.deepcopy([0, -trans_mag, trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, -trans_mag, 0]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(ori_mag, 0, 0, 'rzyx')))
    pos.append(copy.deepcopy([0, -trans_mag, 0]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, -trans_mag, -trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(ori_mag, -ori_mag, 0,
                                                     'rzyx')))
    pos.append(copy.deepcopy([0, -trans_mag, -trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, 0, -trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(0, -ori_mag, 0, 'rzyx')))
    pos.append(copy.deepcopy([0, 0, -trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, trans_mag, -trans_mag]))
    rot.append(
        copy.deepcopy(
            tf.transformations.quaternion_from_euler(-ori_mag, -ori_mag, 0,
                                                     'rzyx')))
    pos.append(copy.deepcopy([0, trans_mag, -trans_mag]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    pos.append(copy.deepcopy([0, 0, 0]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))
    pos.append(copy.deepcopy([0, 0, 0]))
    rot.append(
        copy.deepcopy(tf.transformations.quaternion_from_euler(
            0, 0, 0, 'rzyx')))

    robot_pose_file = open(os.path.join(path, 'robot_cali.txt'), "a+")
    robot_pose_file.write(str(len(pos)) + "\n")
    robot_pose_file.close()

    for i in range(len(pos)):
        T_gg_target = tf.TransformerROS().fromTranslationRotation(
            pos[i], rot[i])
        T_wg_target = np.matmul(T_wg, T_gg_target)
        trans_target = T_wg_target[:3, 3]
        rot_target = tf.transformations.quaternion_from_matrix(
            T_wg_target[:4][:4])
        pose_target = np.concatenate((trans_target, rot_target), axis=None)
        motion_primitives.set_pose(pose_target)
        get_save_image(i)
        get_write_pose(i)