Pour compléter nos tests sur les nouveaux usages autour des NUI (Natural User Interface), nous nous sommes intéressés au bracelet Myo. Cet article fait suite au précédent où nous traitions de la reconnaissance vocale.

Présentation du bracelet

La technologie du bracelet MYO repose sur l’interception de l’activité électrique de vos muscles. Lorsque vous réalisez un mouvement avec votre bras, votre main, vos muscles réagissent et les impulsions sont captées par le dispositif.

muscle

La bracelet est compatible avec les différents systèmes d’exploitations bureautiques et mobiles. La communication entre le périphérique et le bracelet s’effectue avec un dongle bluetooth. Celui-ci est fourni dans le kit de base. Vous devez ensuite installer les drivers, à la suite de quoi vous devez suivre un petit didacticiel afin de maîtriser les différents gestes. Le bracelet apprendra ainsi comment vos muscles réagissent en fonction des gestes et améliora sa reconnaissance pour votre prochain utilisation.

Parmi les gestes qui sont reconnus par le bracelet nous trouvons la liste ci dessous

myo-gestures

 

Le Myo étant également équipé d’un gyroscope nous sommes également capable de repérer quand le bras se lève, tourne, …

myo-gesture-move

Quelques usages de base sont indiqués sur le site du constructeur; nous pouvons citer le contrôle d’une présentation PowerPoint, le pilotage de la souris, le contrôle de lecteur vidéo, … Bien sûr nous pouvons utiliser le bracelet pour tout autre usage car le constructeur fournit un SDK compatible avec de nombreuses plateformes (Windows, Mac, iOs, Android, Unity).

Dans cet article, nous illustrerons l’utilisation du bracelet MYO en venant compléter l’application UniversalManagerLight afin d’allumer et éteindre notre lampe Philips HUE.

Utilisation du SDK

Pour Windows nous pouvons récupérer le SDK directement sur leur site. La version du SDK est une DLL implémentée en C++. Dans notre cas nous souhaitons l’utiliser à travers une application UWP développé en C#. Il faut donc référencer un wrapper que vous pouvez trouver sur ce github MyoSharp.

La 1ère étape est de copier la DLL officielle (en fonction de votre plateforme il faudra prendre soit le x86 ou la x64), la copier dans votre projet et ne pas oubliez de la copier à chaque fois dans votre répertoire de build. Pour cela modifier dans les propriétés de la DLL l’option Copy to output directory avec la valeur Copy always. 

myo_dll

Il faut ensuite référencer notre wrapper c# dans les références de notre projet.

myosharp

 

Maintenant, nous devons nous connecter au Myo pour recevoir les différents événements du bracelet. Dans cet article nous allons ajouter cette fonctionnalité dans le viewModel ‘LampViewModel.cs‘, mais ce code peut se mettre à n’importe quel endroit où vous souhaitez déclencher la surveillance des événements du Myo. Pour cela il faut ouvrir un canal de communication :

Puis nous allons gérer les événements de connexion et déconnexion du bracelet grâce à un HUB.

Nous pouvons également interagir avec le Myo depuis le code par exemple en le faisant vibrer avec la méthode Vibrate.

Le cœur de l’algorithme va maintenant se situer dans la réponse à l’événement PoseChanged. C’est dans cet événement que nous allons être notifié de chaque position détectée par le MYO. Dans notre cas nous allons filtrer uniquement l’action double tap pour allumer ou éteindre notre lampe. Lorsque l’événement DoubleTap sera détecté, on utilisera notre dataAccess pour envoyer un ordre à notre serveur d’API.

Dans l’argument de l’événement (PoseEventArgs) nous pouvons récupérer d’autres informations grâce à la propriété Myo. Vous pouvez filtrer les gestes grâce à l’enum Pose, mais également récupérer la direction du bras, ou encore les données de l’accéléromètre.

Nous intégrons un simple bouton dans notre vue XAML pour lancer l’action. Cette action est basée sur une commande (StartListeningMyo) contenu dans le viewModel :

 

Au final nous obtenons une application qui est capable de réagir au double tap du bracelet MYO pour allumer une lampe à distance et sans aucune autre interaction avec l’ordinateur.

UML-screen

Conclusion

Les NUI apportent de nouveaux usages à intégrer dans nos applications. Ici grâce au bracelet MYO, nous pouvons nous éloigner un peu plus des interfaces classiques clavier / souris. Bien sûr l’exemple que nous avons présenté est relativement simple dans sa mise en oeuvre, mais cela nous laisse entrevoir la facilité avec laquelle nous pouvons rajouter ce type d’interaction dans nos applications.

Partager