绕z轴旋转时iOS陀螺仪错误

Posted

技术标签:

【中文标题】绕z轴旋转时iOS陀螺仪错误【英文标题】:iOS gyro error when rotating about z-axis 【发布时间】:2015-04-07 01:01:08 【问题描述】:

我在解决我遇到的一个奇怪错误时遇到了麻烦,想知道是否有其他人遇到过类似问题或可以提供解决方案。

我正在使用 javascript 访问陀螺仪和 ios 设备,并且对围绕 z 轴旋转感兴趣;我想要设备平放在桌子上时的旋转角度。

但是,陀螺仪似乎每旋转 360 度就会偏离大约 20 度。如果我将设备与桌子上的某物对齐,然后将设备旋转 360 度,将其返回到起点,角度读数为 ~340 度而不是 360 或 0。这是复合的,因此在旋转 1080 度后,角度偏离了 ~60 度,如果我然后反向旋转它会反转错误(在这种情况下,旋转 -1080 度后它将返回到 0 度)。

我已经在 Ipad 2、3 和 iPhone 4 上对此进行了测试,并且在所有这些设备上都发现了类似的问题 - 尽管 iPhone 每 360 度偏出 8 度。我也尝试过使用 gyro.js 之类的库,但结果相同。

我整理了一个简短的 codepen 示例来演示。 http://codepen.io/CharlesSmart/pen/ZYNXEJ?editors=101

window.addEventListener('deviceorientation', orientationHandler, false);
function orientationHandler(e)

var alpha = e.alpha
var div = document.getElementById('text');
div.innerhtml = alpha;

我是否以某种方式滥用了方向 API?这可能是我使用的设备的问题吗?

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

我敢打赌,你得到的是加速度计数据,而不是陀螺仪数据。

您可能想要“devicemotion”而不是“deviceorientation”。

【讨论】:

以上是关于绕z轴旋转时iOS陀螺仪错误的主要内容,如果未能解决你的问题,请参考以下文章

软件姿态解算

无人机基础知识点总结

OpenGL:切换和反转轴

四元数 3 轴旋转

OpenGL 相对于对象轴的旋转

陀螺仪工作原理