9. Leap motion + SNAP!
■Leap motion
両手、指10本の位置を認識するモーションセンサー
■SNAP!
Scratchに、ブロック作成機能を加えたプログラム学習環境。
関数定義も可能。
ブロックの制御でパラメータの利用や再帰呼び出しもプログラム可能。
■演習内容
Leap motion を3台用意した。
受講生は、3でつのチームに分かれ、ハンドジェスチャを利用したアプリケーションの作成に取りくむ。
コードの作成は、SNAP!を利用する。
チーム編成用シート
https://docs.google.com/spreadsheet/ccc?key=0AsuRfq5c3XFSdGVUUVE2Tk9ZMlozQXJUSU04OFg0dlE#gid=0
■動作確認
ノートPCに Leap motion のSDKとドライバはインストール済み。
SNAP! は、ブラウザ Chrome から、上記アドレスを開き、ブラウザ内で実行する(HTML5+Javascriptアプリ)。
歯車アイコンから、言語環境を変更しても良い。(日本語、にほんご、など)
■プログラムの保存と提出など
SNAP!で作成したコードは、IDを取得すればクラウド上に保存できる。
クラウドに保存の他、ブラウザの保存領域(File API利用?)に保存することも可能。
今回の課題の提出手順:
Fileアイコンから、プロジェクトを書き出すを選び、ブラウザ上に XML 化されたコードをコピー&ペーストでテキストファイルに記録し、
レポートフォルダに、
ファイル名: 学籍番号.xml
で提出する。
※ブラウザから xmlファイルをコピーする際、先頭の1行目に余分な行が入る。 SNAP!にimportする際に障害になり動作しなくなるので、テキストエディタなどで、先頭行は削除してください。
■SNAP!と Leap motion の接続
Leap motion を USBケーブルでノートPCに接続し、Leapアプリケーション、 Airspace を起動してセンサーの動作を確認する。
Leap motion に手をかざし、アプリケーションに反応があれば確認OK。
Airspaceは終了してよい。
Python スクリプトの起動。
Leap motion はプログラム言語 Python からの呼び出しに対応している。
演習用の ノートPCには Python と Leap 接続用の拡張ライブラリ(DLLなど)は設定済み。
センサーで取得したデータの流れ:
Leap motion → Python → SNAP!
SNAP! にデータを提供する為、 Python スクリプトで、ローカルにデータ中継用サーバを立ち上げる。
起動手順:
プログラムとファイルの検索 に以下を入力。
cmd (コマンドプロンプト開く)
cd python
python snapmotion.py
サーバが起動し、メッセージが表示される。
※ python はスクリプト言語。テキスト処理などWeb分野やアプリケーションの組み込み制御言語として利用されている。GoogleのGAEの制御用言語にも利用されている。
※ python では、制御構文のブロックをブロック内のコードを同じ深さのインデントに揃えて作製する。{}など、括弧は利用しない。
サーバの動作確認:
ブラウザのURLに、
http://localhost:3434/fingercount
や
http://localhost:3434/handcount
と入力。
サーバからの反応が、送信されてくる。ブラウザで受信すると、ファイルに内容が記録される。
ファイルをテキストエディタで開き、センサーの値を確認する。
サーバが正常に動作してるなら、プラウザで上記URLにアクセスする度にターミナルにメッセージが表示される。
SNAP!とLeapの接続:
SNAP!に、 leap motion 接続用のブロックを追加する。以下のファイルを開く(デスクトップに置いてある)
snapmotion.xml
leap motion のセンサー値を読み取るブロックが変数のグループに追加される。
これを利用して、アプリケーションを作成する。
無限ループのブロックの中に、センサーブロックを配置して利用するとよい。
※ SNAP!のLeapセンサー値のブロックで値が取得されない場合は、ターミナルウィンドウを最前面にすると動作する模様。
※ それでも回復しない場合、サーバスクリプトを Ctrl+Cで停止し、python で読み込んで起動し直す。
例)