Google Earthを加速度センサ経由で操作する

Google Earthを加速度センサ経由で操作する

mikilabo
mikilabo (ID1881) 2014/09/24
0

Amazonにて加速度センサ(MPU6050)が500円で売っていたので買ってみました。Leap Motionを使ったデモについて調べている際に、Google EarthをLeap Motionで操作するデモの情報がいくつかありあした。そこでそれらをヒントに今回は加速度センサを使ってGoogle Earthを操作するデモにチャレンジしてみました。

Google Earth APIについて

Google EarthはプラグインとAPIが用意されており、これらを使う事でWebサイトにGoogle Earthを埋め込めます。また、JavaScriptを使ってGoogle Earthの画面を動かす事が可能です。
最初は最初はAPIの使い方のページを参考に、緯度、経度の指定の仕方などGoogle Earthの基本的な使い方を覚えていきました。

加速度・角加速度センサモジュール(MPU6050)について

MPU6050は三軸の加速度、角加速度を取得できるセンサモジュールです。ArduinoにはI2Cを使って接続します。Amazonから購入したモジュールは説明書が一切ありませんので、モジュールの使い方は自分で探すしかありません。

Arduinoの本家サイトにMPU6050に関する記事があります。ここでは「Reading raw values is easy, the rest is not」と書かれており、ちょっとビビります。確かに調べてみるとこのセンサの使い方はちょっと複雑そうです。

色々とググってみた結果、こちらのサンプルプログラムを活用する事にしました。サンプルプログラムではセンサからXYZ軸の加速度生データを読み出しています。今回のデモでは、センサの傾きによって生じた加速度から、センサの傾斜角を求め、その傾きに応じてGoogle Earthを操作します。そのため、ひとまず加速度に関する生データの取得が出来れば良しとしました。

加速度から傾斜角を求める方法については、こちらのサイトを参考にしました。

デモ全体の仕組みについて

今回のデモの仕組みは上記の通りです。主な手順としては下記の通りとなります。XBee, Node.js周りについては前回前々回のデモの仕組みを流用しています。

1)Arduinoにて加速度センサのデータを読み取り、センサ傾斜角を計算
2)傾斜角のデータをXBee経由にてMacに送信
3)受信したデータをSocket.IOを使ってブラウザに送信
4)ブラウザ上にてJavaScriptを使ってGoogle Earth APIを操作する

また、Google Earth上に表示される地図の縮小、拡大といった操作が出来るようにスイッチも用意しています。そのため、配線図としては下記となります。

センサーによるGoogle Earth操作仕様について

https://www.youtube.com/watch?v=Mm97s8DEsZE

今回のソースコード一式は下記からダウンロード可能です。
https://github.com/mikilabo/google_earth_arduino

加速度センサとGoogle Earth APIを組み合わせた今回のデモの主な操作仕様は次の通りです。
●センサの傾斜角と地図の縮尺に応じて地図の移動速度を変えます。傾斜角が大きいもしくは地図の縮尺が小さい(広い地域が表示されている)ほど、移動速度を速くします。
●配線図にあるとおり、ブレッドボードには加速度センサに加えてボタン(タクトスイッチ)を3つ用意しています。一つはモード変更用のボタンで、残り二つはモードに応じたオペレーション用のボタンとなります。それぞれのモードと関連する操作は次の通り。
 1)ポジションモード:地図の縮尺を変更する。
 2)チルトモード:視点を傾斜させる。(視点を傾斜させる事でバードビューが可能)
 3)回転モード:地図を回転させる。(通常は真上が北)
 4)背景色モード:背景色を変更させる。(特に意味はないです)
●ポジションモードにおいて、モード操作用ボタンを長押し(2秒)した場合、Google Earthの表示を予め指定しているデフォルトの場所(東京)に移動させる。

なお、Google Earth APIでは地球の地図情報以外にも、月、火星の地図情報もあります。こちらも試してみたのですが見た目がイマイチでした。地球の場合は地図を見れば何処なのか分かりますが、月、火星の地図をみても、そもそも何処が表示されているか良く分からないのが理由だと思います。

まとめ

今回は加速度センサ、ボタンを使って無線経由にてブラウザ(Google Earth API)を操作するデモとなります。マウスではなく、加速度センサ、スイッチ操作によって画面を操作するという経験はちょっと新鮮でした。仕組みとしては非常に初歩的なものでしたが、マウス以外のデバイスを使ってコンピュータを操作するというのも、色々と面白そうです。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について