Sadržaj:
- Supplies
- Korak 1: Prikupljanje signala
- Korak 2: Pojednostavljeni signal
- Korak 3: Obrada signala
- Korak 4: Sheme
- Korak 5: Postavljanje EMG senzora
- Korak 6: Kodirajte
- Korak 7: Rezultati
Video: Robotska ručna kontrola sa EMG -om: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
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
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
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 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
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:
Ručna vremenska stanica: 4 koraka
Ručna meteorološka stanica: U ovom Instructableu koristit ćemo Arduino, oled ekran i SparkFun kombinaciju senzora okoliša sa senzorima CCS811 i BME280 na brodu za izradu ručnog uređaja koji mjeri temperaturu, vlažnost, nivo TVOC -a, barometarski tlak
DIY ručna igraća konzola pomoću RetroPie: 7 koraka
DIY ručna igraća konzola koristeći RetroPie: Pogledajte gornji video zapis da biste bolje razumjeli ovaj projekt. U redu. Vrijeme je za početak! Prije svega, mi ćemo koristiti RetroPie. To nam ostavlja dvije mogućnosti. Ako smo već instalirali Raspbian na SD karticu, tada možemo instalirati RetroP
Ručna igraća konzola za igre Raspberry Pi Zero: 6 koraka (sa slikama)
Ručno napravljena ručna igraća konzola Raspberry Pi Zero: U ovom projektu pokazat ću vam kako sam koristio Raspberry Pi Zero, NiMH baterije, domaći zaštitni krug od prekomjernog pražnjenja, LCD zaslon za povratak i audio pojačalo za stvaranje ručne konzole za igru koja može igrati retro igre. Hajde da počnemo
Modularna ručna pomoć: 7 koraka
Modularna pomoć za ruke: Vidio sam ljude s ozljedama prstiju, nestalih prstiju ili s mišićnim invaliditetom koji teško hvataju stvari. To bi moglo jako utjecati na njihov život. Iako na tržištu već postoji na desetine pomagala, teško je priuštiti cijenu. Tamo
Kontrola svjetline PWM LED kontrola zasnovana na tipkama, Raspberry Pi i grebanju: 8 koraka (sa slikama)
Kontrola svjetline Kontrola LED -a zasnovana na PWM -u pomoću tipki, Raspberry Pi i grebanja: Pokušavao sam pronaći način da svojim učenicima objasnim kako PWM radi, pa sam sebi postavio zadatak da pokušam kontrolirati svjetlinu LED -a pomoću 2 tipke - jedno dugme povećava svjetlinu LED -a, a drugo ga prigušuje. Za program