[Android] Gyroscope ジャイロセンサー

スマホのスピンやターンを検知するセンサーとしてGyroscopeがあります。
gyro driftを補正した TYPE_GYROSCOPE
gyro drift補正の無いTYPE_GYROSCOPE_UNCALIBRATED があります。
 
axis device2 - [Android] Gyroscope ジャイロセンサー

Android Studio 3.5.3
API 29

R904D.P21641J - [Android] Gyroscope ジャイロセンサーimpression?a id=2545321&p id=969&pc id=1263&pl id=47128 - [Android] Gyroscope ジャイロセンサー

Gyroscope

 
Gyroscopeの座標系は加速度センサーと同じです。端末x, y, z軸の反時計方向での回転速度、角速度を計測します。単位は[rad/s]
Gyroscopeには2タイプあります

TYPE_GYROSCOPE_UNCALIBRATED はジャイロドリフトの補正がないセンサー出力です。ジャイロドリフトの補正がないと放置しておくとバイアスがかかったように徐々にずれていきます。
 
ただキャリブレーションによる値のジャンプがより滑らかで、この他のセンサー値との合算を考えるケースではこのセンサー値を使う方が一般的には役に立ちます。但し、工場出荷補正と温度補正は適用されます。
 
加速度センサーはAndroid Studioのemulatorを使ってemulateできましたが、Gyroscopeは使えないようです。
 

 

TYPE_GYROSCOPE

 
実装を簡単に説明すると

  • SensorEventListener の設定
  • SensorManager のインスタンス生成
  • registerListener の登録
  • onSensorChanged でセンサー値の受け取り

となります。実際ににやって見ましょう。
 
MainActivity.java

 

activity_main.xml

 
また、スクリーンが回転すると面倒なので固定しておきます。
AndroidManifest.xml

 
Nexus 5X での結果です。

gyro - [Android] Gyroscope ジャイロセンサー
 

 

 

TYPE_GYROSCOPE_UNCALIBRATED

 
実装はTYPE_GYROSCOPEと同様です。
センサー出力にestimated driftがそれぞれx, y, z軸についてリポートされますが、その関係性はこのようになります。
 
calibrated_x ~= uncalibrated_x – bias_estimate_x
 
MainActivity.java

 
レイアウトはTYPE_GYROSCOPEと同じです。
 
gyro uncalib 01 - [Android] Gyroscope ジャイロセンサー
 
 
関連ページ:
Sensor 一覧を取得する
加速度センサー:Accelerometer
加速度センサーで球ころがし
Gyroscope ジャイロセンサー
 
Reference:
Sensor
SensorEvent
SensorManager
Motion Sensors

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

TECH ACADEMY
Androidアプリコース



Code Camp
現役エンジニアによるオンラインプログラミングスクール【CodeCamp】


直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。



侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする