Projet C IG (1A)

IHM (2A)


VR/AR/Post-WIMP (3A)


Projet image (2A)


HCI (MoSIG 2)


Test Logiciel


Projects Docs

Projet post-WIMP (2012-13) Gestes de la main pour le contrôle "aveugle" et à distance d'un téléphone mobile

Lionel CHARAIX, Céline MICHAUD, Matthieu PAUL, Vincent PEREZ, Amy-Félicy RAMAHAY MANDIMBY

Pour le projet de Post-WIMP, nous avons réalisé un produit de contrôle aveugle et à distance d'un téléphone mobile à l'aide de gestes de la main. L'objectif est de pouvoir utiliser son téléphone sans avoir besoin ni de le voir, ni de le toucher.

Description du Produit et Motivations

Il est parfois utile de pouvoir utiliser son téléphone portable dans le froid ou au ski, mais il est difficile de sortir son téléphone mobile de sa poche et de l'utiliser avec des gants ou dans des conditions météorologiques peu agréables. Avec le produit que nous décrivons dans ce rapport, nous souhaitons fournir aux utilisateurs un moyen de naviguer dans leur téléphone portable, et d'effectuer certaines actions (telles que téléphoner et écouter de la musique), sans voir ni toucher leur téléphone. Ce prototype procure donc la possibilité d'utiliser son téléphone sans avoir à le sortir de sa poche ou de son sac. Des retours audio permettent à l'utilisateur de se repérer dans les menus de son téléphone mobile.

Pour permettre l'utilisation d'un tel dispositif, nous avons besoin d'un téléphone mobile, d'un kit mains-libres et d'un gant 5DT Data Glove Ultra doté de capteurs et donc capable de détecter les mouvements des doigts.

On pourrait penser qu'il est déjà possible de contrôler son téléphone "à distance" sans avoir à sortir son téléphone de sa poche comme le fait Siri sur les derniers iPhone qui permettent le contrôle vocal. Mais l'intérêt de notre dispositif est aussi de pouvoir contrôler le téléphone de manière discrète et sans besoin d'émettre un son.

Spécifications

Pour réaliser notre prototype, et au vu des difficultés d'interfaçage entre le gant 5DT Data Glove Ultra et un téléphone portable, nous avons choisi d'implémenter un logiciel comportant une interface graphique représentant les actions possibles d'un téléphone mobile. Mais normalement, l'utilisateur n'a pas besoin de regarder un écran, le téléphone peut très bien rester dans sa poche. On a alors un retour audio, ce qui rend l'utilisation d'un système d'écoute indispensable. Les actions sont plus limitées que celles d'un smartphone actuel mais représentent au mieux les actions les plus utilisées. Le logiciel permet l'exploitation des données recueillies par le gant, la reconnaissance du geste en cour et le retour des actions sur l'interface graphique.

Le matériel utilisé est donc :

  • Un gant 5DT Data Glove Ultra
  • Un ordinateur qui joue le rôle du téléphone mobile
  • Un casque ou des écouteurs voire des hauts parleurs

Un certains nombre de gestes et d'actions ont été choisis pour pouvoir communiquer avec le téléphone. Nous avons repris certains gestes des interactions tactiles actuelles et avons essayé de trouver les gestes les plus intuitifs possibles pour les actions moins courantes (aller dans le répertoire, jouer/stopper une musique...). L'utilisateur a donc la possibilité d'utiliser son mobile avec les gestes décrits ci-dessous, chacun étant associé à une action particulière selon la situation :

    
Geste
ActionRépertoireBoite VocaleMusique
    
Geste
Action 1RépertoireBoite VocaleMusique
Action 2Play / Pause  
   
Geste
Action 1AnnulerDécrocherRaccrocher
Action 2RetourAppelerRefuser un appel
Action 3  Stop
   
Geste
ActionMonter le volumeBaisser le volume
   
Geste
Action 1DéfilementDéfilement
    

Remarque : deux gestes différents peuvent avoir la même signification (par exemple le défilement avec un seul doigt et le défilement avec deux doigts) car il nous a semblé important que l'utilisateur puisse avoir le "choix" du geste suivant ce qu'il trouve le plus intuitif ou le plus facile. Si notre logiciel en vient à s'améliorer, nous pourrions penser à faire un défilement "lent" avec le geste "défilement à un seul doigt", un défilement plus "rapide" avec le geste "défilement à deux doigts".

Implémentation

