Prenez le contrôle de Myo sous Linux

Cette semaine à SQLI, lors d’une soirée Hack, j’ai eu l’occasion de prendre le temps pour faire un truc que j’aurais dû faire depuis bien longtemps à savoir : faire marcher mon bracelet Myo sous Linux !

Un Myo c’est quoi ?

Avant de parler de la programmation Myo, revenons un peu sur la nature du bracelet Myo et comment il fonctionne.

plan Myo

C’est donc un bracelet connecté qui possède un certain nombre de sensors :

  • Sensors Électriques
  • Accéléromètre
  • Gyroscope

Ce qui différencie le Myo des autres bracelets connectés, ce sont les sensors électriques qui lui permettent de reconnaître des “gestes”. De cette façon, en plus d’envoyer des informations telles que l’orientation ou encore la vitesse, les sensors électriques sont capables de détecter si le porteur du bracelet a fait un geste précis. Les gestes aujourd’hui reconnus sont multiples :

mouvements Myo

Et voici les informations correspondant au gyroscope :

controle Myo

Pour quoi faire ?

Le Myo bien qu’inconnu du grand public représente à mon avis ce que doit représenter l’IOT et comment interagir avec.

En effet, il se présente comme un tiers objet qu’on introduit dans notre quotidien pour enrichir le monde qui nous entoure. Les premiers exemples de la vidéo de Thalmic montrent comment l’on peut contrôler un drone, ses lumières sa musique, ses slides… Bref, comment proposer une autre façon de contrôler le monde qui nous entoure avec des gestes !

Mais les applications du Myo ne s’arrêtent pas à la domotique. En effet, du fait que nous évoluons dans le monde des interfaces gestuelles, la composante sanitaire & médicale rentre en ligne de compte. Ainsi des développeurs ont équipé des chirurgiens d’un bracelet pour les aider à zoomer, accéder à des informations du patient grâce au Myo.

Plus récemment encore, une équipe de recherche a placé 2 bracelets Myo sur le bras d’une personne ayant été amputée pour lui faire contrôler son bras mécanique grâce aux impulsions électriques détectées par les bracelets !

On code comment avec ?

Aujourd’hui Thalmic a développé 3 SDKs permettant d’interagir avec des objets (programmation objets) que l’on peut manipuler :

  • Un SDK en C++ exploitable pour les ordinateurs
  • Un SDK en Java pour Android
  • Un SDK en ObjectiveC pour Iphone

A partir de là, on peut commencer à jouer. Le SDK nous permet de récupérer les informations en temps réel des différents capteurs. De plus, pour les plus chevronnés, les données brutes peuvent être lues, mais autant vous dire qu’il va falloir se coucher tard pour interpréter ces données !

PyoConnect

Les développeurs de Myo, n’ont pas encore pris le temps de développer le sdk pour Linux ni l’application de gestion MyoConnect. Heureusement la communauté est là ! Un développeur (Fernando Cosentino) a développé une solution basée sur Python nous permettant de contrôler notre Myo en simulant le SDK officiel LUA sous Linux !

Le projet est disponible ici : http://www.fernandocosentino.net/pyoconnect/

Installation

L’installation est très simple à effectuer :

// plug bluetooth adapter

// permission to ttyACM0 – must restart linux user after this

sudo usermod -a -G dialout $USER

 

 

// dependencies

sudo apt-get install python-pip

sudo pip install pySerial –upgrade

sudo pip install enum34

sudo pip install PyUserInput

sudo apt-get install python-Xlib

sudo apt-get install python-tk

 

 

// now reboot

Une fois cette installation faite, il vous faut télécharger le zip contenant le script python : PyoConnect V2.0

Vous pouvez le dezziper où bon vous semble car ce répertoire sera ensuite votre point de départ. Nous allons appeler le chemin vers ce répertoire : $PYO_PATH pour le reste de l’article.

Lancement

Il ne nous reste plus qu’à lancer le script afin de voir ce que cela donne :

  1. Branchez votre dongle bluetooth Myo
  2. Vérifiez que votre Myo est bien allumé
  3. Tapez :
// Aller dans le répertoire de Pyo Connect

cd $PYO_PATH

// Lancez le script python

python PyoManager.pyc

à partir de là, une fenêtre se lance :

fenetre pyoConnect

Vous aurez donc la possibilité de vous connecter ou vous déconnecter à votre Myo. La connexion vous permet de démarrer les scripts qui sont sur ON.

Dans l’exemple précédent, par défaut, le module de prise en main de LibreOffice Impress est actif.

