Turinys:
- Prekės
- 1 žingsnis: signalo gavimas
- 2 žingsnis: supaprastintas signalas
- 3 žingsnis: Signalo apdorojimas
- 4 žingsnis: schemos
- 5 žingsnis: EMG jutiklių išdėstymas
- 6 žingsnis: kodas
- 7 žingsnis: Rezultatai
Video: Robotų valdymas rankomis su EMG: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Šis projektas parodo robotų rankos valdymą (naudojant atviro šaltinio ranką inMoov) su 3 atviro šaltinio uECG prietaisais, naudojamais raumenų aktyvumui matuoti ir apdoroti (elektromiograma, EMG). Mūsų komanda turi ilgą istoriją su rankomis ir jų valdymu, ir tai yra geras žingsnis teisinga linkme:)
Prekės
3x uECG įrenginiai 1x „Arduino“(naudoju „Nano“, bet veiktų dauguma kitų) 1x „nRF24“modulis (tinka bet kuris bendras) 1x PCA9685 arba panašus servo tvarkyklė 1x „inMoov“ranka 5x dideli servo įrenginiai (suderinamų tipų instrukcijas žr. „InMoov“instrukcijose) 1x 5 V maitinimo šaltinis 5A ar daugiau srovės
1 žingsnis: signalo gavimas
Kontrolė pagrįsta EMG - elektrine raumenų veikla. EMG signalą gauna trys uECG įrenginiai (žinau, kad tai turėtų būti EKG monitorius, bet kadangi jis yra pagrįstas bendru ADC, jis gali išmatuoti bet kokius biosignalus, įskaitant EMG). EMG apdorojimui uECG turi specialų režimą, kuriame siunčia 32 dėžių spektro duomenis ir „raumenų lango“vidurkį (vidutinis spektrinis intensyvumas yra nuo 75 iki 440 Hz). Spektro vaizdai atrodo kaip melsvai žali modeliai, kurie laikui bėgant keičiasi. Čia dažnis yra vertikalioje ašyje (kiekviename iš 3 sklypų, žemas dažnis apačioje, aukštas viršuje - nuo 0 iki 488 Hz su ~ 15 Hz žingsniais), laikas yra horizontalioje padėtyje (seni duomenys kairėje apskritai čia ekrane yra apie 10 sekundžių). Intensyvumas užkoduotas spalva: mėlyna - žema, žalia - vidutinė, geltona - didelė, raudona - dar didesnė.
2 žingsnis: supaprastintas signalas
Norint patikimai atpažinti gestus, reikalingas tinkamas šių spektrinių vaizdų apdorojimas kompiuteriu. Tačiau norint paprasčiausiai suaktyvinti robotų rankų pirštus, pakanka tik naudoti vidutinę vertę 3 kanaluose - uECG patogiai pateikia ją tam tikrais paketų baitais, kad „Arduino“eskizas galėtų jį išanalizuoti. Šios vertės atrodo daug paprastesnės - pridedu neapdorotų verčių diagramą iš „Arduino“serijos braižytuvo. Raudona, žalia, mėlyna diagramos yra neapdorotos vertės iš 3 uECG prietaisų skirtingose raumenų grupėse, kai atitinkamai spaudžiu nykštį, žiedą ir vidurinius pirštus. Mūsų akimis šie atvejai akivaizdžiai skiriasi, tačiau turime šias vertes kažkaip paversti „pirštų balais“, kad programa galėtų išvesti vertes į rankinius servus. Problema ta, kad raumenų grupių signalai yra „sumaišyti“: 1 ir 3 atvejais mėlyno signalo intensyvumas yra maždaug vienodas, tačiau raudona ir žalia skiriasi. Antruoju ir trečiuoju atvejais žali signalai yra vienodi, tačiau mėlyni ir raudoni skiriasi.
3 žingsnis: Signalo apdorojimas
Norėdami „sumaišyti“šiuos signalus, naudojau gana paprastą formulę:
S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kur S0 - 0 kanalo balas, V0, V1, V2 - neapdorotos 0, 1, 2 ir a kanalų vertės, b, c, d - koeficientai, kuriuos aš sureguliavau rankiniu būdu (a ir c buvo nuo 0,3 iki 2,0, b ir d buvo 15 ir 20, bet kokiu atveju turėsite juos pakeisti, kad prisitaikytumėte prie konkrečios jutiklio vietos). Tas pats balas buvo apskaičiuotas 1 ir 2 kanalams. Po to diagramos tapo beveik visiškai atskirtos. Tų pačių gestų (šį kartą bevardžio, vidurinio ir nykščio) signalai yra aiškūs ir gali būti lengvai išversti į servo judesius, palyginus su slenksčiu
4 žingsnis: schemos
Schema yra gana paprasta, jums reikia tik nRF24 modulio, PCA9685 ar panašaus I2C PWM valdiklio ir didelio stiprintuvo 5 V maitinimo šaltinio, kurio pakaktų vienu metu perkelti visus šiuos servo įrenginius (todėl stabiliam veikimui reikia ne mažesnės kaip 5 A galios).
Ryšių sąrašas: nRF24 kaištis 1 (GND) - „Arduino“GNDnRF24 kaištis 2 („Vcc“) - „Arduino“3.3vnRF24 kaištis 3 (įjungta mikroschema) - „Arduino“D9nRF24 kaištis 4 (SPI: CS) - „Arduino“D8nRF24 kaištis 5 (SPI: SCino) - Arduino D13nRF24 kaištis 6 (SPI: MOSI) - „Arduino“D11nRF24 kaištis 7 (SPI: MISO) - „Arduino“D12PCA9685 SDA - „Arduino“A4PCA9685 SCL - „Arduino“A5PCA9685 Vcc - „Arduino“5vPCA9685g stiprintuvo stiprintuvas PCA kanalai 0-4, mano žymėjime nykštys - kanalas 0, rodomasis pirštas - 1 kanalas ir kt.
5 žingsnis: EMG jutiklių išdėstymas
Norint gauti pagrįstus rodmenis, svarbu įdėti uECG prietaisus, kurie registruoja raumenų veiklą, tinkamose vietose. Nors čia galima pasirinkti daugybę skirtingų variantų, kiekvienam reikalingas skirtingas signalo apdorojimo metodas, todėl mano kodo atveju geriausia naudoti vietą, panašią į mano nuotraukas. Tai gali būti nesąmoninga, tačiau nykščio raumenų signalas geriau matomas priešingoje rankos pusėje, todėl vienas iš jutiklių yra ten, ir visi jie yra arti alkūnės (raumenys turi didžiąją kūno dalį toje srityje, bet jūs norite patikrinti, kur tiksliai yra jūsų - yra gana didelis individualus skirtumas)
6 žingsnis: kodas
Prieš paleisdami pagrindinę programą, turėsite sužinoti savo konkrečių uECG įrenginių vienetų ID (tai daroma nekomentuojant 101 eilutės ir įjungiant įrenginius po vieną, be kita ko, pamatysite dabartinio įrenginio ID) ir užpildykite juos masyvas unit_ids (37 eilutė). Išskyrus tai, jūs norite žaisti su formulės koeficientais (129–131 eilutės) ir patikrinti, kaip jis atrodo serijiniame braižytuve, prieš pritvirtindamas jį prie roboto rankos.
7 žingsnis: Rezultatai
Su kai kuriais eksperimentais, kurie truko apie 2 valandas, man pavyko atlikti gana patikimą operaciją (vaizdo įraše parodytas tipiškas atvejis). Jis elgiasi ne idealiai ir šiuo apdorojimu gali atpažinti tik atidarytus ir uždarytus pirštus (ir net ne kiekvieną iš 5, jis aptinka tik 3 raumenų grupes: nykštį, rodyklę ir vidurį kartu, žiedinį ir mažuosius pirštus kartu). Tačiau „AI“, kuris analizuoja signalą, čia užima 3 kodo eilutes ir naudoja vieną vertę iš kiekvieno kanalo. Manau, kad daug daugiau būtų galima padaryti analizuojant 32 dėžių spektrinius vaizdus asmeniniame kompiuteryje ar išmaniajame telefone. Be to, šioje versijoje naudojami tik 3 uECG įrenginiai (EMG kanalai). Turint daugiau kanalų, turėtų būti įmanoma atpažinti išties sudėtingus modelius - bet gerai, tai yra projekto esmė, suteikti tam tikrą atskaitos tašką visiems besidomintiems:) Rankinis valdymas tikrai nėra vienintelė tokios sistemos programa.
Rekomenduojamas:
Robotas be galvos su judančiomis rankomis: 6 žingsniai (su nuotraukomis)
Robotas be galvų su judančiomis rankomis: Šios instrukcijos yra įkvėptos iš Helovino begalio roboto. Visą instrukciją, kaip padaryti robotą iš kartono, rasite čia. Kad jis taptų gyvesnis, turiu idėją, kad ranka, laikanti galvą, judėtų
Sukurkite savo rankomis sukamą avarinį „Powerbank“: 4 žingsniai (su nuotraukomis)
Sukurkite savo rankomis sukamą avarinį „Powerbank“: Šiame projekte parodysiu, kaip sukurti rankiniu būdu sukamą generatorių kartu su modifikuotu galios banku. Tokiu būdu galite įkrauti „Powerbank“avariniu atveju be lizdo. Pakeliui taip pat pasakysiu, kodėl BLDC mot
Lydymas rankomis Juokingas grandinės plokštės piktadarys Elektroniniai komponentai: 7 žingsniai
Lituoti rankomis Juokingi metalo laužo piktadariai Elektroniniai komponentai: elektroninių grandinių laužas (seni kompiuteriai ar buitinės technikos laužas) lituoklis, lituoklio pincetas, replės, žirklės
Ryškumo valdymas PWM pagrįstas LED valdymas naudojant mygtukus, „Raspberry Pi“ir „Scratch“: 8 žingsniai (su nuotraukomis)
Ryškumo valdymas PWM pagrįstas LED valdymas naudojant mygtukus, „Raspberry Pi“ir „Scratch“: bandžiau rasti būdą, kaip paaiškinti, kaip PWM veikė mano mokiniams, todėl iškėliau sau užduotį pabandyti valdyti šviesos diodo ryškumą naudojant du mygtukus - vienas mygtukas padidina šviesos diodo ryškumą, o kitas - jį pritemdo. Programa
ESP8266 RGB LED juostelės WIFI valdymas - „NODEMCU“kaip IR nuotolinio valdymo pultas „Led Strip“, valdomas per „Wifi“- RGB LED STRIP išmaniojo telefono valdymas: 4 žingsniai
ESP8266 RGB LED juostelės WIFI valdymas | „NODEMCU“kaip IR nuotolinio valdymo pultas „Led Strip“, valdomas per „Wifi“| „RGB LED STRIP“išmaniojo telefono valdymas: Sveiki vaikinai, šioje pamokoje mes išmoksime naudoti „nodemcu“arba „esp8266“kaip IR nuotolinio valdymo pultą, norint valdyti RGB LED juostą, o „Nodemcu“bus valdomas išmaniuoju telefonu per „Wi -Fi“. Taigi iš esmės galite valdyti RGB LED juostelę savo išmaniuoju telefonu