L'implémentation du logiciel de reconnaissance de geste et de communication gant/téléphone a été divisée en trois étapes :

  • Récupération des données fournies par le gant
  • Exploitation des données, et reconnaissance du geste
  • Implémentation du simulateur de téléphone

Récupération des données fournies par le gant

La librairie fournie avec le gant 5DT Data Glove Ultra, permet de récupérer les données du gant, à savoir les angles des phalanges des doigts par rapport à la paume de la main, l'angle de pliure d'un doigt (autre que le pouce), et l'écartement entre chaque doigt. Le gant possède donc quatorze capteurs qui envoient les données à une fréquence de 150Hz.

Exploitation des données, et reconnaissance du geste

Notre algorithme de reconnaissance des gestes se base principalement sur l'algorithme appelé "Dynamic Time Warping" (DTW). Ce formalisme est généralement utilisé lorsque l'on a besoin de mesurer la similarité de séquences ayant des rapidités différentes. Etant donné que les utilisateurs effectuent les gestes à des vitesses variables, le DTW nous a paru bien adapté au problème.

La première étape consiste à réaliser un apprentissage pour chaque geste, c'est à dire que des utilisateurs réalisent plusieurs fois chaque geste afin de produire des données de référence qui vont être utilisées par l'algorithme. Ensuite, au cours de la reconnaissance, on acquiert à chaque instant les signaux émis par le gant, et on leur applique l'algorithme DTW qui, à l'aide des données de référence, renvoie le geste le plus probable d'avoir été effectué. Si aucun geste n'est suffisamment probable à un instant t, on considère que l'utilisateur est en position de repos.

Nous avons utilisé l'implémentation du DTW fournie en libre distribution par Nick Gillian, chercheur au MIT s'étant penché sur ces problèmes de reconnaissance.

Implémentation du simulateur de téléphone

L'interface joue le rôle du téléphone. Chaque geste de la main crée une action sur l'interface. Par exemple, un geste permet l'ouverture du répertoire, un autre la boîte vocale, un autre l'appel à un ami...etc. Voici une description rapide des actions possibles :

  • Depuis le menu, on peut accéder au répertoire, aux messages vocaux et à la musique
  • A partir du répertoire, on peut retourner dans le menu ou appeler un contact
  • A partir de la boîte vocale, on peut retourner au menu, écouter un message vocal ou bien appeler la personne ayant laissé un message vocal
  • A partir de la musique, on peut écouter de la musique avec les fonctions classiques d'un lecteur (play, pause, stop, monter le son, baisser le son, etc.)

Problèmes non résolus

Certains problèmes subsistent lors de la reconnaissance des gestes. Tout d'abord, l'utilisation des données récupérées lors de l'apprentissage s'avère un peu plus compliquée que prévu, en particulier la détermination de seuils de tolérance pour décider si oui ou non on peut considérer qu'un geste donné a été reconnu parmi les éléments de la base d'apprentissage. Le fait est que la détermination de ces seuils dépend à la fois du geste considéré et de la personne qui a enregistré les données ayant servi à l'apprentissage. En pratique, ces seuils doivent idéalement être déterminés pour chaque groupe de gestes, et pour chaque utilisateur. Nous n'avons pas pu déterminer des seuils complètement satisfaisants, nous avons donc des problèmes pour trouver un bon compromis entre un nombre de reconnaissances erronées élevé et une importante difficulté à reconnaître le moindre geste. Certains gestes sont par ailleurs très difficiles voire impossibles à distinguer des autres, à l'instar du geste Raccrocher qui n'est quasiment jamais reconnu.

Bien que l'envoi des ordres à l'interface soit fonctionnel, le problème de reconnaissance induit un deuxième problème: la segmentation de l'envoi des ordres en temps réel en fonction des reconnaissances effectuées. A l'heure actuelle, de nombreux ordres sont envoyés alors qu'ils sont erronés ce qui rend l'utilisation de l'interface via le gant difficile. Nous avons tenté de faire cette segmentation sans trouver de solution réellement satisfaisante au regard des résultats obtenus. Nous pensons néanmoins que la résolution du problème de reconnaissance pourrait rendre la résolution du problème de segmentation plus simple.

Résultats et Évaluation

Tout le processus d'apprentissage et de reconnaissance a été implémenté et est pleinement fonctionnel. L'interface est complète et le lien avec le module de reconnaissance a été fait. L'apprentissage a été effectué grâce aux données des gestes des membres de l'équipe et de personnes extérieures au projet. Elle a abouti à la création de fichiers qui contiennent les données nécessaires à l'apprentissage. Un utilisateur peu donc tester la reconnaissance des gestes sans effectuer la phase d'apprentissage. Par contre, l'apprentissage et la reconnaissance donnent des résultats hétérogènes selon les personnes.

