def test_moveGripperDeltaAR():
    rospy.init_node('gripper_control',anonymous=True)
    listener = tf.TransformListener()
    gripperControl = GripperControlClass(arm, listener)
    imageDetector = ARImageDetectionClass()
    rospy.sleep(4)
    

    currPose = imageDetector.getGripperPose(arm)
    desPose = imageDetector.getObjectPose()

    
    
    deltaPose = Util.deltaPose(currPose, desPose, MyConstants.Frames.Link0, MyConstants.Frames.LeftTool)
    deltaPose.position.z += .03

    #code.interact(local=locals())
    #return
    

    #gripperControl.start()
    
    
    rospy.loginfo('Press enter')
    raw_input()

    
    gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(MyConstants.Frames.Link0), deltaPose)

    rospy.loginfo('exit')
    raw_input()
def test_moveToHome():
    rospy.init_node('gripper_control',anonymous=True)
    listener = tf.TransformListener()
    gripperControl = GripperControlClass(arm, listener)
    imageDetector = ARImageDetectionClass()
    rospy.sleep(4)
    
    desPose = imageDetector.getHomePose()
    
    gripperControl.start()
    
    rospy.loginfo('Press enter')
    raw_input()

    duration = 6
    gripperControl.goToGripperPose(gripperControl.getGripperPose(MyConstants.Frames.Link0), desPose, duration=duration)
    rospy.sleep(duration)

    raw_input()
def test_rotation():
    rospy.init_node('gripper_control',anonymous=True)
    listener = tf.TransformListener()
    tf_br = tf.TransformBroadcaster()
    gripperControl = GripperControlClass(arm, listener)
    imageDetector = ARImageDetectionClass()

    if arm == MyConstants.Arm.Left:
        frame = MyConstants.Frames.Link0
        toolframe = MyConstants.Frames.LeftTool
    else:
        frame = MyConstants.Frames.Link0
        toolframe = MyConstants.Frames.RightTool

    rospy.sleep(3)

    while not (imageDetector.hasFoundGripper(arm) and imageDetector.hasFoundObject()) and not rospy.is_shutdown():
        print imageDetector.hasFoundGripper(arm), imageDetector.hasFoundObject()
        print 'searching'
        rospy.sleep(1)

    print imageDetector.hasFoundGripper(arm), imageDetector.hasFoundObject()

    currPose = imageDetector.getGripperPose(arm)
    desPose = imageDetector.getObjectPose(toolframe)

    code.interact(local=locals())
    """
    desPose = tfx.pose([0,0,0], imageDetector.normal).msg.PoseStamped()

    
    while not listener.canTransform('tool_L', '0_link', rospy.Time()) and not rospy.is_shutdown():
        rospy.sleep(1)

    time = listener.getLatestCommonTime('tool_L', '0_link')

    print currPose.header.frame_id
    currPose.header.stamp = time
    desPose.header.stamp = time
    desPose.header.frame_id = '0_link'
    currPose = listener.transformPose('tool_L', currPose)
    desPose = listener.transformPose('tool_L', desPose) 
    """

    deltaPose = Util.deltaPose(currPose, desPose)
    deltaPose = tfx.pose([0,0,0],deltaPose.orientation).msg.PoseStamped()
    deltaPoseTb = tfx.tb_angles(deltaPose.pose.orientation)
    #deltaPose = tfx.pose([0,0,0],deltaPose.orientation).msg.Pose()
    print 'deltaPoseTb', deltaPoseTb
    
    """
    gripper_tb = tfx.tb_angles(currPose.pose.orientation)
    obj_tb = tfx.tb_angles(desPose.pose.orientation)
    print 'actual', gripper_tb
    print obj_tb
    deltaPoseTb = tfx.pose(Util.deltaPose(currPose, desPose)).orientation
    print 'deltaPose', deltaPoseTb
    endQuatMat = gripper_tb.matrix * deltaPoseTb
    print 'desOri', tfx.tb_angles(endQuatMat)

    time = listener.getLatestCommonTime('tool_L', '0_link')
    deltaPose.header.frame_id = '0_link'
    deltaPose.header.stamp = time
    deltaPose = listener.transformPose('tool_L', deltaPose)
    #deltaPose = tfx.pose([0,0,0], deltaPose.orientation).msg.Pose()
    deltaPoseTb = tfx.tb_angles(deltaPose.pose.orientation)
    print 'deltaPoseTb', deltaPoseTb
    currPose = tfx.pose(currPose)
    endQuatMat = currPose.orientation.matrix * deltaPoseTb.matrix
    print 'desOri', tfx.tb_angles(endQuatMat)
    """

    yaw = tfx.pose([0,0,0], tfx.tb_angles(deltaPoseTb.yaw_deg,0,0))
    pitch = tfx.pose([0,0,0], tfx.tb_angles(0,deltaPoseTb.pitch_deg,0))
    roll = tfx.pose([0,0,0], tfx.tb_angles(0,0,deltaPoseTb.roll_deg))

    rate = rospy.Rate(1)

    print "press enter"
    raw_input()

    """
    startPose = tfx.pose(gripperControl.getGripperPose(MyConstants.Frames.Link0))
    print 'start', startPose
    endQuatMat = startPose.orientation.matrix * tfx.tb_angles(deltaPose.orientation).matrix
    print tfx.tb_angles(endQuatMat)
    """

    
    gripperControl.start()
    gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(frame), deltaPose, duration=4)
    
    """
    #gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(MyConstants.Frames.Link0), deltaPose, duration=4)
    print 'yaw', yaw
    raw_input()
    gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(frame), yaw, duration=4)

    print 'pitch', pitch
    gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(frame), pitch, duration=4)

    print 'roll', roll
    gripperControl.goToGripperPoseDelta(gripperControl.getGripperPose(frame), roll, duration=4)
    """

    while not rospy.is_shutdown():
        rospy.loginfo('loop')
        currPose = tfx.pose(gripperControl.getGripperPose(frame))
        rate.sleep()