Contrôle dynamique d'interface par reconnaissance de mouvement des mains

De fablab
Aller à : navigation, rechercher

Cadre du projet

  • Encadrant : Marie-Paule Cani.
  • Nombre d'étudiants : 3.
  • Lieu : le projet aura lieu en salle FabLab à l'Ensimag.
  • Prérequis : C#

Explication du projet

Wiimote

Ce projet propose de développer un programme qui permettrait à l'utilisateur de manipuler une interface à l'aide de certains gestes.

Pour cela nous nous servons d'une wiimote, et plus particulièrement de sa caméra infrarouge. En projetant de la lumière infrarouge sur des gants munis de matériaux réfléchissants qui permettront à la wiimote de détecter jusqu'à 4 points.

La première application sera d'utiliser la reconnaissance pour contrôler une visionneuse d'images.


Avancement du projet

  • Intégration de la connexion de la wiimote avec le logiciel, récupération des données.
  • Description des différents mouvements reconnus
  • Reconnaissance de ces mouvements par calcul sur les positions des points [En Progrès]
  * Changement d'image:
       Le changement d'image en déplaçant un doigt vers la gauche ou la droite a été implémenté.
       Certains paramètres, comme la durée / longueur du déplacement, restent à calibrer.
  * Zoom :
       Le zoom est fonctionnel, mais à cause de difficultés d'ordre matériel nous l'avons testé avec deux points (au lieu de quatre).


Classification des mouvements reconnus

Les mouvements sont séparés en catégorie selon le nombre de points qu'ils utilisent.

  • Avec deux point :
    a) Déplacer l'image en pinçant les doigts puis en les déplaçant.
    b) Passer à l'image suivante ou précédente avec un mouvement brusque de deux doigts de la même main
       vers la droite ou la gauche.
  • Avec trois points :
    Rotation de l'image avec trois doigts de la même main, dans le sens souhaité.
  • Avec quatre points :
    Zoom avant ou zoom arrière en fonction de l'éloignement des deux mains
  • Intégrer le code avec la visionneuse d'images open source Image Picture Viewer


Description du dispositif

La wiimote sera placée en face de l'utilisateur et la plaque de LEDs sera derrière la wiimote afin de baigner la pièce de lumière infrarouge.

Seuls les matériaux réfléchissants placés sur le gants réfléchissent assez de lumière infrarouge pour être visible par la wiimote. L'utilisation de matériaux réfléchissant permet de reconnaitre plus précisément les points et d'éliminer le bruit ambiant.

Le dispositif est le suivant: Nous plaçons côte à côte la wiimote et le projecteur. La wiimote ne doit pas recevoir de lumière ni du projecteur ni d'autre source de lumière de préférence(surtout de lumière du soleil). L'utilisateur se place à environ 1 mètre du dispositif(sujet à variations suivant le projecteur) avec du papier réfléchissant fixé aux doigts.

Le dispositif comprend une wiimote et un projecteur infrarouge
Le papier réfléchissant permet une meilleur détection des points infrarouges

Détails techniques

Le projet requiert l'utilisation des éléments matériels suivants :

  • Deux Wiimotes
  • Matériel bluetooth
  • Plaquette de LEDs infrarouges
  • Matériaux réfléchissants

Problèmes rencontré et solutions

  • L'utilisation d'une source d'infrarouge suffisamment puissante et émettant dans un large faisceau est primordiale,

sans quoi la reconnaissance de points par la wiimote est approximative et sujette au bruit ambiant. Nous avons essayé une sensorbar wii, trop peu puissante, et un projecteur infrarouge, puissant mais avec un faisceau réduit.


  • Même avec une lampe suffisamment puissante, il faut utiliser une surface réfléchissante approprié :

avec de l'aluminium, la réflexion n'était pas stable. Nous avons utilisé un matériau réfléchissant qui permet de se placer loin de l'émetteur et d'avoir des points stables. En effet la wiimote reconnait 4 points dès que possible, aussi il faut s'assurer qu'il y ait un minimum de bruit (lumière du soleil, ...), et que le matériau réfléchissant soit suffisamment petit pour n'être détecté que comme un seul point.


  • Lors de la reconnaissance de mouvements, il faut s'assurer que deux mouvements différents ne puissent pas être reconnus en même temps,

ou qu'un mouvement donné ne soit pas reconnu lors d'un geste incorrect. Pour cela nous avons tout d'abord défini des mouvements distingués par le nombre de points qu'ils utilisent. Concrètement, nous faisons à l'exécution une distinction de cas selon le nombre de points captés par la wiimote. Ensuite le programme cherche à reconnaitre un mouvement(ex: déplacement de gauche à droite). Il abandonne, puis reprend cette recherche dès que le nombre de points change, ou que le mouvement est incohérent (ex: mouvement de haut en bas).


  • La reconnaissance des points ne peut se faire que dans une fenêtre réduite à cause de la faible étendue du faisceau du projecteur.

Nous projetons de faire l'acquisition d'une lampe différente pour remédier à ce problème.


Logiciels