matlab - 从旋转矩阵计算欧拉角 : boundary cases

标签 matlab rotation rotational-matrices euler-angles

我想根据旋转矩阵计算欧拉角,以便找出与该旋转关联的方向。为此,我正在使用 MATLAB 和函数 rotm2eul,它首先提供关于 x 轴的旋转,然后是关于 y 轴的旋转,最后是关于 z 轴的旋转。

我正在使用一个包含 1000 帧的信号,并且为每个帧计算一个旋转矩阵,以及三个欧拉角。但是,当我要查看欧拉角曲线时,如下图所示,有一些“跳跃”。

enter image description here

enter image description here

在技术 1 上,我认为它从 -180º 跳到 180º,这应该是相同的。事实上,情节的上半部分似乎是下半部分的延续。因此,在这种情况下,我认为我可以减去 360º 到上部以获得绘图。但我不确定我这样做是否是在伪造结果

在技术 2 上,它以与前一个不同的原因进行跳跃。我认为这一定是因为与 y 轴相关的角度 达到 90º 这应该是边界情况。但在这种情况下,我不知道我应该如何更正数据,或者像以前一样,如果我想更正情节是伪造欧拉角结果。

最佳答案

技巧 2:这是一个 Gimbal lock ,欧拉角的已知特征。你无法完全避免它。您可以更改旋转顺序,但它会出现在另一个位置。

关于matlab - 从旋转矩阵计算欧拉角 : boundary cases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856336/

相关文章:

algorithm - 在多个数组中查找最近的元素

python WatchedFileHandler 旋转后仍在写入旧文件

javascript - 三个js围绕球体旋转物体

javascript - 如何在 ThreeJS 中将网格旋转 90 度?

c++ - 在 Opengl 中使用矩阵的正确顺序是什么?

java - 矩阵平移分量的旋转

matlab - 在matlab中使用mapreduce编程技术

matlab - 冒号运算符的行为(:) with matrix or vector arguments

c++ - 更改 mex 函数中的常量参数

matlab - MATLAB 中的欧拉角差异