Sisukord:
- Tarvikud
- Samm: signaali hankimine
- 2. samm: lihtsustatud signaal
- 3. samm: signaali töötlemine
- 4. samm: skeemid
- 5. samm: EMG -andurite paigutamine
- 6. samm: kood
- Samm 7: Tulemused
Video: Robotkäsijuhtimine EMG -ga: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
See projekt näitab robotkäe juhtimist (kasutades avatud lähtekoodi inMoov) kolme avatud lähtekoodiga uECG -seadmega, mida kasutatakse lihaste aktiivsuse mõõtmiseks ja töötlemiseks (elektromüogramm, EMG). Meie meeskonnal on pikk lugu käte ja nende juhtimisega ning see on hea samm õiges suunas:)
Tarvikud
3x uECG seadmed 1x Arduino (ma kasutan Nano, kuid enamik teisi toimiks) 1x nRF24 moodul (iga üldine sobiks) 1x PCA9685 või sarnane servo draiver 1x inMoov käsi 5x suured servod (vt ühilduvate tüüpide kohta inMoovi juhiseid) 1x 5V toide 5A või rohkem voolu
Samm: signaali hankimine
Kontroll põhineb EMG -l - lihaste elektrilisel aktiivsusel. EMG -signaali saavad kolm uECG -seadet (ma tean, et see peaks olema EKG -monitor, kuid kuna see põhineb üldisel ADC -l, saab see mõõta mis tahes biosignaale, sealhulgas EMG -d). EMG töötlemiseks on uECG-l spetsiaalne režiim, milles see saadab välja 32-bin spektri andmed, ja "lihaste akna" keskmine (keskmine spektri intensiivsus vahemikus 75 kuni 440 Hz). Spektripildid näevad välja nagu sinakasrohelised mustrid, mis aja jooksul muutuvad. Siin on sagedus vertikaalteljel (igal 3 graafikul, madalsagedus all, kõrge ülaosas - 0 kuni 488 Hz, sammuga ~ 15 Hz), aeg on horisontaalsel kohal (vanad andmed vasakul üldiselt siin on ekraanil umbes 10 sekundit). Intensiivsus on kodeeritud värviga: sinine - madal, roheline - keskmine, kollane - kõrge, punane - veelgi suurem.
2. samm: lihtsustatud signaal
Usaldusväärse žestituvastuse jaoks on vaja nende spektripiltide nõuetekohast arvutitöötlust. Kuid robotkäe sõrmede lihtsaks aktiveerimiseks piisab, kui kasutada lihtsalt keskmist väärtust 3 kanalil - uECG pakub seda mugavalt teatud pakettbaitide kaupa, nii et Arduino visand saab seda sõeluda. Need väärtused tunduvad palju lihtsamad - olen lisanud Arduino jadaplaani toorväärtuste diagrammi. Punased, rohelised ja sinised graafikud on toorväärtused 3 uECG -seadmest erinevates lihasrühmades, kui pigistan vastavalt pöialt, sõrmust ja keskmist sõrme. Meie jaoks on need juhtumid selgelt erinevad, kuid me peame need väärtused kuidagi "sõrme skooriks" muutma, et programm saaks väärtusi käsiteenustele väljastada. Probleem on selles, et lihasrühmade signaalid on "segatud": esimesel ja kolmandal juhul on sinise signaali intensiivsus ligikaudu sama - kuid punane ja roheline on erinevad. Teisel ja kolmandal juhul on rohelised signaalid samad, kuid sinine ja punane on erinevad.
3. samm: signaali töötlemine
Nende signaalide "segamiseks" olen kasutanud suhteliselt lihtsat valemit:
S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kus S0 - kanali 0, V0, V1, V2 skoor - kanalite 0, 1, 2 ja a toorväärtused, b, c, d - koefitsiendid, mida ma käsitsi reguleerisin (a ja c olid vahemikus 0,3 kuni 2,0, b ja d olid 15 ja 20, peate need igal juhul oma konkreetse anduri paigutuse jaoks kohandama). Sama skoor arvutati kanalite 1 ja 2 jaoks. Pärast seda eraldusid graafikud peaaegu ideaalselt. Samade žestide (seekord sõrmusesõrme, keskmise ja seejärel pöidla) signaalid on selged ja neid saab hõlpsasti muuta servoliigutusteks, kui võrrelda lävega
4. samm: skeemid
Skeem on üsna lihtne, vajate ainult nRF24 moodulit, PCA9685 vms I2C PWM kontrollerit ja suure võimendusega 5 V toiteallikat, millest piisaks kõigi nende servode korraga liigutamiseks (seega vajab see stabiilseks tööks vähemalt 5A nimivõimsust).
Ühenduste loend: nRF24 pin 1 (GND) - Arduino GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Chip Enable) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino D8nRF24 pin 5 (SPI: SCino) - Arduino D13nRF24 tihvt 6 (SPI: MOSI) - Arduino D11nRF24 tihvt 7 (SPI: MISO) - Arduino D12PCA9685 SDA - Arduino A4PCA9685 SCL - Arduino A5PCA9685 Vcc - Arduino 5vPCA9685o Gmp võimendi PCA kanalid 0-4, minu märkuses pöial - kanal 0, nimetissõrm - kanal 1 jne.
5. samm: EMG -andurite paigutamine
Mõistlike näitude saamiseks on oluline paigutada lihaste aktiivsust salvestavad uECG -seadmed õigesse kohta. Kuigi siin on võimalik palju erinevaid valikuid, nõuab igaüks erinevat signaalitöötlusmeetodit - nii et minu koodi puhul on kõige parem kasutada minu fotodele sarnast paigutust. See võib olla intuitiivne, kuid pöidlalihaste signaal on paremini nähtav käe vastasküljel, nii et üks anduritest on paigutatud sinna ja kõik need on paigutatud küünarnuki lähedale (lihastel on suurem osa kehast selles piirkonnas, kuid soovite kontrollida, kus täpselt teie oma asub - individuaalne erinevus on üsna suur)
6. samm: kood
Enne põhiprogrammi käivitamist peate välja selgitama oma konkreetsete uECG -seadmete ühikute ID -d (seda tehakse rea 101 kommenteerimata jätmisel ja seadmete ükshaaval sisselülitamisel, näete muuhulgas ka praeguse seadme ID -d). massiiv unit_ids (rida 37). Peale selle soovite mängida valemikoefitsientidega (read 129-131) ja kontrollida, kuidas see seeriaplotteril välja näeb, enne kui selle robotkäe külge kinnitate.
Samm 7: Tulemused
Mõne katsega, mis kestis umbes 2 tundi, suutsin saada üsna usaldusväärse töö (video näitab tüüpilist juhtumit). See käitub mitte ideaalselt ja selle töötlemisega tunneb ära ainult avatud ja suletud sõrmed (ja isegi mitte igaüks viiest, tuvastab see ainult 3 lihasrühma: pöidla, indeksi ja keskosa koos, sõrmuse ja väikesed sõrmed koos). Kuid signaali analüüsiv "AI" võtab siin 3 rida koodi ja kasutab iga kanali jaoks ühte väärtust. Usun, et 32-bin spektraalkujutiste analüüsimisel arvutis või nutitelefonis saaks palju rohkem ära teha. Samuti kasutab see versioon ainult 3 uECG -seadet (EMG -kanalit). Rohkemate kanalite korral peaks olema võimalik ära tunda tõeliselt keerukaid mustreid - aga noh, see on projekti mõte, et pakkuda huvilistele mingit lähtepunkti:) Käsijuhtimine pole sellise süsteemi jaoks kindlasti ainus rakendus.
Soovitan:
EMG biotagasiside: 18 sammu (piltidega)
EMG biotagasiside: see biotagasiside seadistus kasutab EMG -andurit, mis kujutab lihaspingeid helisignaalide seeriana ja võimaldab teil treenida oma keha lihaspingeid oma äranägemise järgi reguleerima. Ühesõnaga, mida pingelisem olete, seda kiiremini piiksud muutuvad ja seda lõdvestunumad on
DIY emg-andur koos mikrokontrolleriga ja ilma: 6 sammu
DIY emg-andur koos mikrokontrolleriga ja ilma: Tere tulemast teadmiste jagamise juhiste platvormile. Selles juhendis arutlen, kuidas teha põhilisi emg-ahelaid ja sellega seotud matemaatilisi arvutusi. Selle vooluahela abil saate jälgida lihaste impulsside variatsioone, kontrollida
Inimese ja arvuti liides: Funktsioon Gripper (valmistatud Kirigami poolt) randmeliigutuse abil EMG abil: 7 sammu
Inimese ja arvuti liides: Funktsioon Gripper (valmistatud Kirigami poolt) randmeliigutuse abil EMG abil. Nii et see oli minu esimene katse inimese ja arvuti liideses. Ma püüdsin randme liikumise lihaste aktiveerimissignaale EMG anduri abil, töödeldi seda läbi pythoni ja arduino ning käivitas origamipõhise haaratsi
[EMG] Lihaste aktiveeritud lüliti: 3 sammu
[EMG] Lihaste aktiveeritud lüliti: see prototüüp näitab odava ja avatud lähtekoodiga riistvara/tarkvara potentsiaali, mis võimaldab arvuti juhtimist elektrilise lihastegevuse kaudu. Valmis seadmetega seotud kulud piiravad juurdepääsu sellele tehnoloogiale, mis kas saab
Kahe kanaliga EMG -andur: 6 sammu
Kahe kanaliga EMG-andur: Kahe kanaliga EMG-moodul sisaldab analoog-ahela ja digitaalse signaali filtreerimisprotsessi. Esiotsa vastuvõtmise ahel kogub inimese käe või jala lihaste elektrilisi signaale CH1 ja CH2 kaudu. Pärast signaali võimendamist