Projets:A-maze

From wikilab

Description du projet

Créer un dispositif pour améliorer l'apprentissage du Tae Kwon Do par des malvoyants.

L'idée est de créer une application qui permette de choisir différentes séquences de mouvements avec des rotations et des déplacements afin que l'usager puisse être corrigé en temps réel avec un retour haptique sur les épaules sous forme de vibration.

Il existe un vingtaine de patterns (séquence de mouvements) incluant chacun une dizaine de rotation.

L'entrée et la sortie sont situés à la même position pour chaque pattern.

Pour les patterns, "les labyrinthes virtuels", la surface de deplacement est de 20m2. Il y a peu de déviation en réalité. Il n'y a jamais plus de 2 ou 3 pas d'affilé, suivis de rotation.

La séquence que nous appelons ici un labyrinthe virtuel change selon le niveau du pratiquant. La largeur du couloir est équivalent à environ 50 cm, largeur du bassin. Il s'agit de créer un exercice de mobilité avec lequel il travaille ses orientations. Le retour haptique représente le retour du mur du labyrinthe virtuel par rapport au déplacement.


Les pratiquants les plus avancés font des huitièmes de 360 degrés , soit 45 degrés. Pour arriver à cette précision il faut environ 6 ans pour un malvoyant et cet exercice permettrait d'accélérer l'apprentissage.

Il y a trois rotations possibles: 45, 90 et 180 degrés.

Les épaules sont reliées au bassin.

Aujourd'hui sans ce dispositif, le maitre rectifie avec tapotement sur l'épaule ou en bougeant le noeud de ceinture, la personne s'oriente. Il n'y a pas de vocalisation, pour rester concentré sur le mouvement et c'est la raison pour laquelle on ne souhaite pas vocaliser les erreurs.

Le principe ici serait de faire porter à la personne un gyroscope au niveau de la ceinture, "la boussole" du Tae Kwon Do, située à 3cm derrière le nombril, centre de gravité, point par lequel passe le point de rotation


Le dispositif est composé de trois parties :

  • Le gyroscope au niveau de la ceinture
  • un moteur vibrant sur chaque épaule
  • une application depuis laquelle on choisit quelle séquence on travaille

Fonctionnement du dispositif:

  1. on declenche la séquence sur le téléphone (ou microcontroleur)
  2. le gyroscope reçoit et contrôle les angles de la séquence reçus en bluetooth de l'application (téléphone)
  3. le retour haptique (les moteurs vibreurs) indique à l'usager s'il fait une erreur.

Schéma du dispositif

TaeKwonDo concept.png



Les éléments à prendre en compte pour programmer l'application

Un angle est détecté seulement si l'angle est supétieur à 35 degrés (à voir). La marge d'erreur toléré sur l'angle doit être réglable selon le niveau de l'usager et selon la taille de la personne.

L'usager aurait une seule chance de rectifier sinon tant pis il continue le pattern mais comme les angles sont relatifs à sa position, pas de problème. Dans le soft, il y a l'apsect usager final qui choisit son pattern et l'éducateur qui peut entrer le pattern. Ces patterns devraient pouvoir être ajoutés via l' interface utilisateur avec retour visuel du pattern.

En 1ere approche seuls les changements de direction sont à prendre en compte. Séquence d'angles.

Si on veut 180 et qu'on fait plus, vibration, mais si moins de 160 retour haptique?

Il faut signer les angles plus ou moins 90 degrés pour savoir si on est allé "dans le mur" ou si on a fait une rotation incomplète . Par défaut on est au nord. Travaille avec les points cardinaux.

Quand erreur, ca vibre, et arrete de vibrer quand l'utilisateur rectifie.

Pour passer à l'étape suivante mettre un autre seuil que celui du retour haptique. Par exemple, jusqu'à 20 degrés c'est un degré parasite, de 20 à 40, c'est une rotation et c'est donc une erreur de rotation qui n'a pas atteint les 45 degrés.

Cahier des charges

Analyse de l'existant

Equipe (Porteur de projet et contributeurs)

  • Porteurs du projet : Sébastien
  • Concepteurs/contributeurs : Yves, Delphine
  • Animateur (coordinateur du projet)
  • Fabmanager référent :Delphine
  • Responsable de documentation

Matériel nécessaire

  • Téléphone Android
  • ESP 32

Outils nécessaires

Coût

Délai estimé

Fichiers source

Etapes de fabrication pas à pas

Application Android pour envoyer la séquence du pattern au boitier contrôleur du pratiquant

