平面上四元数的胫骨角,欧拉角
Tibia angle from Quaternion on a plane, Euler Angles
我遇到了从 IMU 获取胫骨角度的情况。
传感器给我四元数和欧拉角(顺序 XYZ)。
我需要根据参考平面知道 XZ 平面上的 Z 角(将 z 向上)
我的协议是让人站起来并从该位置获得校准的四元数,然后当人走路时我仍然需要知道该角度,就像传感器仍在定位该平面一样。
我得到了一个interesting paper,它准确地解释了我的问题和方程式 6 的应用。
根据我的理解,我需要从每个测量四元数中得到一个 DCM 矩阵,然后在校准期间应用来自欧拉角的方向单位向量并应用于该矩阵,然后应用 atan 的分量 X 和 Z 的除法该乘法的结果。
基于此我的步骤是:
1 - 获取校准的四元数 Q1 并计算我的欧拉角的方向向量。
2 - 当传感器测量时,我将 Q1 的方向余弦矩阵应用于校准方向向量我的坐标变换
3 - 计算传感器坐标系上该方向矢量的分量 X 和 Z 的 Atan。
但是,我得到了不同的结果,我不明白这个等式到底在做什么。
您不是在寻找扭转角,而是在四元数坐标系上寻找单位向量。
将校准后的滚转、俯仰和偏航保存为单位向量(请注意,有 12 种方法可以进行此转换,您可能会查看此 link)。如果你说它的 XYZ 顺序那么得到这个:
- Mx[0,0] = 舒适 * Cosz;
- Mx[0,1] = -舒适 * Sinz;
- Mx[0,2] = 辛尼;
- Mx[1,0] = Cosz * Sinx * Siny + Cosx * Sinz;
- Mx[1,1] = Cosx * Cosz - Sinx * Siny * Sinz;
- Mx[1,2] = -舒适 * Sinx;
- Mx[2,0] = -Cosx * Cosz * Siny + Sinx * Sinz;
- Mx[2,1] = Cosz * Sinx + Cosx * Siny * Sinz;
- Mx[2,2] = Cosx * 舒适;
将同一传感器的每个四元数转换为 DCM 矩阵
- 将方向向量乘以每个DCM矩阵
- 现在你在所有方向上都有了单位向量。为了获得角度,您可以获得这些向量的点积的 Acos 或像您分享的论文那样计算 Atan(Dcmx/Dcmx)
我遇到了从 IMU 获取胫骨角度的情况。 传感器给我四元数和欧拉角(顺序 XYZ)。 我需要根据参考平面知道 XZ 平面上的 Z 角(将 z 向上)
我的协议是让人站起来并从该位置获得校准的四元数,然后当人走路时我仍然需要知道该角度,就像传感器仍在定位该平面一样。
我得到了一个interesting paper,它准确地解释了我的问题和方程式 6 的应用。
根据我的理解,我需要从每个测量四元数中得到一个 DCM 矩阵,然后在校准期间应用来自欧拉角的方向单位向量并应用于该矩阵,然后应用 atan 的分量 X 和 Z 的除法该乘法的结果。
基于此我的步骤是:
1 - 获取校准的四元数 Q1 并计算我的欧拉角的方向向量。 2 - 当传感器测量时,我将 Q1 的方向余弦矩阵应用于校准方向向量我的坐标变换 3 - 计算传感器坐标系上该方向矢量的分量 X 和 Z 的 Atan。
但是,我得到了不同的结果,我不明白这个等式到底在做什么。
您不是在寻找扭转角,而是在四元数坐标系上寻找单位向量。
将校准后的滚转、俯仰和偏航保存为单位向量(请注意,有 12 种方法可以进行此转换,您可能会查看此 link)。如果你说它的 XYZ 顺序那么得到这个:
- Mx[0,0] = 舒适 * Cosz;
- Mx[0,1] = -舒适 * Sinz;
- Mx[0,2] = 辛尼;
- Mx[1,0] = Cosz * Sinx * Siny + Cosx * Sinz;
- Mx[1,1] = Cosx * Cosz - Sinx * Siny * Sinz;
- Mx[1,2] = -舒适 * Sinx;
- Mx[2,0] = -Cosx * Cosz * Siny + Sinx * Sinz;
- Mx[2,1] = Cosz * Sinx + Cosx * Siny * Sinz;
- Mx[2,2] = Cosx * 舒适;
将同一传感器的每个四元数转换为 DCM 矩阵
- 将方向向量乘以每个DCM矩阵
- 现在你在所有方向上都有了单位向量。为了获得角度,您可以获得这些向量的点积的 Acos 或像您分享的论文那样计算 Atan(Dcmx/Dcmx)