Leap Motion, le Détecteur de Mains sans Contact (Touchless Hand Tracking)


Leap Motion: Touchless Hand Tracking Controller

Le Leap Motion est un tout petit appareil (il mesure L=8cm, H=1cm et P=3cm) qui permet de détecter la position et l’orientation d’une ou plusieurs mains. Il est capable de remonter à une application les informations concernant le squelette de la main: les différents os des 5 doigts de la main, ainsi des infos sur la paume.


Leap Motion: Touchless Hand Tracking Controller
Les os de la main gérés par le Leap Motion (source: SDK du Leap Motion)

Leap Motion: Touchless Hand Tracking Controller
le Leap Motion est tout petit

Le controlleur Leap Motion est basé sur un détecteur infra-rouge et est capable de détecter les mains dans une demi sphere centrée sur le Leap Motion d’environ 30 cm de rayon (en réalité c’est pas une vraie demi sphère car l’angle de vue du Leap Motion est de 150 degrés).

Le Leap Motion se connecte sur un port USB et nécessite l’installation d’un petit pilote (le lien du driver se trouve en fin d’article).


Leap Motion: Touchless Hand Tracking Controller
Leap Motion: Touchless Hand Tracking Controller

Le bundle du Leap Motion est relativement simple: le controlleur, deux cables USB (un court et un long) et une petite doc de mise en route.


Leap Motion: Touchless Hand Tracking Controller

Le Leap Motion coute 90 euros (sur le site web du constructeur). On le trouve aussi dans les Fnac et autres magasins du même genre (MediaMarkt en Suisse) avec un prix plus ou moins similaire.

La chose intéressant avec le Leap Motion est qu’un SDK (Software Development Kit) est disponible pour ajouter le support du Leap Motion dans une application. Ce SDK est disponible pour Windows, Mac OS X et Linux en versions 32 et 64 bits.

Et hop, une petite inscription plus tard, me voilà en présence du SDK du Leap Motion pour Windows et pour OS X (on verra pour Linux plus tard si le besoin s’en fait sentir).

Le SDK est dispo pour plusieurs languages: C/C++, C#, Java et Python.

La version C++ du SDK est parfaite pour intégrer le Leap Motion à GLSL Hacker. Le SDK est simple à utiliser et j’ai relativement vite codé (voir à la fin de l’article un bout de code basé sur le SDK) un petit plugin pour Windows et OS X que l’on retrouve avec la version 0.7.0.2 de GLSL Hacker.

Pour tester le plugin du Leap Motion, j’ai codé une petite demo qui permet de casser une pile de cubes (les cubes sont gérés par PhysX) à l’aide de l’index:


GLSL Hacker - Leap Motion: Touchless Hand Tracking Controller
GLSL Hacker - Leap Motion: Touchless Hand Tracking Controller

La demo est dispo dans le demopack dans le répertoire host_api/LeapMotion/.


GLSL Hacker - Leap Motion: Touchless Hand Tracking Controller

Pour terminer cette présentation du Leap Motion, voilà un tout petit bout de code C++ qui montre comment utiliser le SDK pour récupérer la position du bout d’un doigt (ici l’index, le bout de l’index étant stocké dans la variable position):

#include "Leap.h"

Leap::Controller controller;

Leap::Frame frame = controller.frame();
Leap::HandList hands = frame.hands();
Leap::FingerList fingers = hand.fingers();
Leap::Finger finger_index = fingers()[1];
Leap::Bone bone = finger.bone(3);
Leap::Vector position = bone.nextJoint();

...

Liens

Leap Motion homepage
Leap Motion Setup (driver)
Leap Motion for developers
System Architecture