Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Reconnaissance des gestes à l'aide de l'accéléromètre et de l'ESP

Composants et fournitures

Arduino 101
Comprend un accéléromètre intégré, donc aucun composant ou circuit supplémentaire n'est requis.
× 1
Arduino UNO
Vous pouvez utiliser un Arduino Uno (ou un autre Arduino) au lieu de l'Arduino 101, mais vous besoin d'un accéléromètre, aussi.
× 1
Adafruit Analog Accéléromètre :ADXL335
Utilisez ceci (ou l'équivalent SparkFun) si vous utilisez un Arduino autre que l'Arduino 101 ( qui a un accéléromètre intégré).
× 1
Déploiement de l'accéléromètre à trois axes SparkFun - ADXL335
Utilisez ceci (ou l'équivalent Adafruit) si vous utilisez un Arduino autre que l'Arduino 101 ( qui a un accéléromètre intégré).
× 1

À propos de ce projet

Présentation

Ce didacticiel vous montre comment intégrer la reconnaissance des gestes de base dans vos projets Arduino à l'aide du système ESP. Par exemple, vous pouvez reconnaître différents gestes de tennis comme un coup droit, un revers et un service ; éléments d'une routine de danse; gestes d'haltérophilie; etc. Les gestes sont détectés à l'aide d'un accéléromètre et envoyés à l'application ESP s'exécutant sur votre ordinateur. ESP utilise un algorithme d'apprentissage automatique simple pour faire correspondre les données de l'accéléromètre en direct à des exemples enregistrés de différents gestes, renvoyant un message à l'Arduino lorsqu'il reconnaît un geste similaire à l'un des exemples. Le système ne reconnaît que les occurrences individuelles de gestes discrets ; il ne fournit pas d'informations sur la façon dont le geste est effectué. Néanmoins, il peut être utilisé pour un large éventail d'applications interactives.

Téléchargez l'application de reconnaissance des gestes ESP :

  • Mac :ESP-Gestures-Mac-2061028.zip
  • Windows :ESP-Gestures-Win-20161028.zip. Vous aurez peut-être également besoin du redistribuable Visual C++ (Mise à jour 3) de Microsoft.
  • Ubuntu :ESP-Gestures-Ubuntu-20161028.tar.gz
  • Exemples de gestes :ForehandBackhandServe.grt

Étape 1. Connectez votre accéléromètre.

Si vous utilisez l'Arduino 101, qui dispose d'un accéléromètre intégré, vous pouvez ignorer cette étape. Sinon, vous devrez connecter votre accéléromètre. Pour ce faire, soudez d'abord les broches de l'en-tête mâle sur la carte de dérivation, si vous ne l'avez pas déjà fait. Ensuite, vous connecterez l'accéléromètre à l'Arduino.

En guise de raccourci, vous pouvez brancher la sortie de l'accéléromètre directement sur les broches d'entrée analogique de l'Arduino Uno (ou d'un autre Arduino avec le même facteur de forme). Ensuite, dans le code Arduino, vous pouvez configurer les broches appropriées pour fournir l'alimentation et la terre à l'accéléromètre.

Alternativement, vous pouvez brancher votre accéléromètre sur une maquette et le câbler à l'Arduino, en connectant ses broches d'alimentation et de masse aux broches 5V et GND de l'Arduino, et ses broches des axes X, Y et Z à trois entrées analogiques de la carte Arduino.

Étape 2. Téléchargez le code Arduino.

Vous pouvez utiliser l'un des programmes Arduino ci-dessous pour lire les données de l'accéléromètre et les envoyer en série (USB) à l'ordinateur. Tout d'abord, vérifiez que les broches spécifiées dans le programme Arduino correspondent à la façon dont vous avez câblé votre accéléromètre (par exemple, que xpin correspond à la broche d'entrée analogique connectée à la broche de l'axe X de votre accéléromètre). (Cela ne s'applique pas si vous utilisez l'Arduino 101, où l'accéléromètre est connecté en interne.) Sélectionnez ensuite la carte et le port série appropriés dans le menu des outils Arduino et téléchargez le croquis Arduino.

Étape 3. Vérifiez les données dans le moniteur série.

Ouvrez le moniteur série Arduino, réglez-le sur 9600 bauds et vérifiez que vous obtenez les données de l'accéléromètre de votre Arduino. Vous devriez voir trois colonnes de chiffres qui changent lorsque vous déplacez l'accéléromètre. Utilisez le traceur série Arduino pour voir un graphique de ces nombres.

Assurez-vous de fermer le moniteur série et le traceur série avant de continuer, sinon ils empêcheront l'application ESP de parler à votre Arduino.

Étape 4. Exécutez l'application de reconnaissance de gestes ESP et sélectionnez votre port série.

Téléchargez l'application de reconnaissance des gestes ESP :

  • Mac :ESP-Gestures-Mac-20160812.zip
  • Windows :ESP-Gestures-Win-20160812.zip

Sélectionnez le port série correspondant à votre carte Arduino dans le menu de configuration. (Cliquez sur l'en-tête "Sélectionner un port série" pour ouvrir la liste des ports.) 

Vous devriez voir des données en direct en streaming sur le tracé « Données brutes ». Les trois lignes du tracé correspondent aux trois axes de votre accéléromètre :la ligne rouge correspond à l'axe X, la verte à l'axe Y et la bleue à l'axe Z.

Étape 5. Enregistrez les échantillons d'étalonnage.

Pour permettre à l'application ESP de comprendre quelle plage de valeurs attendre de votre accéléromètre et Arduino, vous devrez enregistrer un échantillon d'étalonnage. Placez votre accéléromètre sur une surface plane, avec l'axe Z vers le haut. Appuyez sur la touche « 1 » et maintenez-la enfoncée pendant environ une seconde pour enregistrer l'échantillon d'étalonnage « Upright ». Vous devriez voir un tracé de l'échantillon apparaître. Ensuite, retournez votre accéléromètre et, en le gardant à plat et immobile, maintenez la touche "2" enfoncée pour enregistrer l'échantillon d'étalonnage à l'envers. Le système ESP utilise ces données pour déterminer quelles valeurs numériques correspondent à 0g d'accélération (sur les axes X et Y) et lesquelles correspondent à 1g d'accélération (sur l'axe Z).

Étape 6. Enregistrez des exemples de gestes.

Accédez à l'onglet "Formation" de l'application ESP en cliquant dessus ou en tapant un "T" majuscule. Cet onglet vous permet d'enregistrer ou de charger des exemples de gestes que vous souhaitez que le système ESP reconnaisse. Vous pouvez enregistrer des exemples de jusqu'à neuf gestes différents.

Pour enregistrer un exemple de geste, effectuez le geste en appuyant sur la touche correspondant au libellé que vous souhaitez associer au geste. Par exemple, pour enregistrer un geste avec le libellé 1, maintenez la touche "1" de votre clavier enfoncée pendant que vous effectuez le geste. (Vous pouvez également charger les exemples de gestes de tennis dans ForehandBackhandServe.grt.)

Assurez-vous d'enregistrer les exemples de gestes avec l'accéléromètre dans la même configuration qu'il le sera plus tard, lorsque vous souhaitez que le système reconnaisse les gestes. Par exemple, vous pouvez tenir l'accéléromètre dans votre main avec une orientation particulière, ou l'attacher à un objet que vous tiendrez avec une orientation particulière.

Un bon échantillon contient les données correspondant à l'ensemble du geste, mais sans beaucoup de données de base supplémentaires au début ou à la fin. C'est-à-dire que l'échantillon doit commencer et se terminer par une courte période de lignes relativement plates, ni trop longues ni complètement manquantes. De plus, si votre geste se termine à un endroit différent de celui où il commence, assurez-vous de pas pour enregistrer l'heure à laquelle vous ramenez l'accéléromètre à la position de départ. Par exemple, si vous enregistriez un geste de balayage vers la droite, vous voudriez enregistrer uniquement la partie du geste lorsque votre main se déplace de gauche à droite, pas le moment où votre main revient à sa position initiale.

Chaque exemple supplémentaire que vous enregistrez est un autre exemple auquel l'algorithme d'apprentissage automatique peut comparer lorsqu'il reconnaît des gestes. Cela signifie que si vous voulez que le système reconnaisse différentes variations d'un geste (par exemple, les différentes manières dont il est fait par différentes personnes), il peut être utile d'enregistrer des échantillons de chaque variation. D'un autre côté, si vous avez de mauvais échantillons, ils peuvent perturber le système; plus d'échantillons n'est pas nécessairement mieux. En général, nous avons eu de la chance d'enregistrer environ 5 à 10 échantillons pour chaque geste, bien que, encore une fois, la qualité des échantillons individuels soit plus importante que leur quantité.

Si vous n'aimez pas un échantillon (par exemple parce que vous avez appuyé sur la touche au mauvais moment et que vous avez manqué les données correspondant à une partie du geste), vous pouvez le supprimer en cliquant dans la case à côté du mot « supprimer » sous l'échantillon . Vous pouvez rogner un échantillon en cliquant et en faisant glisser sur le tracé de l'échantillon pour sélectionner la partie de l'échantillon que vous souhaitez conserver, puis en cliquant sur la case intitulée « rogner ». Vous pouvez naviguer entre les différents échantillons d'une classe en cliquant sur les icônes fléchées sous le tracé de l'échantillon. Si vous avez enregistré un sample dans la mauvaise classe, vous pouvez le déplacer en cliquant sur le bouton "re-label" puis en appuyant sur la touche correspondant au label auquel vous souhaitez affecter le sample. Pour nommer un geste, cliquez sur le bouton "renommer", saisissez le nom et appuyez sur Entrée.

Étape 7. Entraînez le système à reconnaître les gestes.

Une fois que vous avez enregistré quelques exemples de gestes, vous pouvez entraîner le système ESP à reconnaître ces gestes à partir de vos exemples. Appuyez sur la touche « t » de votre clavier pour entraîner le système. Vous devriez voir le message "formation réussie" apparaître en bas de la fenêtre. Maintenant, lorsque vous effectuez un geste similaire à l'un de vos exemples enregistrés, vous devriez voir son nom apparaître sur le tracé des données du capteur en direct.

Le système peut ne pas bien fonctionner la première fois que vous l'entraînez. Il est utile de former et de tester le système souvent pendant que vous enregistrez vos exemples de gestes, afin que vous puissiez avoir une idée de son comportement.

En particulier, si le système ne reconnaît pas les gestes que vous pensez devoir, vous pouvez vouloir enregistrer des exemples supplémentaires de ce geste. Si le système reconnaît des gestes alors qu'il ne le devrait pas, vous souhaiterez peut-être supprimer ou rogner les exemples qui semblent différents des autres, ou qui contiennent de longues périodes de lignes relativement plates. Assurez-vous d'appuyer sur " t " après avoir modifié vos exemples pour recycler le système.

Étape 8. Réglez la configuration du système selon vos besoins.

Bien que la modification de vos exemples de formation soit probablement le moyen le plus important d'aider le système à fonctionner correctement, ESP vous permet également de configurer certains paramètres système sous-jacents. Pour cela, cliquez sur le libellé « Cliquez pour ouvrir la configuration ». Vous devriez voir deux paramètres :la variabilité et le délai d'attente. Notez qu'après avoir modifié ces paramètres, vous devez réentraîner le système en appuyant sur "t".

Le paramètre de variabilité contrôle à quel point un geste peut être différent de l'un des exemples enregistrés et toujours être reconnu. Plus le nombre est élevé, plus il peut être différent. Si le système semble exiger que vos gestes soient trop similaires à vos exemples enregistrés, vous pouvez essayer d'augmenter ce nombre. (Vous pouvez également essayer d'enregistrer des exemples supplémentaires.) Si le système reconnaît des gestes parasites, vous pouvez essayer de réduire ce nombre, bien que vous puissiez également essayer de supprimer tous les exemples d'entraînement qui semblent mauvais.

Le paramètre timeout contrôle combien de temps après la reconnaissance d'un geste le système attend avant d'en reconnaître un nouveau. Il est mesuré en millisecondes (millièmes de seconde). Si le système semble manquer des gestes effectués en succession rapprochée d'un autre geste, essayez de réduire ce nombre. Attention cependant, car si vous faites ce nombre trop bas, le système peut reconnaître un même geste plusieurs fois. Si le système semble reconnaître plusieurs gestes lorsque vous n'effectuez qu'un seul geste (par exemple, s'il voit un coup droit suivi d'un revers lorsque vous n'avez fait qu'un coup droit), vous pouvez essayer d'augmenter ce paramètre.

Étape 9. Incorporez la reconnaissance des gestes dans votre projet Arduino.

Lorsque le système ESP fait une prédiction, il envoie un message à votre Arduino avec le numéro du geste qu'il a reconnu (sous forme de texte ASCII suivi d'une nouvelle ligne, par exemple "1\n"). En lisant ces prédictions sur le port série, vous pouvez faire en sorte que votre Arduino réponde au geste de différentes manières.

Les prédictions sont également envoyées via TCP à un serveur fonctionnant sur le port localhost 5204 (au même format que pour l'Arduino). Par exemple, il peut s'agir d'un jeu écrit en Processing ou dans un autre logiciel. Assurez-vous que le serveur TCP est en cours d'exécution avant de démarrer l'application ESP.

Comment ça marche

Cette application ESP particulière utilise un algorithme appelé Dynamic Time Warping (ou DTW). Cet algorithme déforme le signal du capteur en direct en éliminant ou en dupliquant les lectures individuelles, en générant un éventail de variations et en vérifiant leur similitude avec les échantillons enregistrés. L'algorithme recherche l'échantillon d'apprentissage le plus proche des données du capteur en direct. Si la différence entre les deux est inférieure à un certain seuil, il la considère comme une correspondance et génère une prédiction correspondant à la classe d'apprentissage contenant cet échantillon. Vous pouvez régler la distance requise à l'aide du paramètre « variabilité » dans le menu déroulant de configuration.

La reconnaissance des gestes n'est qu'un domaine auquel le système ESP peut être appliqué. ESP est construit sur le Gesture Recognition Toolkit (GRT), qui, malgré son nom, contient en fait un large éventail d'algorithmes d'apprentissage automatique qui peuvent être appliqués à un large éventail d'applications de détection en temps réel. ESP prend le code d'une application particulière et le traduit en une interface utilisateur personnalisée pour travailler avec ce pipeline d'apprentissage automatique. Ces programmes spécifiques à l'application incluent un pipeline d'apprentissage automatique GRT, la spécification des entrées de capteur, la définition du processus d'étalonnage et les spécifications des paramètres réglables. Nous avons créé des exemples ESP pour la détection des couleurs, la détection des poses à l'aide d'accéléromètres et la reconnaissance audio simple. Voir ESP GitHub pour plus d'informations.

Code

Code Arduino ADXL335
Ce code se lit à partir d'un ADXL335 connecté à un Arduino :la broche de l'axe X de l'accéléromètre doit être connectée à la broche A5 de l'Arduino, l'axe Y à A4 et l'axe Z à A3. Les lectures sont envoyées via le port série (USB) à 9600 bauds, sous forme de données ASCII séparées par des tabulations et terminées par une nouvelle ligne.
Code de l'accéléromètre Arduino 101
Lit les données de l'accéléromètre à partir de l'accéléromètre intégré sur un Arduino 101. Les lectures sont envoyées via le port série (USB) à 9600 en tant que données ASCII séparées par des tabulations et terminées par une nouvelle ligne.

Processus de fabrication

  1. Système de présence utilisant Arduino et RFID avec Python
  2. Télécommande universelle utilisant Arduino, 1Sheeld et Android
  3. Voltmètre DIY utilisant Arduino et Smartphone
  4. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  5. Mesure de la fréquence et du cycle de service à l'aide d'Arduino
  6. Contrôler Arduino Rover à l'aide de Firmata et de la manette Xbox One
  7. Sonar utilisant arduino et affichage lors du traitement de l'IDE
  8. Contrôle de la luminosité des LED à l'aide de Bolt et Arduino
  9. Comment faire une boussole en utilisant Arduino et Processing IDE