Kazalo:

Robotsko ročno upravljanje z EMG: 7 korakov
Robotsko ročno upravljanje z EMG: 7 korakov

Video: Robotsko ročno upravljanje z EMG: 7 korakov

Video: Robotsko ročno upravljanje z EMG: 7 korakov
Video: 🔥Burning, Numbness & Tingling in Feet or Toes? 2024, Julij
Anonim
Image
Image
Pridobitev signala
Pridobitev signala

Ta projekt prikazuje nadzor nad robotsko roko (z uporabo odprte roke v Moovu) s tremi napravami UECG z odprtim virom, ki se uporabljajo za merjenje in obdelavo mišične aktivnosti (elektromiogram, EMG). Naša ekipa ima dolgo zgodbo z rokami in njihovim nadzorom, kar je dober korak v pravo smer:)

Zaloge

3x naprave UECG 1x Arduino (uporabljam Nano, vendar bi večina drugih delovala) 1x modul nRF24 (kateri koli generični), 1x PCA9685 ali podoben gonilnik servo 1x ročni inMoov 5x veliki servomotorji (glejte navodila inMoov za združljive vrste) 1x 5V napajalnik 5A ali več toka

Korak: Pridobitev signala

Nadzor temelji na EMG - električni aktivnosti mišic. EMG signal pridobivajo tri naprave za UECG (vem, naj bi bil to EKG monitor, a ker temelji na generičnem ADC, lahko meri vse biosignale - tudi EMG). Za obdelavo EMG ima uECG poseben način, v katerem pošilja podatke o spektru 32-bin in povprečje "mišičnega okna" (povprečna spektralna intenzivnost med 75 in 440 Hz). Slike spektra so videti kot modro-zeleni vzorci, ki se sčasoma spreminjajo. Tukaj je frekvenca na navpični osi (na vsakem od treh ploskev, nizka frekvenca na dnu, visoka na vrhu - od 0 do 488 Hz s koraki ~ 15 Hz), čas je na vodoravni strani (stari podatki na levi strani tukaj na splošno je na zaslonu približno 10 sekund). Intenzivnost je kodirana z barvo: modra - nizka, zelena - srednja, rumena - visoka, rdeča - še višja.

2. korak: poenostavljen signal

Poenostavljen signal
Poenostavljen signal

Za zanesljivo prepoznavanje kretenj je potrebna ustrezna računalniška obdelava teh spektralnih slik. Toda za preprosto aktiviranje robotskih ročnih prstov je dovolj, da uporabite povprečno vrednost na treh kanalih - uECG jo priročno zagotovi pri določenih paketnih bajtih, tako da jo lahko Arduino skica razčleni. Te vrednosti so videti veliko enostavnejše - priložil sem grafikon surovih vrednosti iz Arduinovega serijskega ploterja. Rdeči, zeleni in modri grafikoni so surove vrednosti iz 3 aparatov UECG na različnih mišičnih skupinah, ko ustrezno stisnem palec, prstan in srednji prst. Za naše oko so ti primeri očitno drugačni, vendar moramo te vrednosti nekako spremeniti v "oceno prsta", da lahko program odda vrednosti na ročne servomotorje. Težava je v tem, da so signali mišičnih skupin "mešani": v prvem in tretjem primeru je intenzivnost modrega signala približno enaka - vendar sta rdeča in zelena različna. V 2. in 3. primeru sta zelena signala enaka, modra in rdeča pa različna.

3. korak: Obdelava signala

Obdelava signala
Obdelava signala

Za "odstranitev" teh signalov sem uporabil relativno preprosto formulo:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kjer je S0 - rezultat za kanal 0, V0, V1, V2 - surove vrednosti za kanale 0, 1, 2 in a, b, c, d - koeficiente, ki sem jih nastavil ročno (a in c sta bila od 0,3 do 2,0, b in d sta bila 15 in 20, vseeno bi jih morali spremeniti, da se vseeno prilagodijo vaši posebni postavitvi senzorja). Ista ocena je bila izračunana za kanala 1 in 2. Po tem so se grafikoni skoraj popolnoma ločili. Za iste kretnje (tokrat prstan, srednji in nato palec) so signali jasni in jih je mogoče preprosto prevesti v servo gibe samo s primerjavo s pragom

4. korak: Sheme

Sheme
Sheme

Sheme so precej preproste, potrebujete le modul nRF24, PCA9685 ali podoben krmilnik I2C PWM in napajalnik z visokim ojačevalnikom 5 V, ki bi zadostoval za premikanje vseh teh servomotorjev hkrati (zato za stabilno delovanje potrebuje vsaj 5 A nazivne moči).

Seznam povezav: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Chip Enable) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino's D13nRF24 zatič 6 (SPI: mosi) - Arduino je D11nRF24 zatič 7 (SPI: MISO) - Arduino je D12PCA9685 SDA - Arduino je A4PCA9685 SCL - Arduino je A5PCA9685 Vcc - Arduino je 5vPCA9685 GND - Arduino je GNDPCA9685 V + - visoka amp 5VPCA9685 GND - visoka amp GNDFinger servomotorji: do PCA kanali 0-4, v mojem zapisu palec - kanal 0, kazalec - kanal 1 itd.

5. korak: Namestitev senzorjev EMG

Namestitev EMG senzorjev
Namestitev EMG senzorjev
Namestitev EMG senzorjev
Namestitev EMG senzorjev

Da bi dobili razumne odčitke, je pomembno, da naprave UECG, ki beležijo mišično aktivnost, postavite na prava mesta. Čeprav je tukaj možnih veliko različnih možnosti, vsaka zahteva drugačen pristop pri obdelavi signala - zato je pri moji kodi najbolje uporabiti umestitev, podobno mojim fotografijam. Morda je kontra -intuitivno, vendar je signal mišice palca bolje viden na nasprotni strani roke, zato je tam nameščen eden od senzorjev in vsi so postavljeni blizu komolca (mišice imajo večino telesa na tem področju, vendar želite preveriti, kje točno se nahaja vaš - obstaja velika individualna razlika)

6. korak: Koda

Preden zaženete glavni program, boste morali ugotoviti ID -je enot vaših določenih naprav UECG (to storite tako, da razkomentirate vrstico 101 in vklopite eno za drugo, med drugim boste videli ID trenutne naprave) in jih izpolnite unit_ids niz (vrstica 37). Razen tega se želite igrati s koeficienti formule (vrstice 129-131) in preveriti, kako izgleda na serijskem ploterju, preden ga pritrdite na robotsko roko.

7. korak: Rezultati

Z nekaterimi poskusi, ki so trajali približno 2 uri, sem lahko dobil precej zanesljivo delovanje (video prikazuje tipičen primer). Ne obnaša se popolnoma in s to obdelavo lahko prepozna le odprte in zaprte prste (in niti vsakega od petih, zazna le 3 mišične skupine: palec, kazalec in sredino skupaj, prstan in mezinec skupaj). Toda "AI", ki analizira signal, vzame 3 vrstice kode in uporablja eno vrednost iz vsakega kanala. Menim, da bi z analizo 32-plastnih spektralnih slik na osebnem računalniku ali pametnem telefonu lahko naredili veliko več. Ta različica uporablja tudi samo 3 naprave UECG (kanali EMG). Z več kanali bi moralo biti mogoče prepoznati res zapletene vzorce - ampak to je bistvo projekta, da bi vsem, ki jih zanima, zagotovilo izhodišče:) Ročni nadzor zagotovo ni edina aplikacija za tak sistem.

Priporočena: