找出两个四元数之间的旋转差值来校准两个坐标系

本文关键字:两个 坐标系 之间 四元数 旋转 | 更新日期: 2023-09-27 18:04:19

我需要将流四元数数据偏移一个特定的量。要做到这一点,我计划获得两者之间的差异,然后用第二个抵消第一个。

我很难找出两者之间的区别。

使用此转换器

我正在运行这段代码:

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,因为你想从传感器旋转中获得相机旋转)。