I need to offset streaming quaternion data by a specific amount. To do this I plan to get the difference between the 2, then offset the first by the second.
I am having trouble finding the difference between the 2.
Using this converter.
I am running this code:
public void convertQuat180()
Quaternion q = new Quaternion(0.65328f, 0.2706f, 0.65328f, -0.2706f); //45,180,0
Quaternion q180 = new Quaternion(0.70711f, 0, 0.70711f, 0); // 0,90,0
Quaternion result = q180 * Quaternion.Inverse(q);
(euler) diff = 45, 90 , 0
What you want is a transformation of coordinate systems. You have a rotation measured by the sensor
RS and a rotation of the camera
RC. Both are related by a constant (let's call it) offset
RS = RC * RO
RC = RS * RO^-1
During your calibration procedure, you acquire
RC. Then, you can calculate the offset as:
RO = RC^-1 * RS RO^-1 = RS^-1 * RC
Just calculate the one that you will use more often (probably
RO^-1 because you want to get the camera rotation from the sensor rotation).