找到两个四元数之间的旋转差异以校准两个坐标系

我需要按特定的数量偏移流式四元数据。 为此,我计划得到2之间的差异,然后将第一个偏移到第二个。

我很难找到2之间的区别。

使用此转换器 。

我正在运行此代码:

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); Console.WriteLine(result); } 

我希望result如下:

 (euler) diff = 45, 90 , 0 

但相反,我得到:

 135,-180,0 

我在哪里错了?

你想要的是坐标系的转换。 您有通过传感器RS测量的旋转和摄像机RC的旋转。 两者都通过常量(让我们称之为)偏移RO

 RS = RC * RO 

或者

 RC = RS * RO^-1 

在校准过程中,您将获得RSRC 。 然后,您可以将偏移量计算为:

 RO = RC^-1 * RS RO^-1 = RS^-1 * RC 

只需计算你将更频繁使用的那个(可能是RO^-1因为你想从传感器旋转中获得相机旋转)。