Sadržaj:
- Pribor
- Korak 1: Prikupljanje signala
- Korak 2: Pojednostavljeni signal
- Korak 3: Obrada signala
- Korak 4: Sheme
- Korak 5: Postavljanje EMG senzora
- Korak 6: Kodiranje
- Korak 7: Rezultati
Video: Robotska ručna kontrola s EMG -om: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Ovaj projekt prikazuje kontrolu robotske ruke (pomoću otvorene ruke 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:)
Pribor
3x uECG uređaji1x Arduino (koristim Nano, ali većina drugih bi radila) 1x nRF24 modul (bilo koji generički) 1 x 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, to bi 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 s 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 vodoravnoj liniji (stari podaci lijevo sveukupno ovdje 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 gesta potrebna je odgovarajuća računalna obrada ovih spektralnih slika. No, za jednostavno aktiviranje robotskih prstiju ruke, dovoljno je samo upotrijebiti prosječnu vrijednost na 3 kanala - uECG ga prikladno daje u određenim paketnim bajtovima kako bi ga 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 izlaziti vrijednosti na ručne servo upravljače. Problem je u tome što su signali iz mišićnih skupina "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
Kako 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 prilagodio (a i c su bili od 0,3 do 2,0, b i d su bili 15 i 20, svejedno ćete ih morati promijeniti kako 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, te 5V napajanje velikog pojačala 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 (Chip Enable) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino D8nRF24 pin 5 (SPI: SCK) - Arduino D13nRF24 klin 6 (SPI: Mosi) - Težak je D11nRF24 klin 7 (SPI: MISO) - Težak je D12PCA9685 SDA - Težak je A4PCA9685 SCL - Težak je A5PCA9685 VCC - Težak je 5vPCA9685 GND - Težak je GNDPCA9685 V + - visoke amp 5VPCA9685 GND - visoke amp GNDFinger servos: u PCA kanali 0-4, u mom zapisu palac - kanal 0, kažiprst - kanal 1 itd.
Korak 5: Postavljanje EMG senzora
Kako 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 s mojim kodom 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, pa 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 točno vaš nalazi - postoji velika individualna razlika)
Korak 6: Kodiranje
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 ispunite ih unit_ids niz (redak 37). Osim ovoga, želite se igrati s koeficijentima formule (retci 129-131) i provjeriti kako izgleda na serijskom ploteru prije nego što ga pričvrstite na robotsku ruku.
Korak 7: Rezultati
S nekim pokusima 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 sredinu zajedno, prsten i mali prsti zajedno). Ali "AI" koji analizira signal ovdje uzima 3 retka koda i koristi jednu vrijednost iz svakog kanala. Vjerujem da bi se mnogo više moglo učiniti analizom spektralnih slika od 32 bina na računalu 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 doista složene obrasce - ali dobro, to je poanta projekta, pružiti neko polazište svima zainteresiranima:) Ručno upravljanje definitivno nije jedina aplikacija za takav sustav.
Preporučeni:
Ručna vremenska postaja: 4 koraka
Ručna vremenska postaja: U ovom Instructableu koristit ćemo Arduino, oled zaslon i kombinaciju senzora okoliša SparkFun sa senzorima CCS811 i BME280 na brodu za izradu ručnog uređaja koji mjeri temperaturu, vlagu, razine TVOC -a, barometarski tlak
DIY ručna igraća konzola pomoću RetroPie: 7 koraka
DIY ručna igraća konzola pomoću RetroPie: Pogledajte gornji video da biste bolje razumjeli ovaj projekt. Fino. 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
Modularna ručna pomoć: 7 koraka
Modularna pomoć za ruke: Vidio sam ljude s ozljedama prstiju, nedostaju 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 desetke pomagala, cijenu je teško priuštiti. Tamo
GamePi - ručna konzola emulatora: 17 koraka (sa slikama)
GamePi - ručna konzola emulatora: Uvod: Ova uputa opisuje izradu ručne konzole za emulaciju s Raspberry Pi 3 pogonom - krstila sam je GamePi. Postoji mnogo sličnih uputstava za takve uređaje, ali za moj ukus većina ih je ili prevelika, premala
Kontrola svjetline PWM LED kontrola pomoću tipki, Raspberry Pi i ogrebotina: 8 koraka (sa slikama)
Kontrola svjetline PWM LED kontrola temeljena na tipkama, Raspberry Pi i Scratch: Pokušavao sam pronaći način da svojim učenicima objasnim kako PWM radi, pa sam si postavio zadatak pokušati kontrolirati svjetlinu LED diode pomoću 2 tipke - jedan gumb povećava svjetlinu LED -a, a drugi ga prigušuje. Za program