はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

JavaScript で加速度センサーの値を取ってみる

JavaScript で加速度センサーの値を取ってみる

motiondevice のイベントで取れる加速度センサーの値を取ってみました。

サンプル

加速度センサーを持っているモバイル端末などでアクセスして下さい。通常のPC では 0 と表示されます。

cartman0.github.io

iPhone4s で試した結果を以下に。

iPhone4S で試した結果(スクショ)

コード

motiondevice で取得できる accelerationIncludingGravity(生 ...

コード解説

X, Y, Z軸

それぞれ X, Y, Z 軸の値が取れるのですが、軸がどうなっているか調べてました。以下の図はW3C からの引用です。

X 軸は、デバイスに対しての水平方向、Y 軸は奥行き方向、Z 軸は高さ(垂直)方向のようです。

motiondeviceにおけるX, Y, Z軸の画像

X, Y, Z軸
引用:http://www.w3.org/TR/orientation-event/#devicemotion

motiondevice のイベントでは、加速度2種類 (accelerationIncludingGravity, accelaration)、回転速度(rotationRate) が取れるようです。

加速度

重力加速度を含んだ生の加速度と、それを除いた加速度があるようです。

単位は [m / s] です。

accelerationIncludingGravity(生の加速度)

The acceleration of the device. This value includes the effect of gravity, and may be the only value available on devices that don't have a gyroscope to allow them to properly remove gravity from the data.

[引用] https://developer.mozilla.org/en-US/docs/Web/Events/devicemotion

accelerationIncludingGravity は重力加速度を含んだ生の加速度で、加速度センサをもったデバイスであれば取得できる値のようです。

accelaration(重力加速度を除いた加速度)

The acceleration of the device. This value has taken into account the effect of gravity and removed it from the figures. This value may not exist if the hardware doesn't know how to remove gravity from the acceleration data.

[引用]: https://developer.mozilla.org/en-US/docs/Web/Events/devicemotion

acceleration は、ハード側で重力加速度部分を除いて計算して出力する値のようです。ハード側が重力加速度の計算を備えていないなら取得できないようです。

精度はわかりませんが、iPhone4s では取得できました。

回転速度

単位は [ degree / s ]のようです。

rotationRate(回転速度)

The rates of rotation of the device about all three axes.

[引用]: https://developer.mozilla.org/en-US/docs/Web/Events/devicemotion

alpha はZ軸周りの回転、beta はX軸周りの回転、gamma はY軸周りの回転のようです。