Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
【イベントレポート】TMCN tech-cafe Vol.01「Leap in the Cloud」

【イベントレポート】TMCN tech-cafe Vol.01「Leap in the Cloud」

Leap Motionで誰もがつまずく「3D認識」の課題とは? ― 3 daysカフェでのセッションより

2014年5月7日

せっかく購入したLeap Motion。サンプルプログラムを一通り遊び終わったら、そのまま机の中にしまいこんでいないだろうか? 次に進むために、センサープログラミングの“はまりポイント”を紹介し、その解決方法を提案する。

初音 玲(Microsoft MVP for Visual Basic)
  • このエントリーをはてなブックマークに追加

 Build Insider MEETUP 第1回でも取り上げられた「Leap Motion」(以下、「Leap」と表記)は、「手ごろな大きさ(フリスク・ケース・サイズ)と価格(約1万円)」、そして「センサー範囲が手のみという試しやすさ」からか事前予約で購入したり、正式発売直後に購入したりして、実際に入手した開発者は少なくないだろう。しかし、実際に手元にLeapが届いて使ってみると、確かにセンサー感度も良く、デバイス自体も扱いやすく、SDKも使いやすいのに、サンプルプログラムを一通り遊び終わったら、当初思い描いていたLeap対応アプリを開発せずに机の引き出しにしまいこんでいる人が多いのも現実だ。

 「なぜ、そうなってしまうのか」「次に進むためには、何が必要なのか」を考えたとき、その1つの答えとなりそうなイベントが、2014年3月21~23日の平日夜3日連続で、品川の(株)トーメンエレクトロニクス(8Fセミナールーム)で開催された。それが、Tokyo MotionControl Network(以下、TMCN)*1が主催する、Leapの開発に特化したイベント「tech-cafe Vol.01 [Leap in the Loud]*2だ。

  • *1 TMCNは、3Dセンサー&デバイスに興味のある、デザイナー、デベロッパー、エンドユーザー、コントリビューター(=新しいものや、オープンイノベーションに興味のある方)が集まった横断的コミュニティだ。「知っている」だけではなく、体験して語ることに重点を置き、毎回、デモなどで実際に試せる時間があるセミナーを過去6回開催している(2014年4月末現在)。
  • *2 TMCN tech-caféはTMCNの分科会の1つであり、主にデベロッパー向けのイベントで、センサーを使った実際に動くアプリを作ることに特化した内容を目指している。記念すべき第1回目は、TMCN主催、Leap Motion社の日本でのパートナーである「BBソフトサービス社」(BBSS)協賛により、「Leap」を題材にして、「平日夜3日連続のワークショップセミナー」というスタイルを採った。セミナー時のLeap Motionデバイスは、参加者持参に加えて協賛のBBSS社からの貸し出しも用意した。つまり、1人1台のLeapを実際に使って、1日2時間のセミナーを3日間実施して2時間×3日の6時間で、Leapで指の本数を検出して「グー」「チョキ」「パー」判定を行い、それをクラウドに同時にアップロードして、クラウド上でじゃんけん勝負するものを作成するという趣向だった。
図1.1 Day1の中村 薫 氏(NaturalSoftware)による「Leapの基礎」のセッション風景

誰もがつまずく「3D認識」の課題は、どう解決すればよいのか?

 Day1のセッションは「Leapの基礎」に関するものだったが、Day2は、「センサー入手 → サンプル動作 → SDK設定完了」した後に訪れる「次はどうしたらいいんだろう……」という誰もが経験する戸惑いの通過儀礼を最速で突破するために設定したセッションからスタートした。

図2.1 Day2受講風景

 講師は前本 知志 氏(システムフレンド)で、最初に、センサープログラミングの“はまりポイント”として、以下を取り上げた。

 1センサーデータの座標軸の方向や値の単位が分からない
 2センサーデータ値の変化を把握できない
 3特定のモーションをアプリ内のイベントに変換する方法が分からない

 これらの解決方法を通して、3Dセンサーデータの取り扱い方法やセンサープログラミングの基本的な考え方について解説が行われた。それぞれについて簡単に説明しよう。

1センサーデータの座標軸の方向や値の単位が分からない

 センサープログラミングの最初のはまりポイントは、センサーの座標軸など、センサーデータの値が3D上でどの位置を表しているのかが分からないという点だ。このはまりポイントの解決方法は、「センサーのドキュメントには、センサーを中心とした図解がある!」(図2.2)というすごく明快なものだ。

図2.2 Leapの座標系(Leap Motion SDKのAPIドキュメントから引用)

 また、座標系の説明では「必ず『値の単位』も登場する点(ちなみに、Leapでは値の単位は『mm(ミリメートル)』)」や「Leapの中心からの距離を意味する点」など、「ドキュメントのどこを最初に読めばよいのか」という非常に実践的な解説が行われた。

