【问题标题】:How do you rotate 2 quaternions back to starting position and then calculate the relative rotation?如何将 2 个四元数旋转回起始位置,然后计算相对旋转?
【发布时间】:2014-08-05 22:14:35
【问题描述】:

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

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

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

基本上,我想让一个传感器作为旋转“参考”轴,并且我想测量另一个传感器相对于参考传感器(旋转参考轴)的旋转变化。

【问题讨论】:

    标签: rotation quaternions


    【解决方案1】:

    从一个 Q1 到另一个 Q2 框架的转换很简单,就像

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

    【讨论】:

    • 如果你先应用q1,然后Q1intoQ2,数学上是q2=Q1intoQ2 * q1,所以q1的倒数应该从右边应用到q2,而不是从左边.正确的方法是什么?
    • 好的,我明白了。 q2 * q1.inversed() q1q2 的旋转,但在原始参考系中。为了更改为q1 参考系,我们从左侧乘以q1.inverse(),从右侧乘以q1,得到您的表达式。
    猜你喜欢
    • 2012-02-01
    • 2015-08-23
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    相关资源
    最近更新 更多