从旋转矩阵计算欧拉角:边界情况

Computing Euler angles from rotation matrix: boundary cases

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

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

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

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

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