A la découverte du Leap Motion Controller, un capteur révolutionnaire !

 

Le  Leap Motion Controller sera commercialisé le 13 mai 2013

Créée en 2010, la start-up Leap Motion Inc, basée à San Francisco, a récemment annoncé le lancement de son produit phare : le Leap Motion Controller. Ce capteur est une véritable révolution en matière de navigation et de contrôle par détection de mouvement. Il sera officiellement commercialisé le 13 mai prochain, au prix de 80 euros environ. Similaire à la Kinect sur Xbox, ce capteur, de la taille d’un gros briquet, est cependant 200 fois plus précis, puisqu’il est capable de détecter des gestes de très faible amplitude.


Partons à la découverte de ce capteur révolutionnaire

Patrick LegrandJ’ai eu la chance d’avoir été retenu par Leap Motion Inc pour tester leur fameuse innovation : j’ai ainsi reçu vendredi 1er mars un kit gratuit composé d’un capteur, d’un câble USB, d’une lettre adressée par le Co-Fondateur de la société et de ce fait, d’un libre accès au SDK. 10 000 développeurs mondiaux se sont vus comme moi, offrir le Leap Motion Controller : une façon intéressante de faire découvrir le produit et de motiver les codeurs à développer des applications compatibles ! A peine déballé et branché (en USB2 ou USB3), le capteur s’illumine en vert et me propose aussitôt une mise à jour. Lors de mon inscription en tant que Développeur, j’avais déjà installé les pilotes Leap Motion. Cependant, le produit évoluant très vite, le capteur n’était déjà plus à jour.

Les pilotes sont disponibles sous Windows et Mac, et le seront prochainement sous Linux.

leap-motion-controller

Le SDK, quant à lui, permet de développer en C++, C#, Objective C, Java, Python et Javascript (via le téléchargement d’un script Leap.js).

leap-motion-controller2

Une fois la mise à jour installée, le Leap Motion Controller est presque prêt à l’emploi ! Deux icônes ont notamment fait leur apparition : Leap et LeapVisualizer. Il faut d’abord lancer Leap : parallèlement à la led qui s’allumait en vert, une autre passe au rouge.

Leap-motion-3

Ensuite, Leap Visualizer : ce programme lance une interface permettant de visualiser ce que le capteur remonte comme information / trames.

Leap-motion4

Il est également possible de configurer la sensibilité du capteur, via un clic droit sur la Tray icon bar :

Leap Motion 5

Vous pouvez configurer le mode de tracking : soit on privilégie la précision de la détection, soit la fluidité. Vous pouvez également choisir un mode équilibré. Enfin, une option permet de limiter la saturation de la bande passante USB. Plusieurs capteurs peuvent être connectés à une même machine.

Leap Motion 6

Avant d’aller plus loin, il nous faut apprendre certaines notions. le volume de détection est celle d’un cube d’environ 60 cm de côté :

Leap Motion 7

Le capteur remonte des trames, qui encapsulent déjà des notions de “mains, doigts, pointeurs et outils”. Les “gestures” viennent d’être ajoutées dans le SDK, et de nouvelles facilités pour les Développeurs seront sans doute disponibles lors de la sortie du produit (comme par exemple la détection de rotations, de zooms, etc.).

Leap Motion 10

Et côté code, ça donne quoi ?

Je lance Visual Studio 2012, et je crée une application WPF avec deux boutons.

  • Le premier me permettra d’initialiser Leap Motion;
  • Le second me permettra de récupérer les trames.

Je commence par référencer les dlls en provenance du SDK. Via un clic droit sur “Références”, j’ ajoute une référence, et je récupère la dll “LeapCharp.Net4.0.dll” présente sous “LeapSDKlib”. Il est bien évident que si votre projet cible la version 3.5 du framework, alors référencez l’assembly “LeapCharp.Net3.5.dll”. Dans le cas d’un projet en .Net4.5, il faut la référencer l’assembly “LeapChar.Net4.0.dll”.

Leap Motion 11

Toutefois, cela n’est pas suffisant. En effet, LeapCharp.Net4.0 n’est qu’un wrapper sur des dlls natives. Vous ne pouvez donc pas les référencer via “Ajouter une référence”. Pour cela, il faut “Ajouter un élément existant”, sélectionner le filtre “Tous les fichiers” et pointer sur les dlls “Leap.dll” et “LeapCShar.dll”. En fonction de la plateforme cible (x64 ou x86), ces dlls se trouvent sous “LeapSDKlibx64”  et “LeapSDKlibx86”. Sélectionnez ensuite “Toujours copier” dans la fenêtre “Propriétés” et “Aucun” dans “Action de génération”.

Leap Motion 12

