マルかくとreblog、空中タップで下に進む。腕が疲れる。



研究室にleapmotionがあったのでかずすけ食べながらbabaくんと仕様を検討し、rubyから使うためにgemを作った

インストール


gem install leapmotion

できたてです。
指の位置と本数、腕の位置、手のひらき具合、ジェスチャー(circle、keyTap、swipe、screenTap)がわかる。
Websocket APIを使っているのでLeap Motion.appをインストール&起動しておく必要がある。
起動するとwebsocketサーバーになる。特に設定はいらない。

サンプルコードなどはgithub

使い方


:data イベント登録すると
require 'rubygems'
require 'leapmotion'

leap = LeapMotion.connect

leap.on :connect do
puts "connect"
end

leap.on :data do |data|
puts "hands #{data.hands.size}"
puts "pointables #{data.pointables.size}"
puts data
puts "-"*5
end

leap.on :disconnect do
puts "disconnect"
exit
end

leap.wait

手や指の座標が取れる。pointable(指)にはhandIdが付いていてどの手に属しているかわかる。
sphereRadiusは手の握り具合なのだが、どういう意味かはどの言語でもいいのでドキュメントを読むとわかる


ジェスチャー

leap = LeapMotion.connect :gestures => true

leap.on :gestures do |gestures|
gestures.each do |g|
puts g.type # => "circle", "screenTap", "keyTap", "swipe"
puts g
end
puts "-"*5
end

leap.wait

あらかじめプリセットされた4種類のジェスチャーが取得できる。
ご覧のとおり1度に複数のジェスチャーが認識される事があるし、swipeやcircleは連続して大量に発生するので扱いには工夫が必要。

ジェスチャーでtumblrを操作

上の動画の実装。
rubyでleapmotionのジェスチャーを読み取って、キーボード入力を発生させている。
chromeはchromekeyconfigとtomblooで、キーボードのjktで操作できる状態にしてある。