如何将2个四元数旋转回起始位置然后计算相对旋转?

时间:2014-08-05 22:14:36

标签: rotation relative quaternions

我有2个IMU(惯性测量单位),我想计算它们的相对旋转。不幸的是,IMU的输出给了我两个相对于全局的四元数(我假设四元数是如何工作的)。但是,我需要测量其中一个传感器相对于另一个传感器的旋转。一直以来,这两个传感器已经从它们在全局轴上的初始方向旋转。

例如:我有一个传感器连接到胸部,另一个传感器连接到手臂。两个传感器都校准到全局轴。如果我保持这个方向,我可以很好地计算旋转。然而,当我将我的身体旋转到不同的方向(向右90度)并执行相同的运动时,传感器围绕其局部轴旋转但输出相对于全局轴的四元数(围绕传感器y轴的旋转输出作为围绕x全局轴的旋转。)

我希望相同的动作产生相同的四元数(因此显示相同的旋转),无论我的方向如何(放下,面向左,右,前或后)

基本上,我想让一个传感器成为旋转"参考"轴和我想测量另一个传感器相对于参考传感器的旋转变化(旋转参考轴)。

1 个答案:

答案 0 :(得分:3)

从一个Q1到另一个Q2帧的转换就像

一样
Q1intoQ2 = q1.inversed() * q2;
// check it,  q2 = q1 * Q1intoQ2 == q1 * q1.inversed() * q2 == q2