Attention ! Voici une astuce pour éviter d’être bloquer pendant un long moment sur un PC 64 bits : “Préférer 32 bits” est une option sélectionnée par défaut. Pensez donc à la décocher, sous peine d’une erreur “Pinvoke” à l’exécution.

Leap Motion 13

Maintenant, sur le fichier MainWindow.xaml, je déclare mes deux boutons, ainsi que leurs “Clic handlers” associés :

Leap Motion 14

Dans le code behind, j’ai besoin de déclarer deux objets :

  • Un controller
  • Un listener

Je dois rattacher ensuite le listener au controller.

Leap Motion 15

La récupération de la trame est faite via un appel à la méthode Frame() du controller. La documentation officielle de LeapMotion conseille plutôt de dériver la classe Listener et de gérer ainsi nos trames. On dispose dans la classe Listener d’une surcharge de OnFrame(), qui est appelée à chaque fois que le capteur remonte une trame. Il est également possible de gérer des évènements au niveau des méthodes OnConnect, OnExit, etc.

Leap Motion 16

On constate un nombre impressionnant de trames remontées, avec parfois une main détectée, un doigt, etc. Cependant, malgré les démonstrations vidéo, il reste encore pas mal de bruit, et la difficulté consiste à trier les “bonnes trames” des “trames bruitées”. En effet, lors d’un mouvement, il se peut que trois doigts soient détectés, puis deux pendant une ou deux trames, avant de revenir à trois.

Leap Motion 16

En conclusion

Leap Motion est un produit innovant de par :

  • sa petite taille
  • son hyper-sensibilité et sa performance
  • son absence de caméra (au sens “photo”)
  • la possibilité de connecter plusieurs capteurs à la fois
  • etc.

Il peut intervenir dans des projets où des capteurs comme Kinect sont pas les bienvenus (par exemple au sein d’entreprises chez lesquelles la politique de confidentialité interdit de filmer ou de prendre des photos). Il permet également de rendre “pseudo tactiles” des machines dépourvues d’écran tactile.

La communauté Leap Motion grandit progressivement : on peut s’attendre à la sortie imminente de nouvelles librairies permettant de simplifier l’accès aux données. Par ailleurs, le SDK a beaucoup évolué en l’espace d’un mois, avec d’importants “breaking changes”, heureusement bien documentés.

Enfin, sachez que Leap Motion va prochainement proposer un “market place” intitulé “Airspace”, où les Développeurs pourront commercialiser leurs applications.

Références

www.leapmotion.com

Share
Patrick LEGRAND
Patrick LEGRAND

3182

Comments

  1. Excellent, je suis impatient d’essayer ta trouvaille !

  2. marylemoigne Says: March 9, 2013 at 3:23 pm

    excellent article

  3. @exfromtheleft Says: March 11, 2013 at 9:47 am

    excellent article, groosse découverte pour moi, il ne reste plus qu’à trouver un SDK PHP voir même php.net 😉

    • Patrick Legrand Patrick Legrand Says: March 11, 2013 at 10:07 am

      Il est tout à fait possible de développer pour l’instant en Javascript, donc, à mon avis, d’écrire du code Php interagissant avec leap motion. Cependant, le capteur étant du côté client, il est à mon avis tout à fait logique que l’interaction se fasse plus avec Javascript pour du web.

  4. Excellent article, mais pourquoi est-ce que kinect n’a pas été adapté déjà pour ça ? je dirais que cette “Leap motion controller” est une sorte de kinect orienté mode souris

  5. Patrick Legrand Patrick Legrand Says: March 12, 2013 at 1:25 pm

    Kinect est un produit également intéressant. Cependant, initialement sorti pour la Xbox 360, ses caméras prenaient des photos, et générait un squelette humain. La distance de jeu étant de plusieurs mètres, je pense que le but initial de Kinect était de modéliser le corps humain avec une précision plus ou moins bonne. Une nouvelle version devrait prochainement sortir également, avec une précision accrue, mais au niveau de la détection des mains et des objets proches, LeapMotion devrait garder une longueur d’avance. LeapMotion utilise 2 caméras et des 3 leds infrarouges, afin de déterminer les différents objets entrant dans son espace de détection. Elle ne cible pas les consoles de jeux vidéos de salon pour l’heure. Je pense toutefois que Kinect et LeapMotion sont davantage complémentaires que rivaux. On pourrait imaginer des systèmes où Kinect détecterait les interactions du corps humain, à une distance de 2-3mètres, alors que Leap Motion, suivrait de manière plus précise les interactions plus proches (mais plus précise).

  6. Très interessant 🙂 à suivre

Leave a Reply

Your email address will not be published. Required fields are marked *