Satura rādītājs:

Robotiskā rokas vadība ar EMG: 7 soļi
Robotiskā rokas vadība ar EMG: 7 soļi

Video: Robotiskā rokas vadība ar EMG: 7 soļi

Video: Robotiskā rokas vadība ar EMG: 7 soļi
Video: Вскрыта коробка с 30 бустерами расширения, Братоубийственная война, карты Magic The Gathering 2024, Novembris
Anonim
Image
Image
Signāla iegūšana
Signāla iegūšana

Šis projekts parāda robotizētas rokas kontroli (izmantojot atvērtā avota roku inMoov) ar 3 atvērtā avota uECG ierīcēm, ko izmanto muskuļu aktivitātes mērīšanai un apstrādei (elektromiogramma, EMG). Mūsu komandai ir garš stāsts ar rokām un viņu kontroli, un tas ir labs solis pareizajā virzienā:)

Piegādes

3x uECG ierīces 1x Arduino (es izmantoju Nano, bet lielākā daļa citu darbotos) 1x nRF24 modulis (derētu jebkurš vispārējs) 1x PCA9685 vai līdzīgs servo draiveris 1x inMoov rokas 5x lieli servo (skatiet inMoov instrukcijas saderīgiem tipiem) 1x 5V barošanas avots 5A vai vairāk strāvas

1. darbība: signāla iegūšana

Kontroles pamatā ir EMG - muskuļu elektriskā aktivitāte. EMG signālu iegūst trīs uECG ierīces (es zinu, ka tam vajadzētu būt EKG monitoram, bet, tā kā tas ir balstīts uz vispārēju ADC, tas var izmērīt visus biosignālus, ieskaitot EMG). EMG apstrādei uECG ir īpašs režīms, kurā tas izsūta 32 bin spektra datus, un "muskuļu logu" vidējais (vidējā spektrālā intensitāte no 75 līdz 440 Hz). Spektra attēli izskatās kā zili zaļi raksti, kas laika gaitā mainās. Šeit frekvence atrodas uz vertikālas ass (katrā no 3 diagrammām, zemā frekvence apakšā, augsta augšpusē - no 0 līdz 488 Hz ar ~ 15 Hz soļiem), laiks ir horizontāls (vecie dati kopumā kreisajā pusē šeit ekrānā ir aptuveni 10 sekundes). Intensitāte ir kodēta ar krāsu: zila - zema, zaļa - vidēja, dzeltena - augsta, sarkana - vēl augstāka.

2. darbība: vienkāršots signāls

Vienkāršots signāls
Vienkāršots signāls

Lai nodrošinātu uzticamu žestu atpazīšanu, ir nepieciešama šo spektrālo attēlu pareiza datora apstrāde. Bet, lai vienkārši aktivizētu rokas pirkstus ar robotu, pietiek tikai izmantot vidējo vērtību 3 kanālos - uECG to ērti nodrošina noteiktos pakešu baitos, lai Arduino skice varētu to parsēt. Šīs vērtības izskatās daudz vienkāršākas - esmu pievienojis neapstrādātu vērtību diagrammu no Arduino sērijas plotera. Sarkanas, zaļas, zilas diagrammas ir neapstrādātas vērtības no 3 uECG ierīcēm dažādās muskuļu grupās, kad es attiecīgi saspiedu īkšķi, gredzenu un vidējos pirkstus. Mūsu acīs šie gadījumi acīmredzami ir atšķirīgi, taču mums šīs vērtības kaut kā jāpārvērš par "pirkstu rādītājiem", lai programma varētu izvadīt vērtības rokas servos. Problēma ir tāda, ka signāli no muskuļu grupām ir "sajaukti": pirmajā un trešajā gadījumā zilā signāla intensitāte ir aptuveni vienāda, bet sarkanā un zaļā ir atšķirīgas. Otrajā un trešajā gadījumā zaļie signāli ir vienādi, bet zils un sarkans atšķiras.

3. solis: signālu apstrāde

Signālu apstrāde
Signālu apstrāde

