【问题标题】:Tibia angle from Quaternion on a plane, Euler Angles平面上四元数的胫骨角,欧拉角
【发布时间】:2019-01-11 14:05:46
【问题描述】:

我遇到了从 IMU 获取胫骨角度的情况。 传感器给了我四元数和欧拉角(XYZ顺序)。 我需要知道基于参考平面,平面 XZ 上的 Z 角(指向 z 向上)

我的协议是让人站立并从该位置获得校准的四元数,然后当人行走时,我仍然需要知道基于该角度的角度,例如传感器是否仍在定位该平面。

我遇到了interesting paper,它准确地解释了我的问题以及在方程式 6 上的应用。

根据我的理解,我需要从每个测量四元数中得到一个 DCM 矩阵,然后在校准期间应用欧拉角的方向单位向量并应用到该矩阵,然后应用结果的 X 和 Z 分量的除法的 atan乘法。

基于此,我的步骤是:

1 - 获取校准的四元数 Q1 并计算我的欧拉角的方向向量。 2 - 当传感器测量时,我将 Q1 的方向余弦矩阵应用于校准的方向向量我的坐标变换 3 - 计算传感器坐标系上该方向矢量的 X 和 Z 分量的 Atan。

但是,我得到了不同的结果,我不明白这个等式到底在做什么。

【问题讨论】:

  • 感谢您的帮助,@minorlogic 我注意到我不是在寻找扭转角,而是在平面 XZ 上我的矢量的角度。该解决方案对我有所帮助。

标签: matrix quaternions euler-angles


【解决方案1】:

您不是在寻找扭转角,而是在四元数坐标系上寻找单位向量。

  1. 获取校准后的横滚、俯仰和偏航并将其保存为单位向量(请注意,有 12 种方法可以进行此转换,您可以查看此link)。如果你说它的 XYZ 顺序,那么得到这个:

    • Mx[0,0] = 舒适 * Cosz;
    • Mx[0,1] = -Cosy * Sinz;
    • Mx[0,2] = Siny;
    • Mx[1,0] = Cosz * Sinx * Siny + Cosx * Sinz;
    • Mx[1,1] = Cosx * Cosz - Sinx * Siny * Sinz;
    • Mx[1,2] = -Cosy * Sinx;
    • Mx[2,0] = -Cosx * Cosz * Siny + Sinx * Sinz;
    • Mx[2,1] = Cosz * Sinx + Cosx * Siny * Sinz;
    • Mx[2,2] = Cosx * Cosy;
  2. 将同一传感器的每个四元数转换为 DCM 矩阵

  3. 将方向向量与每个 DCM 矩阵相乘
  4. 现在你在所有方向都有单位向量。为了获得角度,您可以获取这些向量的点积的 Acos,或者像您分享的论文一样计算 Atan(Dcmx/Dcmx)

【讨论】:

  • 非常感谢您的帮助。这正是我所需要的。
猜你喜欢
  • 2012-06-21
  • 2019-10-27
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多