devel
ダウンロードとか
- Leapmotionのサイトに行ってDEVSから最新のSDKを落としてくる
- インストーラが付いてるのでインストールする
チェックアウトとか
KinectSDKも入れてあるのでLibraries全体をチェックアウトしちゃってもいいかも
- 以下の構造になるようにLeapSDKフォルダを作る
Projects
+- Springhead2
+- Experiments
+- Libraries
+- LeapSDK
- LeapSDKフォルダに以下のアドレスからSVNチェックアウトする
svn+ssh://springhead.info/home/svn/lab/Libraries/trunk/LeapSDK
- Leap.dllにパスを通す
- Libraries\LeapSDK\lib\x64 のフルパスを環境変数PATHに追加する
Leapmotionの有効化
- 標準ではLeapmotion関連は無効化してあります。
- Springhead2/src/HumanInterface/HILeap.h 13行目の以下のコメントアウトを外してください。
// #define USE_LEAP
- うっかりコメントアウトしたままコミットしないように注意!
サンプルプログラム
- Springhead2\src\Samples\HumanInterface\LeapmotionBoxStack
UDP対応の道のり
- C++でUDPを受取るクラスはくまろぼのプログラムを参考にするとよいです
- svn+ssh://springhead.info/home/svn/lab/Experiments/trunk/StuffedRobot/PCProgram/PyKumarobo
- UDPConnection.h と socket.h がそれ
- 送信はしないのでUDPConnection.hのProtocolPCクラスの受信関連だけ使えばよいとおもう
- SpringheadでのLeapmotion関連ソースは以下の通り
- include/HumanInterface/SprHILeap.h
- src/HumanInterface/HILeap.h
- src/HumanInterface/HILeap.cpp
- 本当はLeap::Controller()のAPIを抽象化するDRLeapクラスを作って、DRLeapUSBとDRLeapUDPを用意してHILeapからはDRLeapUSBかDRLeapUDPのどちらを使うか選べる仕組みにするのがベスト。
- なのですが、とりあえずHILeapUDPという別クラスを作るのでもよいです(HILeapUDPIf, HILeapUDPDescもつくらないといけないので忘れずに。ファイルは上記3ファイルの中で良いでしょう)。
Pythonのサンプル
こんなんでうごく
import sys
sys.path.append('/home/mitake/LeapDeveloperKit_2.0.1+15831_linux/LeapSDK/lib')
sys.path.append('/home/mitake/LeapDeveloperKit_2.0.1+15831_linux/LeapSDK/lib/x64')
import Leap
controller = Leap.Controller()
while True:
frame = controller.frame()
hand_cnt = 0
for hand in frame.hands:
hand_cnt+=1
finger_cnt = 0
for finger in hand.fingers:
finger_cnt+=1
for bone_idx in range(0,4):
bone = finger.bone(bone_idx)
print(hand_cnt, finger_cnt, bone_idx, bone.center.x, bone.center.y, bone.center.z)
SprBlenderでのサンプルの実行
- Experiments/KogumaBlender/koguma_leap3_delaysel.blend を実行する。