2センサーデータ値の変化を把握できない

 センサープログラミングでは、常にセンサーから高速にデータが流入してくる状態になるので、デバッグが難しい。このため、「センサーデータ値の変化が把握できない」というのがはまりポイントの2つ目となる。

 センサーデータ値を知るために、ブレークポイントを使ってプログラムの実行を中断すれば、その瞬間のセンサーデータ値は確認できるが、その1秒前の状態などは取得できず、また、ログを出力しても高速すぎて読めない。

 このはまりポイントに対する解決方法は、例えばLeapであればFrame情報をログファイルにCSV出力し、それをExcelでグラフにしてみる方法が紹介された。単純にCSV出力された値を眺めていても変化を把握するのは難しいがグラフにして「見える化」すれば変化を把握できるということだ。

 具体的に見てみよう。例えば、手を左右に動かしたときのグラフは次のようになる。

図2.3 グラフ化して変化を把握

 グラフを見ると、X軸(青線)の値が上下していることが分かり、左右の動きはセンサーデータのX値の変化として表れることが一目で把握できる。変化が把握できればアプリで「左右の動き」を判断するための変化の特徴をつかめる。

3特定のモーションをアプリ内のイベントに変換する方法が分からない

 モーションを何かのイベントに変換するロジックを考えるためには、次の2ステップで検討すると講師から説明が行われた。

 (1)人がどう動くのか詳細に検討
 (2)センサーデータ値を調べて特徴的な動きのパターンが判定に使えないか考察

 フリックを例にすると、フリックとは手を左右に振ることであり、手を左右に振ったときのセンサーデータ値をグラフ化してみると、「(Leapであれば)X値のみ上下し、Y値やZ値は変化しない」という特徴的な動きパターンとなるため、「X値の変化を判定に使おう」というようなステップで考えていけばよいということだ。

 実際のセッションでは、上記の2点のステップを踏まえて、最小限のサンプルを動作させた。最後に講師から、「モーションに対する画面上へのフィードバックがないと、動きが検知されているかどうかが判断できない。フィードバックはNUIのUXで非常に重要な要素だ」という言葉でセッションが締めくくられた。

 セッション後は、各自がセッションの内容を踏まえて、Leapで手を認識させるコードの作成を行った(図2.4)。

図2.4 プログラムで手を検知

 ちなみに、受講者の中にはenchant.jsを使ってLeapで操作するゲームを開発した猛者も現れ(図2.5)、講師陣からは「Airspaceに登録しよう」と勧められていたのが印象的だった。

図2.5 Leapでゲーム

 Day 3の内容についての詳細は割愛するが、「Day2で学んだノウハウを使って、取得した指の本数から『グー』『チョキ』『パー』を判定し、それを事前に用意しておいたMicrosoft Azureモバイルサービス上にアップロードするアプリを作成する」という内容であった。ぜひ、上記の内容を参考に読者自身でも、同じようなアプリの作成にチャレンジしてほしい。

【コラム】センサー系プログラミングのセミナースタイルについて

 「ハードの入手」というハードルがあるセンサー系デバイスのプログラミングは、今回のイベントのように「有識者サポートの下、実際のセンサーを使ってアプリ開発を体験する」という流れが作れると、一気にすそ野が広がる(と考えられる)。今回のセミナーでも、実際に触ってみたことで購入を決断した参加者も多い。今回のイベントが、これからのアプリ開発セミナーの1つのひな型になるのではないかと感じられた。

 次回開催は未定だが、今後もさまざまなセンサーを題材にして、いろいろなスタイルで開催したいと考えているので、興味がある方は、TMCNのFacebookページをウォッチしたり、「どのようなセンサーを、どのようなスタイル(平日/土曜/日曜、昼/夜、1day/複数日連続/毎週など)で実施してほしいか」などの要望をこのFacebookページに投げたりしておくのもよいだろう。

 最後に、会場の自動販売機で特定の飲料だけが売り切れていたのが(図3.1)、まさに「開発者の集い」という特徴を表していると感じだ3日間であった。

図3.1 開発者御用達飲料のみが売り切れ

次回「Tokyo MotionControl Network」について

 本稿公開翌日になるが、5月8日に「Tokyo MotionControl Network Vol.07 - Tokyo MotionControl Network(TMCN)Vol.07」が開催される。Windows女子部も登壇予定。センサーデバイスに興味がある方は、ぜひちょっと見に来てほしい。

サイトからのお知らせ

Twitterでつぶやこう!