Télécharger le zip et installer l'APK sur le téléphone

l'application sur le smartphone de l'enseignant.

Définir les différents patterns

Dans un tableur, définir les patterns sous le format suivant : (format provisoire )

Patterns
Nom du pattern Niveau de difficultée A définir (ex: rotation) A définir (ex: temps) A définir (ex: rotation) A définir (ex: temps) (etc...)

Exporter le fichier au format csv avec virgule comme séparateur

Connecter le téléphone à l'ordinateur

Copier le fichier CSV dans le téléphone dans le repertoire suivant : Mémoire de stockage interne/Android/data/appinventor.ai_yveslc35.TAEKWONDO/files/Nom_du_fichier.csv

NB: Si on désinstalle l'application le fichier va disparaitre il faudra le réinstaller au même endroit.

Si on est en mode développeur sur Appinventor en mode Companion , le fichier est à uploader depuis l'application companion dans le "File"

Usage de l'application

  • Ouvrir l'application TaeKwonDo sur le téléphone.

Icone application taekwondo.jpg

  • Cliquer sur le bouton "Scan"

Scan taekwondo new.jpg

  • La liste bluetooth des contrôleurs de TaekwonDo apparait

Selection usager taekwondo new.jpg

  • Sélectionner le contrôleur (sous tension) de l'usager taekwondo (ex: "taekwondo 01") et cliquer sur le bouton "Connecter"

Valider usager taekwondo new.jpg

  • Cliquer le bouton "Valider le choix du contrôleur" ou le bouton "déconnection" puis recommencer.

Valider choix controleur taekwon do new.jpg

  • Une fois le choix validé la liste déroulante des patterns s'affiche. Cliquer sur le pattern voulu. La liste des niveaux correspondant à ces patterns s'affiche.

Taekwondo selection pattern.jpg

  • Cliquer sur le niveau voulu

Taekwondo selection niveau.jpg

  • Cliquer sur le bouton "Validation". L'ensemble du pattern est alors transmis au contrôleur.

Taekwondo pattern transmis new.jpg

  • Cliquer sur le bouton en bas "Autre contrôleur" et recommencer la procédure avec le contrôleur suivant

Démonstrateur de faisabilité du contrôleur

Programme ESP32

Programme source pour ESP32 : Télécharger le programme source

Schémas de montage

Télécharger les schéma au format Fritzing

Pour démarrer la séquence il faut faire un appui long sur le bouton.

A chaque pas de séquence un bip est émis à la fin du temps alloué à ce pas. On effectue à ce moment là le contrôle de la rotation éventuelle et on vérifie que l'angle de la rotation effectuée correspond à celui du pas dans la limite des marges convenues (ici plus ou moins 15 degrés).

A la fin de la séquence un bip d'une autre tonalité signale la fin de la séquence et l'cran affiche le nombre d'erreurs de rotations non valides.

Si on veut interrompre la séquence en cours d'éxécution on refait un appui long sur le bouton.

Quand on effectue un double clic sur le bouton on appelle la fonction utilisée pour le contrôle des rotations qui affiche l'angle de départ, l'angle de fin, le sens de la rotation (droite ou gauche), et l'angle de la rotation. le sens de la rotation est celui des aiguilles d'une montre (positif à droite).

Taekwondo schema.jpg

Photo montage.jpg

Mise à jour du schéma avec intégration des moteurs vibreurs

Taekwondo-v1-vibreurs.jpg

Ecran d'accueil qui contient l'identifiant du contrôleur avec lequel il faut se connecter avec l'appli sur le téléphone

Ecran accueil Taekwondo controleur.jpg

Menu de commandes

Menu explicatif controleur taekwonDo.jpg

Pattern reçu sur le contrôleur suite à l'envoi par application du téléphone

Pattern envoyé controleur taekwondo.jpg

Ecran de contrôle de l'éxécution du pattern

Ecran contrôle éxécution pattern.jpg

Fin d'éxécution de la séquence avec le nombre d'erreurs affichées

Fin execution pattern erreurs controleur taekwondo.jpg

Test de rotations (acquisition du gyroscope du contrôleur)

Informations gyroscope controleur taekwondo.jpg

Principe de détection des rotations

Le diagramme affiche les valeurs brutes issues du gyroscope à savoir que les rotations sont mesurées dans le sens trigonométrique ce qui explique que les rotations à droites sont négatives et positives à gauche. (En se branchant en USB, on peut voir le diagrame en temps réer l'IDE d'Arduino en ajoutant quelques lignes de code).

