ofxAruco, need to grab the axis rotation angle from a single rotatin marker. how?

hi all,
I am using @arturo ofxAruco to track a single marker. The marker is printed on a small piece of paper. I place the paper in front of the camera and rotate the paper clockwise, as showing in this snapshot of a video.

in red is the x axis, blue the z axis and green the y axis.
The y axis is the one that (mostly) points towards the camera and I would like to have a figure (in degrees) about the rotation of the marker/paper plane around it.

I have attempted a couple of things and plotted the resulting numbers but none seems to be monotonically increasing/decreasing something that would help me figure out which number is the rotation.

ok initially I attempted to read Rvec , the rotation vector of the marker

cv::Mat rotationMatrix = it->Rvec;
cout << "rot [" << rotationMatrix.at<float>(0,0) 
            << "," << rotationMatrix.at<float>(1,0) 
            << "," << rotationMatrix.at<float>(2,0) << "] ";

over 2 full revolutons of the paper, the result was

Rvec[1,0] and Rvec[2,0] look promising, but the min/max values are not on pi or 2*pi boundaries. So converting Rvec from rads (if it is even in rads) to degrees does not provide a nice 180->-180 degrees rotation. Is there some operation missing that I should carry out to get the rotation ?
It is also abit weird because I see [1,0] and [2,0] , so axes y,z respectively rotating. Whereas I would expected X and z to be rotating. Also the 2 axis that are rotating should have 90deg phase difference and not be (more or less) mirrored as is the case here. no?

due to these, I tried some more stuff:

    double pos[3], orie[4];
    it->OgreGetPoseParameters(pos,orie);
    ofQuaternion qua(orie[0],orie[1],orie[2],orie[3]);
    qua.normalize();
    float rotaxis;
    ofVec3f axis;
    qua.getRotate(rotaxis,axis);
    cout << "qua [" <<axis.x <<","<<axis.y<<","<<axis.z <<"] ang=" << rotaxis <<endl ;

here I am getting the orientation quaternion and extracting the axis-rotation characteristics : “axis”- the unit verctor and the angle “rotaxis”. plotting these does not help (and perhaps was never meant to)

This is a mess so I also tried getting the world coordinates and extracting the rotation (pitch,raw,yaw) from there also:

    ofMatrix4x4 mat = aruco.getModelViewMatrix(0); //there is only 1 marker
    ofQuaternion qua2 = mat.getRotate();
    ofVec3f rots = qua2.getEuler();
    cout << "    rots[" <<rots.x <<","<<rots.y<<","<<rots.z <<"]" << endl;

again the plot is not helpful

clearly I do not know how to grab the rotation around the axis that points towards the camera. I think it is the y axis from this guide: http://docs.opencv.org/master/d5/dae/tutorial_aruco_detection.html#gsc.tab=0 (search for “Y:green”)

Could you please explain how to get it and if there is a method available to do it?

thank you

Hey there!

This is the problem I had! If anyone has an idea about this, this would be really helpful - even just a pointer in the right direction as it would make or break a project…