0

我正在使用这个库,希望从给定的参考框架中找到以度数为单位的偏航旋转。

然而,当开始测试它时,我注意到当以滚动和俯仰方式稍微移动设备时,偏航会发生巨大变化。当将设备放在桌子上并在其中旋转时,它似乎给出了正确的值。

在查看滚动时,我也注意到 - 当以滚动方式旋转它时,它似乎给出了正确的值 - 在俯仰中稍微移动它会突然剧烈地改变值。

给定的值是否相互隔离 - 从给定的参考系旋转?


请注意,该库使用四元数 - 所以不应该存在万向节锁定问题 - 或者它是否源于简单地以度数表示旋转(使用欧拉角)?

是源代码


编辑:我修改了react-native-sensors以在 iOS 上给我 CMDeviceMotions 态度(滚动、俯仰、偏航)。他们彼此独立地给了我轮换 - 这解决了问题。

4

1 回答 1

2

万向节锁定是使用欧拉角(即偏航、俯仰、滚动或任何其他组合)的旋转表示的固有属性。虽然您是正确的,四元数不会受到此问题的影响,但您将它们转换为的欧拉角表示确实如此。

如果您想继续使用欧拉角来表示旋转,则在实践中经常使用的“解决方案”是从偏航俯仰滚动(xyz)表示切换到在您的坐标系中效果更好的不同组合 - 有查看wiki 页面,了解您可以尝试的组合。这本质上只是将万向节锁置于不同的角度组合,但对于具有明确定义的值范围的实际应用,这通常足以避免出现问题。

根据您的用例,更“正确”的解决方案可能是完全切换到四元数表示,这完全避免了这个问题。

于 2019-05-07T23:26:53.007 回答