Bien que les deux problèmes décris précédemment soient handicapants pour l'utilisation pratique du prototype, les résultats obtenus sont plus qu'encourageants. Pour un nombre important d'échantillons pour l'apprentissage, nous avons pu affiner la reconnaissance de manière significative. Par ailleurs, une personne effectuant seule l'apprentissage et testant la reconnaissance, obtiens des résultats concluants. La visualisation en temps réel des prédictions effectuées montre que les gestes sont, pour la plupart, correctement reconnus et au bon moment. Cela prouve que des seuils correctement affinés et un apprentissage correctement effectué pourrait permettre d'obtenir un prototype pleinement utilisable.

D'un point de vue plus pratique, en utilisant le gant, la majorité des personnes ont trouvé qu'il était plus difficile de bouger les doigts avec le gant que sans gant, celui-ci gênant les mouvements. De plus, il est parfois compliqué pour les utilisateurs de faire certains gestes alors que ces mêmes gestes sont facile à faire pour d'autres, suivant la souplesse des doigts de chacun. Pour régler en partie ce problème, certaines commandes sont faisable avec plusieurs gestes différents.

Améliorations possibles

Concernant l'interface, nous pourrions rajouter quelques fonctionnalités à notre prototype, comme par exemple la suppression d'un message dans la boîte vocale, ou encore la composition d'un numéro de téléphone quelconque. On pourrait également rajouter une option "numéros préférés" qui permettrait d'appeler rapidement (en un ou deux gestes) un contact enregistré dans une liste des numéros favoris. Il faudrait alors penser à utiliser d'autres gestes. De plus, notre produit actuel ne contient qu'un petit nombre de contacts dans le répertoire, un faible nombre de musiques et de messages vocaux. Il faudrait donc penser à des gestes pour rendre plus rapide le défilement dans le répertoire et dans le lecteur de musiques.

Concernant la partie traitement des données, plusieurs pistes d'améliorations sont envisageables.

  • Tout d'abord afin d'améliorer la reconnaissance, nous pourrions faire en sorte de présélectionner les gestes à reconnaitre en fonction de la position courante dans l'interface. Le fait de filtrer les commandes est déjà effectif (certaines commandes non présentées ci-dessus n'ont aucun effet) mais le filtrage des possibilités de reconnaissance pourrait améliorer cette dernière.
  • Un apprentissage personnalisé pour chaque utilisateur semble améliorer considérablement la reconnaissance. Nous n'avons pas eu le temps de mettre en place un tel système personnalisé pour notre projet mais les avantages pratiques seraient sans doute importants.
  • Utiliser une hystérésis pourrait être pertinent pour affiner la reconnaissance et régler certains problèmes de bruit. Nous aurions donc besoin de deux seuils par geste afin d'avoir un seuil différents pour valider la reconnaissance d'un geste et pour l'invalider. Ainsi, des petits changements brusques au niveau des probabilités calculées ne perturberaient plus la reconnaissance et nous aurions idéalement des séquences consécutives de gestes différents assez nettes.

Conclusion

Notre prototype n'est pas tout à fait opérationnel mais est en bonne voie. La reconnaissance de geste est en cours de recherche (tâtonnements sur certains aspects). Nous aurions aimé créer un programme qui puisse reconnaître parfaitement les gestes et qui permettrait un contrôle absolu du téléphone mais nous avons conscience de la difficulté de cette tâche. Nous voulions aussi en faire plus mais, par manque de temps, nous n'avons pas pu atteindre nos objectifs. Nous pensons qu'il y a un réel avenir dans le contrôle de machine via des gestes du corps. De plus, de nouvelles formes de détection des gestes de la main sont en cours de création. Par exemple, il existe un projet visant à remplacer le gant par un simple bracelet, ce qui rendrait le système plus portatif. Notre projet pourrait alors être repris et amélioré afin de contrôler le téléphone grâce à des accessoires via Bluetooth beaucoup moins encombrants. Ce projet est bien sûr généralisable à d'autres appareils comme les ordinateurs ou autres. Le contrôle d'appareils via des gestes du corps pourrait être le futur moyen d'interaction avec les machines.

Edit - History - Upload - Print - Recent Changes - Search
Page last modified on January 21, 2013, at 07:28 AM