8月 012013
マルかくと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で操作できる状態にしてある。