Cuprins:
- Provizii
- Pasul 1: Achiziționarea semnalului
- Pasul 2: Semnal simplificat
- Pasul 3: Procesarea semnalului
- Pasul 4: Scheme
- Pasul 5: Amplasarea senzorilor EMG
- Pasul 6: Cod
- Pasul 7: Rezultate
Video: Control manual al mâinii cu EMG: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Acest proiect arată controlul mâinii robotizate (folosind mâna opensource inMoov) cu 3 dispozitive open source uECG utilizate pentru măsurarea și prelucrarea activității musculare (electromiogramă, EMG). Echipa noastră are o poveste lungă cu mâinile și controlul lor, iar acesta este un pas bun într-o direcție bună:)
Provizii
3x dispozitive uECG 1x Arduino (folosesc Nano, dar majoritatea altora ar funcționa) 1x modul nRF24 (orice generic ar funcționa) 1x PCA9685 sau servodirector similar 1x mână inMoov 5x servo mari (consultați instrucțiunile inMoov pentru tipuri compatibile) 1x sursă de alimentare 5V capabilă să 5A sau mai mult curent
Pasul 1: Achiziționarea semnalului
Controlul se bazează pe EMG - activitatea electrică a mușchilor. Semnalul EMG este obținut de trei dispozitive uECG (știu, se presupune că este un monitor ECG, dar din moment ce se bazează pe un ADC generic, poate măsura orice biosemnal - inclusiv EMG). Pentru procesarea EMG, uECG are un mod special în care trimite date despre spectrul de 32 de coșuri și media „ferestrei musculare” (intensitate spectrală medie între 75 și 440 Hz). Imaginile din spectru arată ca niște modele albastru-verzi care se schimbă în timp. Aici frecvența este pe o axă verticală (pe fiecare din cele 3 grafice, frecvență joasă în partea de jos, mare în partea de sus - de la 0 la 488 Hz cu trepte de ~ 15 Hz), timpul este pe o orizontală (datele vechi din stânga general aici este de aproximativ 10 secunde pe ecran). Intensitatea este codificată cu culoare: albastru - scăzut, verde - mediu, galben - înalt, roșu - chiar mai mare.
Pasul 2: Semnal simplificat
Pentru o recunoaștere fiabilă a gesturilor, este necesară o procesare adecvată pe computer a acestor imagini spectrale. Dar pentru o simplă activare a degetelor de mână robotizate, este suficient să folosiți doar valoarea medie pe 3 canale - uECG o oferă în mod convenabil la anumite octeți de pachete, astfel încât schița Arduino să o poată analiza. Aceste valori arată mult mai simplu - am atașat o diagramă a valorilor brute de la Arduino's Serial Plotter. Diagramele roșu, verde, albastru sunt valori brute de la 3 dispozitive uECG pe diferite grupe de mușchi atunci când strâng degetele mari, inelare și mijlocii în mod corespunzător. Pentru ochiul nostru, aceste cazuri sunt în mod clar diferite, dar trebuie să transformăm acele valori în „scor de deget” într-un fel, astfel încât un program să poată transmite valori către servomâinile manuale. Problema este că semnalele din grupele musculare sunt „amestecate”: în primul și al treilea caz intensitatea semnalului albastru este aproximativ aceeași - dar roșu și verde sunt diferite. În al doilea și al treilea caz, semnalele verzi sunt aceleași - dar albastru și roșu sunt diferite.
Pasul 3: Procesarea semnalului
Pentru a „dezamixa” aceste semnale, am folosit o formulă relativ simplă:
S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), unde S0 - scor pentru canalul 0, V0, V1, V2 - valori brute pentru canalele 0, 1, 2 și a, b, c, d - coeficienți pe care i-am ajustat manual (a și c au fost de la 0,3 la 2,0, b și d au fost 15 și 20, ar trebui să le schimbați oricum pentru a le ajusta pentru plasarea senzorului particular). Același scor a fost calculat pentru canalele 1 și 2. După aceasta, graficele au devenit aproape perfect separate. Pentru aceleași gesturi (de data aceasta degetul inelar, mijlocul și apoi degetul mare) semnalele sunt clare și pot fi ușor traduse în mișcări servo doar prin compararea cu pragul
Pasul 4: Scheme
Schema este destul de simplă, aveți nevoie doar de modul nRF24, PCA9685 sau un controler I2C PWM similar și o sursă de alimentare cu amplificator mare de 5V, care ar fi suficientă pentru a muta toate aceste servouri simultan (deci necesită o putere nominală de cel puțin 5A pentru o funcționare stabilă).
Lista conexiunilor: pinul 1 nRF24 (GND) - Pinul 2 GNDnRF24 al Arduino (Vcc) - Pinul 3 Arduino 3vnRF24 3 (Chip Enable) - Pinul Arduino D9nRF24 4 (SPI: CS) - Pinul D8nRF24 Arduino 5 (SPI: SCK) - Arduino's D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GND - Arduino's GND - Arduino's - Canalele PCA 0-4, în notația mea degetul mare - canalul 0, degetul arătător - canalul 1 etc.
Pasul 5: Amplasarea senzorilor EMG
Pentru a obține citiri rezonabile, este important să plasați dispozitivele uECG, care înregistrează activitatea musculară, în locuri potrivite. Deși aici sunt posibile multe opțiuni diferite, fiecare necesită o abordare diferită de procesare a semnalului - așa că, cu codul meu, este mai bine să folosiți plasarea similară cu fotografiile mele. Poate fi contra-intuitivă, dar semnalul muscular al degetului mare este mai bine vizibil pe partea opusă a brațului, așa că unul dintre senzori este așezat acolo și toți sunt așezați aproape de cot (mușchii au cea mai mare parte a corpului în acea zonă, dar doriți să verificați unde se află exact al vostru - există o diferență individuală destul de mare)
Pasul 6: Cod
Înainte de a rula programul principal, va trebui să aflați ID-urile unităților dispozitivelor dvs. uECG (se face decomentând linia 101 și pornind dispozitivele unul câte unul, veți vedea ID-ul dispozitivului curent printre altele) și le completați în matrice unit_ids (linia 37). În afară de aceasta, doriți să vă jucați cu coeficienții de formulă (liniile 129-131) și să verificați cum arată pe plotterul serial înainte de a-l atașa la mâna robotică.
Pasul 7: Rezultate
Cu câteva experimente care au durat aproximativ 2 ore, am reușit să obțin o operare destul de fiabilă (videoclipul arată un caz tipic). Nu se comportă perfect și cu această procesare poate recunoaște doar degetele deschise și închise (și nici măcar fiecare dintre cele 5, detectează doar 3 grupe musculare: degetul mare, indexul și mijlocul împreună, inelul și degetele mici împreună). Dar „AI” care analizează semnalul ia aici 3 linii de cod și folosește o singură valoare din fiecare canal. Cred că s-ar putea face mult mai mult prin analiza imaginilor spectrale 32-bin pe PC sau smartphone. De asemenea, această versiune folosește doar 3 dispozitive uECG (canale EMG). Cu mai multe canale ar trebui să fie posibil să recunoaștem modele cu adevărat complexe - dar bine, acesta este scopul proiectului, de a oferi un punct de plecare pentru oricine este interesat:) Controlul manual nu este cu siguranță singura aplicație pentru un astfel de sistem.
Recomandat:
DC MOTOR Controlul gestului mâinii Viteză și direcție folosind Arduino: 8 pași
DC MOTOR Controlul gesturilor de mână Viteză și direcție folosind Arduino: În acest tutorial vom învăța cum să controlăm un motor de curent continuu cu gesturi de mână folosind arduino și Visuino. Urmăriți videoclipul! De asemenea, verificați:
Interfață om-computer: Funcționează un dispozitiv de prindere (realizat de Kirigami) prin mișcarea încheieturii mâinii folosind EMG .: 7 pași
Interfață om-computer: Funcționează un dispozitiv de prindere (realizat de Kirigami) prin mișcarea încheieturii mâinii folosind EMG .: Așadar, aceasta a fost prima mea încercare la o interfață om-computer. prin python și arduino și a acționat un gripper pe bază de origami
Legea lui Lenz și regula mâinii drepte: 8 pași (cu imagini)
Legea lui Lenz și regula mâinii drepte: Lumea modernă nu ar exista astăzi fără electro-magneți; aproape tot ceea ce folosim astăzi rulează pe electro-magneți într-un fel sau altul. Memoria hard diskului din computer, difuzorul din radio, dispozitivul de pornire din mașină, toate folosesc electromag
Mașină RC controlată cu gestul mâinii: 15 pași
Mașină RC controlată cu gestul mâinii: Bună ziua, lume! Acesta este primul meu instructabil Dacă aveți întrebări - vă rugăm să nu ezitați să întrebați. Public țintă: acest proiect este aplicabil oricărei persoane care are o pasiune în ceea ce privește tehnologia. Fie că sunteți un expert sau un începător absolut
Îmbunătățirea mâinii 3: 6 pași
Îmbunătățirea mâinii a 3-a: m-am săturat de mâna mea veche a 3-a care mi-a zgârlit plăcile și că avea doar 2 cleme de crocodil. Am mers apoi la egalul „magazinului de dolari” și am cumpărat 2 mâini 3. Acesta este rezultatul final o mână foarte frumoasă a 3-a