Sadržaj:

Robotska ručna kontrola sa EMG -om: 7 koraka
Robotska ručna kontrola sa EMG -om: 7 koraka

Video: Robotska ručna kontrola sa EMG -om: 7 koraka

Video: Robotska ručna kontrola sa EMG -om: 7 koraka
Video: Physiotherapist | Wikipedia audio article 2024, Juli
Anonim
Image
Image
Prikupljanje signala
Prikupljanje signala

Ovaj projekt prikazuje kontrolu robotske ruke (koristeći ruku otvorenog izvora u Moovu) s 3 UECG uređaja s otvorenim izvorom koji se koriste za mjerenje i obradu mišićne aktivnosti (elektromiogram, EMG). Naš tim ima dugu priču s rukama i njihovom kontrolom, a ovo je dobar korak u pravom smjeru:)

Supplies

3x uECG uređaji1x Arduino (koristim Nano, ali većina drugih bi radila) 1x nRF24 modul (bilo koji generički bi mogao) 1x PCA9685 ili sličan servo upravljački program1x inMoov ručni 5x veliki servomotori (pogledajte inMoov upute za kompatibilne tipove) 1x 5V napajanje sposobno 5A ili više struje

Korak 1: Prikupljanje signala

Kontrola se temelji na EMG - električnoj aktivnosti mišića. EMG signal dobivaju tri uECG uređaja (znam da bi to trebao biti EKG monitor, ali budući da se temelji na generičkom ADC -u, može mjeriti bilo koji biosignal - uključujući EMG). Za EMG obradu, uECG ima poseban način rada u kojem šalje podatke o spektru od 32 bina i prosjek "mišićnog prozora" (prosječni spektralni intenzitet između 75 i 440 Hz). Slike spektra izgledaju poput plavo-zelenih uzoraka koji se vremenom mijenjaju. Ovdje je frekvencija na okomitoj osi (na svakom od 3 grafikona, niska frekvencija pri dnu, visoka na vrhu - od 0 do 488 Hz s koracima ~ 15 Hz), vrijeme je na horizontalnoj razini (stari podaci lijevo ovdje su sveukupno je oko 10 sekundi na ekranu). Intenzitet je kodiran bojom: plava - niska, zelena - srednja, žuta - visoka, crvena - još veća.

Korak 2: Pojednostavljeni signal

Pojednostavljeni signal
Pojednostavljeni signal

Za pouzdano prepoznavanje pokreta, potrebna je odgovarajuća PC obrada ovih spektralnih slika. No, za jednostavno aktiviranje robotskih prstiju ruke, dovoljno je samo upotrijebiti prosječnu vrijednost na 3 kanala - uECG to prikladno daje u određenim paketnim bajtovima kako bi je Arduino skica mogla raščlaniti. Ove vrijednosti izgledaju mnogo jednostavnije - priložio sam grafikon sirovih vrijednosti iz Arduinovog serijskog plotera. Crveni, zeleni i plavi grafikoni su neobrađene vrijednosti s 3 uECG uređaja na različitim mišićnim skupinama kada odgovarajuće stisnem palac, prstenjak i srednji prst. Za naše oko, ti su slučajevi očito različiti, ali moramo nekako pretvoriti te vrijednosti u "rezultat prsta" kako bi program mogao ispisivati vrijednosti u ručne servo sisteme. Problem je u tome što su signali iz mišićnih grupa "mješoviti": u prvom i trećem slučaju intenzitet plavog signala je približno isti - ali crvena i zelena su različite. U drugom i trećem slučaju zeleni signali su isti - ali plavi i crveni su različiti.

Korak 3: Obrada signala

Obrada signala
Obrada signala

