I am useing solvePnP and i am getting a translation vector.
Now i need to compare some euler angles with those results from solvePnP.
And i want/need to transfer the euler angles into “rodrigues”;
Is the translation vector from solvePnP equal to euler angles.
Is the translation matrix the only thing what has to do with Rodrigues?
or are there special rodrigues angles which are totaly different to the 3 euler angles?
How is the math between both?
Is there an OpenCV function which i couldn’t find?
First, forget about translation vector, because it is not related with rotation: translation moves things around, rotation changes their orientation.
Rodrigues parameters are also called axis-angle rotation. They are formed by 4 numbers
[theta, x, y, z], which means that you have to rotate an angle "theta" around the axis described by unit vectorv=[x, y, z].Looking at cv::Rodrigues function reference, it seems that OpenCV uses a "compact" representation of Rodrigues notation as vector with 3 elements
rod2=[a, b, c], where:thetais the module of input vectortheta = sqrt(a^2 + b^2 + c^2)vis the normalized input vector:v = rod2/theta = [a/theta, b/theta, c/theta]So, Rodrigues vector from solvePnP is not even slightly related with Euler angles notation, which represent three consecutive rotations around a combination of X, Y and Z axes.
How to compare both rotations? This is a good question. Both Euler- and Rodrigues- representations have singularities and other problems. For instance, if you compare two Euler terns, or two Rodrigues parameters, they can look completely different but actually represent almost the same rotation.
If you just need to check if both rotations are the same (or approx.), you can follow the next approach: