javascript'deviceorientation'事件 - 它测量的传感器是什么?

Joe*_*oey 11 javascript android sensor accelerometer gyroscope

如果我有一个简单的网页和脚本,如下所示:

<body>
    <div id="alpha">a</div>
    <div id="beta">b</div>
    <div id="gamma">g</div>
</body>

<script>
window.addEventListener('deviceorientation', function(event) {
    var alpha = event.alpha;
    var beta = event.beta;
    var gamma = event.gamma;

    document.getElementById("alpha").innerHTML = alpha;
    document.getElementById("beta").innerHTML = beta;
    document.getElementById("gamma").innerHTML = gamma;

}, false);
</script>
Run Code Online (Sandbox Code Playgroud)

我可以在Android的移动Firefox中打开它,它将输出3个如下所示的数字:

89.256125
3.109375
0.28125
Run Code Online (Sandbox Code Playgroud)

旋转设备时,数字会根据旋转轴而变化.我注意到"alpha"的值非常嘈杂 - 即使手机在桌面上休息,它们也会不间断地反弹,而其他两个保持稳定.我明白阿尔法是我的标题.我好奇的是,它是从指南针(有噪音问题)得到"alpha"值而另外两个来自陀螺仪吗?

另一个问题是当我改变音高时,由于某种原因,标题也会改变,即使我实际上没有改变音标.我只是好奇为什么会这样,以及如何纠正它?

此外,由于陀螺仪测量角速度,我认为这个事件监听器是自动集成的 - 集成算法是否与任何一个一样好?它是否使用加速度计来校正漂移?

在这个谷歌技术讲座视频中,从15:00到19:00,演讲者谈到通过使用加速器来校正陀螺仪固有的漂移,以及校准相对于重力的方向:http://www.youtube .com/watch?v = C7JQ7Rpwn2k 我该怎么做呢?

感谢任何人的见解.

Ali*_*Ali 2

设备方向通过传感器融合获得。严格来说,没有一个传感器能够测量它。方向是以智能方式合并加速度计、陀螺仪和磁力计数据的结果。

我注意到“alpha”的值确实很吵——即使手机放在我的桌子上,它们也会不停地跳动,而其他两个则保持稳定。

这是欧拉角的常见问题,如果可以的话尽量避免它们。

顺便说一句,您链接到的“Android 设备上的传感器融合:运动处理的革命”视频在 38:25 对此进行了解释。

另外,由于陀螺仪测量角速度,我认为该事件侦听器正在自动集成它 - 集成算法是否与其他算法一样好?它使用加速度计来校正漂移吗?

是的,陀螺仪漂移是借助加速度计(和磁力计,如果有)读数进行校正的。这称为传感器融合。

在这个谷歌技术演讲视频中,从 15:00 到 19:00,演讲者谈论了如何使用加速电机来校正陀螺仪固有的漂移,以及校准相对于重力的方向:http://www.youtube .com/watch?v=C7JQ7Rpwn2k我该如何去做呢?

如果你有方向感,那么有人已经为你做了这一切。你不需要做任何事。