Da bih "pomiješao" ove signale, upotrijebio sam relativno jednostavnu formulu:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), gdje je S0 - rezultat za kanal 0, V0, V1, V2 - neobrađene vrijednosti za kanale 0, 1, 2 i a, b, c, d - koeficijenti koje sam ručno podesio (a i c su bili od 0,3 do 2,0, b i d su bili 15 i 20, ipak biste ih trebali promijeniti da biste ih prilagodili vašem položaju senzora). Isti rezultat izračunat je za kanale 1 i 2. Nakon toga, ljestvice su postale gotovo savršeno razdvojene. Za iste geste (ovaj put prstenjak, srednji, a zatim i palac) signali su jasni i mogu se lako prevesti u servo pokrete samo usporedbom s pragom

Korak 4: Sheme

Sheme
Sheme

Sheme su vrlo jednostavne, potreban vam je samo nRF24 modul, PCA9685 ili sličan I2C PWM kontroler i snažno 5V napajanje koje bi bilo dovoljno za premještanje svih ovih servomotora odjednom (tako da za stabilni rad treba najmanje 5A nazivne snage).

Popis priključaka: nRF24 pin 1 (GND) - Arduino GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Čip omogućen) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino D8nRF24 pin 5 (SPI: SCK) - Arduino D13nRF24 pin 6 (SPI: MOSI) - Arduino D11nRF24 pin 7 (SPI: MISO) - Arduino D12PCA9685 SDA - Arduino A4PCA9685 SCL - Arduino A5PCA9685 Vcc - Arduino 5vPCA9685 GND - arduino GNDP GND PCA kanali 0-4, u mom zapisu palac - kanal 0, kažiprst - kanal 1 itd.

Korak 5: Postavljanje EMG senzora

Postavljanje EMG senzora
Postavljanje EMG senzora
Postavljanje EMG senzora
Postavljanje EMG senzora

Da biste dobili razumna očitanja, važno je postaviti UECG uređaje koji bilježe mišićnu aktivnost na prava mjesta. Iako je ovdje moguće mnogo različitih opcija, svaka zahtijeva drugačiji pristup obradi signala - pa je kod mog koda najbolje koristiti položaj sličan mojim fotografijama. Možda je kontraintuitivno, ali signal mišića palca bolje je vidljiv sa suprotne strane ruke, tako da je jedan od senzora postavljen tamo, a svi su postavljeni blizu lakta (mišići imaju veći dio svog tijela u tom području, ali želite provjeriti gdje se vaš točno nalazi - postoji velika individualna razlika)

Korak 6: Kodirajte

Prije pokretanja glavnog programa, morat ćete saznati ID jedinice vaših određenih uECG uređaja (to se postiže dekomentiranjem linije 101 i uključivanjem uređaja jedan po jedan, vidjet ćete između ostalog ID trenutnog uređaja) i popunite ih unit_ids niz (linija 37). Osim ovoga, želite se igrati s koeficijentima formule (redovi 129-131) i provjeriti kako to izgleda na serijskom ploteru prije nego što ga pričvrstite na robotsku ruku.

Korak 7: Rezultati

S nekim eksperimentima koji su trajali oko 2 sata uspio sam postići prilično pouzdan rad (video prikazuje tipičan slučaj). Ne ponaša se savršeno i ovom obradom može prepoznati samo otvorene i zatvorene prste (pa čak ni svaku od 5, detektira samo 3 mišićne skupine: palac, kažiprst i srednju zajedno, prsten i mali prsti zajedno). Ali "AI" koji analizira signal ovdje uzima 3 retka koda i koristi jednu vrijednost za svaki kanal. Vjerujem da bi se mnogo više moglo učiniti analizom spektralnih slika u 32 bina na računaru ili pametnom telefonu. Također, ova verzija koristi samo 3 uECG uređaja (EMG kanali). S više kanala trebalo bi biti moguće prepoznati zaista složene obrasce - ali dobro, to je poanta projekta, pružiti neko polazište svima koji su zainteresirani:) Ručno upravljanje definitivno nije jedina aplikacija za takav sistem.

Preporučuje se: