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

3
我想从旋转矩阵计算欧拉角以找出与该旋转相关的方向。为此,我使用MATLAB和函数rotm2eul,该函数先围绕x轴旋转,然后围绕y轴旋转,最后是z轴。
我正在使用包含1000帧信号的数据,并且对于每个帧都计算了旋转矩阵以及三个欧拉角。然而,当我查看欧拉角曲线时,如下图所示,存在一些“跳跃”。

enter image description here

enter image description here

在技巧1中,我认为它从-180º跳到180º应该是相同的。实际上,图的上部分似乎是下部分的延续。因此,在这种情况下,我认为我可以将360º减去上部分以获得该图。但我不确定如果这样做是否会篡改结果
在技巧2中,它以与先前不同的原因进行跳跃。我认为这一定是因为与y轴相关联的角度达到90º,这应该是一个边界案例。但在这种情况下,我不知道如何更正数据或者像之前那样,如果我想更正图表是否会篡改欧拉角结果。

4
在欧几里得几何中,角度只有在 360°(2π)的因数意义下才是唯一的。在这种情况下,您可以使用函数unwrap自动调整角度以最小化跳跃,通过加上或减去 2π。但是,如果没有看到您的代码、一些示例数据和技术1和2的预期输出,就无法告诉您哪一个是“正确”的。 - craigim
1
你可以考虑使用四元数... - willpower2727
1个回答

2

技巧2:这是欧拉角的一个已知特点,称为万向节锁。您无法完全避免它。您可以更改旋转顺序,但它将出现在另一个位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接