ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2013年7月26日金曜日

LeapMotionことはじめ(Websocketのデータを受け取ってみるまで)

Leap Motionが届いた。



Leap MotionはPCに接続して、手の位置や動きなどを取得することが出来るデバイスだ。平たく言うと、MicrosoftのKinectの手だけ拾う版だと思えば良い。


公式のビデオ。

手しか使えないのになぜLeap Motionを買うのかというと、Kinectより大幅に小さいということと、Kinectより安いということに尽きる。送料込みでおおよそ$100、だいぶ円安になってしまったので価格のインパクトは薄れてきているが、それでもKinect for Windowsに比べれば安い。


裏面。


設置はドライバーを入れてからUSBで接続して、適当に手がセンサーから見える位置に置く。
そうすれば勝手に手を認識するので、後はデータを利用するだけだ。

公式のソフトにはこのLeap Motionを利用するゲームやツールなどのマーケットも付いているが、私が購入したのは自分でプログラムを組んで利用するためだ。このLeap MotionはSDKも無料でダウンロードできて、C++、C#、Python、JAVA、JavaScriptなどからデバイスに接続することが出来る。

一番簡単なのは、というか私が慣れているだけかもしれないが、Leap MotionはそのままでもWebSocketのサーバーを立ち上げるので、そこにJavaScriptで接続してしまえば、あっさりJSONでデータが流れ込んで来る。
以下を参考にした。


ここの画面に出てきているものと、OSが違うのかバージョンが違うのか、よく分からないがWebSocketについての設定は私のLeap Motionの設定画面には無かったが、netstatでポートを調べたらちゃんと利用していたので、あとはWebSocketでつなぐだけで良かった。
書いてある通り、wsのパッケージを入れてポート6437に接続したら、あとはmessageイベントでデータが流れてくる。
一番最初はLeap Motionのバージョン、次に手の情報が延々と流れてくる。
データは前述の通りJSONなので、JSON.parseを使えばそのまま利用できる。

とりあえず私は指を動かしている情報が欲しかったので、探したところpointablesというプロパティが指を表していて、認識されている指の数だけ配列として格納される。データとしては三次元のベクトルと、指の長さ(だと思う)のデータなどだ。どれが何指などという情報は見当たらないが、そのあたりは手のひらの向きと指の方向で認識しろということなのかもしれない。

データについては詳しくは以下のページに載っていた。


また、データをダンプするだけのものならGithubのleapjsのプロジェクトの中にサンプルがあるので、これを実行すればすぐに試してみることは出来る。


exsamplesの中のdumper.htmlがそれ。

というわけで今日はこの辺まで。
次はAruduinoとnode.jsをシリアル通信させて、指先の動きでLEDをつけたり調光したり、サーボを自在に動かしたり、サーボで何かめくったりできたらいいな!

追記:

続き書いた!(動画もあるよ!)


公式ページから買った方が全然安い。


Xbox 360 Kinect センサー
Xbox 360 Kinect センサー
posted with amazlet at 13.07.25
日本マイクロソフト (2010-11-20)
売り上げランキング: 569
360版だともう値段あんまり変わらない気がしてきた。
けど、もうすぐOneも出るんだろうしこれは買わない。