Si vous cliquez sur Disconnect, votre Myo rentrera en veille prolongée au bout de 3 minutes. J’ai demandé au développeur s’il ne pouvait pas mettre à disposition le “Turn Off” mais il m’a répondu que pour l’instant, ça ne fait pas partie de sa roadmap.

Comment aller plus loin ?

C’est bien beau tout ça, mais si j’ai envie d’avoir un contrôle un peu plus poussé de certaines de mes applications comment dois-je procéder ?

Gestion des scripts

Le développeur a prévu les choses simplement. En effet, pour ajouter des fonctionnalités à son manager, il vous suffit simplement d’ajouter un script pyhton répondant au sdk lua de Thalmic dans le répertoire “scripts” de$PYO_PATH

Ainsi, au prochain démarrage, vous aurez la possibilité de démarrer ou arrêter votre Myo ! « That’s all falks » !

Surcouche Python

Le développeur a pensé a tout en nous mettant à disposition le SDK de Myo via Python :

  1. Cela devient beaucoup plus facile et rapide d’écrire du code pour contrôler des éléments. Et accessoirement, ça tourne aussi sous windows & mac
  2. On peut constater que l’équipe de Thalmic a vraiment bien bossé en mettant une grosse couche d’abstraction sur la complexité du Myo…

Voici par exemple ce qu’il est possible de faire :

  • Identifier la fenêtre à l’écran et n’activer le script que dans cette fenêtre
  • Action avec la souris :
    • Déplacement de la souris
    • Clic Droit
    • Clic Gauche
  • Actions claviers :
    • Émission d’une touche selon 3 états : Down / Up / Press (down & up rapidement)
    • Gestion des touches de type SHIFT / CTRL, pour pouvoir gérer les combinaisons de touches.
  • Actions sur le Myo :
    • Connexion / Déconnexion
    • Vibration
    • Récupération des métriques liées au Myo : Yaw / Pitch / Roll / ….

La cerise sur le gâteau : des méthodes qui ne sont pas présentes dans le SDK Lua ont même été ajoutées! Je vous conseille d’aller voir la partie “Library Documentation” sur le site officiel de PyoConnect pour prendre connaissance de ces ajouts : http://www.fernandocosentino.net/pyoconnect/

Il y a juste quelques méthodes qui à contrario, ne sont pas implémentées. Ceci est bien expliqué à la fin de sa documentation.

Contrôle de présentation HML5

Ensuite, fort de cette première lecture, je me suis lancé dans mon premier script : contrôle de mes présentations HTML5 par le bracelet. Le “use case” est vraiment très simple :

  1. Je veux délocker mon Myo sur la gestion doubleTap
  2. Une fois ce dernier délocké, je veux passer mes slides avec cette même gesture
  3. Enfin, je veux pouvoir locker le Myo sur la gesture fist
scriptTitle = « KeyBoard »

scriptDescription = « Keyboard Control »

 

 

def onUnlock():

myo.unlock(« hold »)

print(« Unlock ! « )

 

 

def onLock():

print(« Lock ! « )

def onPoseEdge(pose, edge):

if (edge == « on »):

     print(pose)

if (pose == ‘doubleTap’) and (edge == « on »):

     myo.keyboard(« right_arrow »,« press »,«  »)

if (pose == ‘fist’) and (edge == « on »):

     myo.lock()

Voici ce qu’on peut retenir de ce script :

scriptTitle = « KeyBoard »

scriptDescription = « Keyboard Control »

Je spécifie son nom tel qu’il apparaîtra dans le manager PyoConnect :

def onUnlock():

myo.unlock(« hold »)

print(« Unlock ! « )

Quand le Myo passe en Unlock, je lui demande de le rester. En effet, si je ne le fais pas, je ne pourrai lui demander de se locker automatiquement qu’après un certain temps seulement.

def onPoseEdge(pose, edge):

if (edge == « on »):

     print(pose)

if (pose == ‘doubleTap’) and (edge == « on »):

     myo.keyboard(« right_arrow »,« press »,«  »)

if (pose == ‘fist’) and (edge == « on »):

     myo.lock()

Enfin, je gère les poses Myo qui conviennent à mon besoin. Le Edge correspond à l’état de détection de la pose par le Myo :

  • on : la gesture commence
  • off : la gesture se termine

Je pense qu’il faut que je joue encore un peu avec ce script mais globalement, il répond bien à mon besoin de simplement passer des slides.

Pour aller encore plus loin

Si vous êtes intéressés par le développement Myo, je vous conseille de suivre le blog de Thalmic :http://developerblog.myo.com/

 

Vous pouvez retrouver cet article sur le blog de l’auteur : http://jef.binomed.fr

0 commentaires

votre commentaire

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Inscription newsletter

Ne manquez plus nos derniers articles !