还需要数学:我正在尝试计算给定四元数变换的yxy旋转序列。我可以使用Matlab的quat2angle函数轻松完成此操作。但是,我需要使用python脚本手动计算。
另外,使用Matlab,我看到他们计算yxy的方式有奇怪的结果。我有[1.0000 -0.0002 -0.0011 -0.0006]的四元数转换,我得到y = 112.4291 x = -0.0719 y1 = -112.5506(以度为单位)。
我不希望看到任何旋转(我的传感器不旋转)。为什么Matlab会向我展示轮换?当我尝试在x旋转中移动时,我看到y和y1也会旋转,但是,我不希望y或y1旋转。有什么想法吗?
更新: 当我添加y + y1时,我似乎得到了第一个y的值(当围绕第一个y进行简单的旋转时),这会平滑数据。然而,当我结合肩膀的三个旋转时,数据没有意义。我试图以一种易于理解的方式定义基于仰角,仰角和旋转(yxy)平面的肩部运动。当我围绕x旋转,然后第二个y,我得到"剪切" (数据在y1的正趋势之后变为180然后-180,而在y的情况下相反),即使我在零位置启动我的传感器。此外,如果我尝试仅在第二个y周围旋转,我会看到x中的旋转。这也没有任何意义。还有其他想法吗?
注意: 我正在使用2个IMU传感器,将它们按相同方向对齐,保持一个常量并旋转另一个,使用四元数计算它们之间的相对旋转,然后计算yxy旋转序列角度。
答案 0 :(得分:1)
如果有人对四元数计算和转换感兴趣。我使用这个转换库解决了它:
http://www.lfd.uci.edu/~gohlke/code/transformations.py.html
这里有几个函数使用矩阵,四元数和欧拉旋转。您可以将四元数转换为几个不同的Euler旋转序列。感谢创建此脚本的人。