Table des matières:
- Fournitures
- Étape 1: Acquisition de signaux
- Étape 2: Signal simplifié
- Étape 3: Traitement du signal
- Étape 4: Schémas
- Étape 5: Placement des capteurs EMG
- Étape 6: Coder
- Étape 7: Résultats
Vidéo: Commande manuelle robotisée avec EMG : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Ce projet montre le contrôle de la main robotique (en utilisant la main open source inMoov) avec 3 appareils uECG open source utilisés pour mesurer et traiter l'activité musculaire (électromyogramme, EMG). Notre équipe a une longue histoire avec les mains et leur contrôle, et c'est un bon pas dans la bonne direction:)
Fournitures
3x appareils uECG1x Arduino (j'utilise Nano mais la plupart des autres fonctionneraient)1x module nRF24 (n'importe quel générique ferait l'affaire)1x PCA9685 ou servodriver similaire1x inMoov hand5x gros servos (voir les instructions inMoov pour les types compatibles)1x alimentation 5V capable de 5A ou plus courant
Étape 1: Acquisition de signaux
Le contrôle est basé sur l'EMG - activité électrique des muscles. Le signal EMG est obtenu par trois appareils uECG (je sais, c'est censé être un moniteur ECG, mais comme il est basé sur un ADC générique, il peut mesurer tous les biosignaux - y compris l'EMG). Pour le traitement EMG, uECG dispose d'un mode spécial dans lequel il envoie des données spectrales à 32 bits et une moyenne de "fenêtre musculaire" (intensité spectrale moyenne entre 75 et 440 Hz). Les images du spectre ressemblent à des motifs bleu-vert qui changent avec le temps. Ici la fréquence est sur un axe vertical (sur chacun des 3 tracés, basse fréquence en bas, haute en haut - de 0 à 488 Hz avec des pas de ~ 15 Hz), le temps est sur une horizontale (anciennes données sur la gauche globalement ici est d'environ 10 secondes à l'écran). L'intensité est codée avec la couleur: bleu - faible, vert - moyen, jaune - élevé, rouge - encore plus élevé.
Étape 2: Signal simplifié
Pour une reconnaissance gestuelle fiable, un traitement PC approprié de ces images spectrales est requis. Mais pour une activation simple des doigts de la main robotique, il suffit d'utiliser la valeur moyenne sur 3 canaux - uECG la fournit commodément à certains octets de paquet afin que Arduino Sketch puisse l'analyser. Ces valeurs semblent beaucoup plus simples - j'ai joint un tableau des valeurs brutes du Serial Plotter d'Arduino. Les graphiques rouges, verts et bleus sont des valeurs brutes de 3 appareils uECG sur différents groupes musculaires lorsque je serre le pouce, l'annulaire et le majeur en conséquence. Pour notre œil, ces cas sont clairement différents, mais nous devons transformer ces valeurs en "score de doigt" d'une manière ou d'une autre afin qu'un programme puisse envoyer des valeurs aux servos manuels. Le problème est que les signaux des groupes musculaires sont « mélangés »: dans les 1er et 3e cas, l'intensité du signal bleu est à peu près la même - mais le rouge et le vert sont différents. Dans les 2e et 3e cas, les signaux verts sont les mêmes - mais le bleu et le rouge sont différents.
Étape 3: Traitement du signal
Afin de "démixer" ces signaux, j'ai utilisé une formule relativement simple:
S0=V0^2 / ((V1 *a0 +b0)(V2 * c0+d0)), où S0 - score pour le canal 0, V0, V1, V2 - valeurs brutes pour les canaux 0, 1, 2 et a, b, c, d - coefficients que j'ai ajustés manuellement (a et c étaient de 0,3 à 2,0, b et d étaient de 15 et 20, vous devrez de toute façon les modifier pour ajuster le placement de votre capteur particulier). Le même score a été calculé pour les canaux 1 et 2. Après cela, les graphiques sont devenus presque parfaitement séparés. Pour les mêmes gestes (cette fois l'annulaire, le majeur, puis le pouce) les signaux sont clairs et peuvent être facilement traduits en mouvements d'asservissement simplement en comparant avec le seuil
Étape 4: Schémas
Le schéma est assez simple, vous n'avez besoin que d'un module nRF24, d'un PCA9685 ou d'un contrôleur I2C PWM similaire et d'une alimentation 5V à ampli élevé qui suffirait à déplacer tous ces servos à la fois (il nécessite donc au moins une puissance nominale de 5A pour un fonctionnement stable).
Liste des connexions: broche 1 nRF24 (GND) - broche 2 GNDnRF24 d'Arduino (Vcc) - broche 3 3.3vnRF24 d'Arduino (Chip Enable) - broche 4 D9nRF24 d'Arduino (SPI:CS) - broche 5 D8nRF24 d'Arduino (SPI:SCK) - d'Arduino D13nRF24 broche 6 (SPI:MOSI) - D11nRF24 broche 7 d'Arduino (SPI:MISO) - D12PCA9685 SDA d'Arduino - A4PCA9685 SCL d'Arduino - A5PCA9685 Vcc d'Arduino - 5vPCA9685 GND d'Arduino haut - Servomoteur d'Arduino96+GN85 - GN85 élevé d'Arduino PCA canaux 0-4, dans ma notation pouce - canal 0, index - canal 1 etc.
Étape 5: Placement des capteurs EMG
Afin d'obtenir des lectures raisonnables, il est important de placer les appareils uECG, qui enregistrent l'activité musculaire, aux bons endroits. Bien que de nombreuses options différentes soient possibles ici, chacune nécessite une approche de traitement du signal différente - donc avec mon code, il est préférable d'utiliser un placement similaire à mes photos. Cela peut être contre-intuitif, mais le signal musculaire du pouce est mieux visible du côté opposé du bras, donc l'un des capteurs est placé là, et tous sont placés près du coude (les muscles ont la majeure partie de leur corps dans cette zone, mais vous voulez vérifier où se trouvent exactement les vôtres - il y a une assez grande différence individuelle)
Étape 6: Coder
Avant d'exécuter le programme principal, vous devrez trouver les ID d'unité de vos appareils uECG particuliers (cela se fait en décommentant la ligne 101 et en allumant les appareils un par un, vous verrez l'ID de l'appareil actuel entre autres) et les remplir dans tableau unit_ids (ligne 37). En dehors de cela, vous voulez jouer avec les coefficients de formule (lignes 129-131) et vérifier à quoi cela ressemble sur le traceur série avant de l'attacher à la main robotique.
Étape 7: Résultats
Avec quelques expériences qui ont duré environ 2 heures, j'ai pu obtenir un fonctionnement assez fiable (la vidéo montre un cas typique). Il ne se comporte pas parfaitement et avec ce traitement ne peut reconnaître que les doigts ouverts et fermés (et même pas chacun des 5, il ne détecte que 3 groupes musculaires: pouce, index et majeur ensemble, annulaire et auriculaire ensemble). Mais "AI" qui analyse le signal prend ici 3 lignes de code et utilise une seule valeur de chaque canal. Je pense que beaucoup plus pourrait être fait en analysant des images spectrales de 32 bins sur un PC ou un smartphone. De plus, cette version n'utilise que 3 appareils uECG (canaux EMG). Avec plus de canaux, il devrait être possible de reconnaître des modèles vraiment complexes - mais bon, c'est le but du projet, de fournir un point de départ à toute personne intéressée:) La commande manuelle n'est certainement pas la seule application pour un tel système.
Conseillé:
Jouer avec l'horloge murale manuelle : 14 étapes
Jouer avec l'horloge murale à main : Les horloges murales électroniques (marquage commercial à quartz) n'ont aujourd'hui rien de spécial. Il peut être acheté dans de nombreux magasins. Dans certains d'entre eux, ils sont extrêmement bon marché; avec un prix d'environ 2 € (50CZK). Ce prix bas peut être une motivation pour regarder de plus près le
Tape m'en cinq! - une main robotisée : 5 étapes
Tape m'en cinq! - une main robotique : un jour, dans notre cours de principes d'ingénierie, nous avons entrepris de construire des machines composées à partir de pièces VEX. Lorsque nous avons commencé à construire les mécanismes, nous avons eu du mal à gérer plusieurs composants complexes qui devaient être assemblés. Si seulement quelqu'un
Voiture robotisée Low Rider : 12 étapes (avec photos)
Voiture Robot Low Rider : ce Instructable vous montrera comment construire une voiture robot low rider construite à partir d'une variété d'articles plats minces peu coûteux et du kit NC Robot STEAMbot à faible coût. Une fois construite, la voiture robot peut être contrôlée à distance via une application mobile gratuite. Vous serez également
Voiture robotisée contrôlée par Bluetooth : 13 étapes (avec photos)
Voiture robotisée contrôlée par Bluetooth : avez-vous toujours été fasciné par les voitures télécommandées ? Vous avez toujours voulu en fabriquer un vous-même ? contrôlé par votre propre smartphone ? ----> Commençons donc, hé les gars, ici, dans ce projet, j'ai essayé de créer une voiture contrôlée par Bluetooth avec l'aide d'Arduino. J'ai inc
Robot Arduino à commande vocale + caméra Wifi + pince + application et utilisation manuelle et mode d'évitement d'obstacles (KureBas Ver 2.0): 4 étapes
Robot Arduino à commande vocale + caméra Wifi + pince + application et utilisation manuelle et mode d'évitement d'obstacles (KureBas Ver 2.0): KUREBAS V2.0 est de retour Il est très impressionnant avec de nouvelles fonctionnalités. Il a une pince, une caméra Wifi et une nouvelle application qui a produit pour lui