Lai šos signālus "sajauktu", esmu izmantojis salīdzinoši vienkāršu formulu:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kur S0 - rezultāts kanālam 0, V0, V1, V2 - neapstrādātas vērtības kanāliem 0, 1, 2 un a, b, c, d - koeficienti, kurus es noregulēju manuāli (a un c bija no 0,3 līdz 2,0, b un d bija 15 un 20, tie jebkurā gadījumā būs jāmaina, lai pielāgotos konkrētajam sensora izvietojumam). Tāds pats rādītājs tika aprēķināts 1. un 2. kanālam. Pēc tam diagrammas gandrīz pilnībā atdalījās. To pašu žestu (šoreiz gredzenveida pirkstu, vidējo un pēc tam īkšķa) signāli ir skaidri un tos var viegli pārvērst servo kustībās, salīdzinot ar slieksni

4. solis: shēmas

Shēmas
Shēmas

Shēma ir pavisam vienkārša, jums ir nepieciešams tikai nRF24 modulis, PCA9685 vai līdzīgs I2C PWM kontrolleris un liela pastiprinātāja 5V barošanas avots, ar ko pietiktu, lai pārvietotu visus šos servos vienlaicīgi (tātad stabilai darbībai nepieciešama vismaz 5A nominālā jauda).

Savienojumu saraksts: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Chip Enable) - Arduino D9nRF24 pin 4 (SPI: CS) - Arduino D8nRF24 pin 5 (SPI: SCino's) - Arduino D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685o Gmp pastiprinātājs PCA kanāli 0-4, manā notācijā īkšķis - kanāls 0, rādītājpirksts - kanāls 1 utt.

5. solis: EMG sensoru izvietošana

EMG sensoru izvietojums
EMG sensoru izvietojums
EMG sensoru izvietojums
EMG sensoru izvietojums

Lai iegūtu saprātīgus rādījumus, ir svarīgi pareizās vietās novietot uECG ierīces, kas reģistrē muskuļu darbību. Lai gan šeit ir iespējamas daudzas dažādas iespējas, katrai no tām ir nepieciešama atšķirīga signālu apstrādes pieeja - tāpēc ar manu kodu vislabāk ir izmantot izvietojumu, kas līdzīgs manām fotogrāfijām. Tas var būt pretintuitīvs, bet īkšķa muskuļu signāls ir labāk redzams rokas pretējā pusē, tāpēc viens no sensoriem ir novietots tur, un tie visi ir novietoti tuvu elkoņam (muskuļiem lielākā daļa ķermeņa atrodas šajā zonā, bet jūs vēlaties pārbaudīt, kur atrodas tieši jūsu - ir diezgan liela individuālā atšķirība)

6. darbība: kods

Pirms galvenās programmas palaišanas jums būs jānoskaidro jūsu konkrēto uECG ierīču vienību ID (tas tiek darīts, nekomentējot 101. rindu un ieslēdzot ierīces pa vienai, cita starpā redzēsit pašreizējās ierīces ID) un tās jāaizpilda masīvs unit_ids (37. rinda). Izņemot šo, jūs vēlaties spēlēt ar formulu koeficientiem (129.-131. Rindas) un pārbaudīt, kā tas izskatās sērijveida ploterī, pirms to piestiprināt pie robota rokas.

7. darbība: rezultāti

Ar dažiem eksperimentiem, kas ilga apmēram 2 stundas, man izdevās iegūt diezgan uzticamu darbību (video parāda tipisku gadījumu). Tas uzvedas ne perfekti un ar šo apstrādi var atpazīt tikai atvērtus un aizvērtus pirkstus (un pat ne katrs no 5, tas nosaka tikai 3 muskuļu grupas: īkšķi, rādītājpirkstu un vidējo kopā, gredzenu un mazos pirkstus kopā). Bet "AI", kas analizē signālu, šeit ņem 3 koda rindas un izmanto vienu vērtību no katra kanāla. Es uzskatu, ka daudz vairāk varētu paveikt, analizējot 32 bin spektrālos attēlus datorā vai viedtālrunī. Arī šajā versijā tiek izmantotas tikai 3 uECG ierīces (EMG kanāli). Izmantojot vairāk kanālu, vajadzētu būt iespējai atpazīt patiešām sarežģītus modeļus - bet nu, tā ir projekta būtība, lai sniegtu kādu sākumpunktu ikvienam interesentam:) Rokas vadība noteikti nav vienīgā lietojumprogramma šādai sistēmai.

Ieteicams: