如何计算四元数转换时的yxy旋转序列以及如何解释数据

时间:2014-10-14 18:56:50

标签: matlab rotation sensor quaternions

还需要数学:我正在尝试计算给定四元数变换的yxy旋转序列。我可以使用Matlab的quat2angle函数轻松完成此操作。但是,我需要使用python脚本手动计算。

此部分已解决:请查看以下有助于我解决以下问题的精彩演示文稿: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CCoQFjAC&url=http%3A%2F%2Fwww.udel.edu%2Fbiology%2Frosewc%2Fkaap686%2Freserve%2Fshoulder%2Fshoulder%2FBluePresentation.ppt&ei=jgRAVLHfOsSrogTJiYHABQ&usg=AFQjCNGFmwh11jEZen80jc3tM4f7HUQcNw&sig2=Dlr8_7TIFPLyUfJy6-pSJA&bvm=bv.77648437,d.cGU

另外,使用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旋转序列角度。

1 个答案:

答案 0 :(得分:1)

如果有人对四元数计算和转换感兴趣。我使用这个转换库解决了它:

http://www.lfd.uci.edu/~gohlke/code/transformations.py.html

这里有几个函数使用矩阵,四元数和欧拉旋转。您可以将四元数转换为几个不同的Euler旋转序列。感谢创建此脚本的人。