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

时间:2016-08-28 15:26:50

标签: c# math quaternions

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

我无法找到2.

之间的区别

Using this converter

我正在运行此代码:

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

我在哪里错了?

1 个答案:

答案 0 :(得分:3)

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

相关联
RS = RC * RO

或者

RC = RS * RO^-1

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

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

只需计算一个你会更频繁使用的那个(可能RO^-1,因为你想让传感器旋转时相机旋转)。