Accellerations gyro axeZ.jpg

Durée de fabrication du prototype final

Journal de bord

14/02/2022

Bonne nouvelle : le module CMPS12 est très réactif et convient parfaitement pour la détection de mouvements ou de rotations Cliquer sur le PDF pour voir l'intégralité du document. Proposition ci-dessous.

Proposition ylc.pdf


  • Comment dissocier un mouvement parasite d'une rotation mal faite?
  • suggestion: avoir deux capteurs pour dissocier mvt parasite: quand rotation, les jambes bougent, donc si bougent pas c'est parasite donc on ne calcule pas la rotation (ce n'est donc pas une rotation mal faite)

17/02/2022

  • Comment dissocier un mouvement parasite d'une rotation mal faite?
  • suggestion Yann: avoir deux capteurs pour dissocier mvt parasite: quand rotation, les jambes bougent, donc si bougent pas c'est parasite donc on ne calcule pas la rotation (ce n'est donc pas une rotation mal faite)
  • Relecture du pdf
    • ajouter angle 270 et zéro pour mouvement sans rotation. Il y aura les angles suivants dans les patterns :0, 90, 180, 270 degrés
    • scénario d'usage :intégrer un timing pour chaque rotation

2 modes pour application

  • une sans timing. Apprentissage de l'espace
  • une avec timing pour entrainement à compétition de la personne pour une personne qui maitrise déjà l'espace.
Mode timing

Le découpage du temps peut être différent du découpage des rotations.

Entre deux rotations, il peut y avoir un découpage de temps ou pas. Et ce que chaque élément de mvt a une durée différente? Oui. Avoir en surimpression de rotation un métronome qui donne le rythme.

Soit quand le temps est écoulé, on fait un son pour dire que le temps est écoulé

Scénario d'usage
  1. Dans l'application du téléphone on importe un fichier csv qui contient tous les patterns.
  2. On choisit le pattern et à quel microcontrôleur (positionné sur le pratiquant) on l'envoie en bluetooth
  3. Le pratiquant non voyant déclenche le début de séquence avec un bouton relié au microcontrôleur


Fonctionnement du microcontroleur que le pratiquant malvoyant porte sur son nombril. Informations retours à l'usager

  • Bip (son) = timing
  • Vibration (retour haptique sur les épaules) = correction

Chaque bip précède un mouvement qui peut être une rotation ou pas.

La séquence de mouvement une fois envoyée se déroule continuellement. Si l'usager tourne alors qu'il devrait pas, il faut une indication. (Vérifier que les non rotations sont bien des non rotations.)

Limites de calcul

Tant que la rotation n'est pas figée , le calcul ne se lance pas (si je depasse ma rotation et revient en un seul mouvement, le dépassement bn'est pas prise en compte).

Tableau à remplir par usager final (enseignant) pour écrire les séquences

Priorité secondaire de développement

Idée du tableau à remplir par l'enseignant
Nom du pattern Niveau Mouvement Angle Angle accepté (seuil tolérance) Temps
Pattern 1 A 1 90 87-97 1
Pattern 1 A 2 0 -10-10 1
Pattern 2 B 1 90 87-97 1


A transformer en un fichier csv où chaque ligne est un pattern. On importe le fichier csv qui contient tous les patterns dans le téléphone où on a un menu pour choisir quel pattern on sélectionne.

Pour initialiser et terminer la séquence

Le téléphone (appli globale des patterns pour le coach) envoie en bluetooth la séquence au microcontroleur du pratiquant. Bouton sur microcontroleur qui se trouve sur l' utilisateur puis séquence (salut+respiration+séquence).

A la fin de la séquence, on signale que c'est terminé par 3 bips

En cas d'erreur ou abandon en cours de route

Eventuellement, il faudrait avoir un point de reprise quand abandon de séquence en cours de route (priorité secondaire). Si on a pas fini la séquence et qu'on rappuie sur le bouton cela la stoppe. Si on rappuie dessus on repart du début.


En cas de de plusieurs séquences les unes à la suite des autres. Il faudrait envoyer les séquences additionnés de manière dissociée. Quand l'usager clique une fois, le déroulement de la séquence s'arrête. S'il clique une fois, la séquence reprend (celle qui a été bandonné). Double clic on reprend l'ensemble des séquences depuis le début.

To DO
  • Réflexion de Sébastien et Yann, pour valider le format du pattern car il manque peut-être des informations pour corrections, notamment la direction