devel

ダウンロードとか

  • Leapmotionのサイトに行ってDEVSから最新のSDKを落としてくる
  • インストーラが付いてるのでインストールする

チェックアウトとか

KinectSDKも入れてあるのでLibraries全体をチェックアウトしちゃってもいいかも

  1. 以下の構造になるようにLeapSDKフォルダを作る
    Projects
    +- Springhead2
    +- Experiments
    +- Libraries
       +- LeapSDK
  2. LeapSDKフォルダに以下のアドレスからSVNチェックアウトする
    svn+ssh://springhead.info/home/svn/lab/Libraries/trunk/LeapSDK
  3. Leap.dllにパスを通す
    • Libraries\LeapSDK\lib\x64 のフルパスを環境変数PATHに追加する

Leapmotionの有効化

  • 標準ではLeapmotion関連は無効化してあります。
    • Springhead2/src/HumanInterface/HILeap.h 13行目の以下のコメントアウトを外してください。
      // #define USE_LEAP
    • うっかりコメントアウトしたままコミットしないように注意!

サンプルプログラム

  • Springhead2\src\Samples\HumanInterface\LeapmotionBoxStack
  • 注)LeapMotion用のプロジェクト設定はBoxStack10.slnにしかしてないので他のバージョン使う場合はプロジェクト設定してください。
    追加のライブラリディレクトリに
    ../../../../../Libraries/LeapSDK/lib/x64;
    を入れるだけでいいはず

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 を実行する。