Obsah:

Robotické ručné ovládanie s EMG: 7 krokov
Robotické ručné ovládanie s EMG: 7 krokov

Video: Robotické ručné ovládanie s EMG: 7 krokov

Video: Robotické ručné ovládanie s EMG: 7 krokov
Video: Feasibility - brúsenie zvarov s kolaboratívnym robotom UR10e | Stimba 2024, Júl
Anonim
Image
Image
Akvizícia signálu
Akvizícia signálu

Tento projekt ukazuje ovládanie robotickej ruky (pomocou opensource hand inMoov) pomocou 3 opensource uECG zariadení používaných na meranie a spracovanie svalovej aktivity (elektromyogram, EMG). Náš tím má dlhý príbeh s rukami a ich kontrolou, a to je dobrý krok správnym smerom:)

Zásoby

3x zariadenia uECG1x Arduino (používam Nano, ale väčšina ostatných by fungovala) 1x modul nRF24 (fungoval by akýkoľvek generický) 1x PCA9685 alebo podobný ovládač serva 5A alebo viac prúdových

Krok 1: Získanie signálu

Riadenie je založené na EMG - elektrickej aktivite svalov. EMG signál získavajú tri zariadenia uECG (viem, má to byť monitor EKG, ale keďže je založené na generickom ADC, dokáže merať akékoľvek biosignály - vrátane EMG). Na spracovanie EMG má uECG špeciálny režim, v ktorom odosiela údaje z 32-binového spektra a priemer „svalového okna“(priemerná spektrálna intenzita medzi 75 a 440 Hz). Obrázky spektra vyzerajú ako modrozelené vzory, ktoré sa časom menia. Tu je frekvencia na zvislej osi (na každom z 3 grafov, nízka frekvencia v spodnej časti, vysoká v hornej časti - od 0 do 488 Hz s krokmi ~ 15 Hz), čas je na horizontále (staré údaje vľavo celkovo tu je na obrazovke asi 10 sekúnd). Intenzita je kódovaná farbou: modrá - nízka, zelená - stredná, žltá - vysoká, červená - ešte vyššia.

Krok 2: Zjednodušený signál

Zjednodušený signál
Zjednodušený signál

Na spoľahlivé rozpoznanie gest je potrebné správne spracovanie týchto spektrálnych obrazov pomocou počítača. Na jednoduchú aktiváciu robotických ručných prstov však stačí použiť priemernú hodnotu na 3 kanáloch - uECG ho pohodlne poskytuje v určitých bajtoch paketov, aby ho skica Arduina mohla analyzovať. Tieto hodnoty vyzerajú oveľa jednoduchšie - priložil som tabuľku nespracovaných hodnôt zo sériového plotra Arduino. Červené, zelené a modré grafy sú prvotné hodnoty z 3 prístrojov uECG na rôznych svalových skupinách, keď zodpovedajúcim spôsobom stláčam palec, prsten a stredný prst. Pre naše oko sú tieto prípady zjavne odlišné, ale musíme tieto hodnoty nejako zmeniť na „skóre prstov“, aby program mohol odosielať hodnoty do ručných serv. Problém je v tom, že signály zo svalových skupín sú „zmiešané“: v 1. a 3. prípade je intenzita modrého signálu približne rovnaká - ale červená a zelená sú odlišné. V 2. a 3. prípade sú zelené signály rovnaké - ale modré a červené sú odlišné.

Krok 3: Spracovanie signálu

Spracovanie signálu
Spracovanie signálu

Na „zmiešanie“týchto signálov som použil relatívne jednoduchý vzorec:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kde S0 - skóre pre kanál 0, V0, V1, V2 - prvotné hodnoty pre kanály 0, 1, 2 a a, b, c, d - koeficienty, ktoré som nastavil ručne (a a c boli od 0,3 do 2,0, b a d boli 15 a 20, budete ich musieť zmeniť tak, aby sa prispôsobili vášmu konkrétnemu umiestneniu senzora). Rovnaké skóre bolo vypočítané pre kanály 1 a 2. Potom sa grafy takmer dokonale oddelili. Pri rovnakých gestách (tentoraz prstenník, stred a potom palec) sú signály jasné a dajú sa ľahko previesť na pohyby serva jednoduchým porovnaním s prahom

Krok 4: Schémy

Schémy
Schémy

Schéma je celkom jednoduchá, potrebujete iba modul nRF24, PCA9685 alebo podobný I2C PWM regulátor a 5 V napájací zdroj s vysokým zosilňovačom, ktorý by stačil na pohyb všetkých týchto serv naraz (na stabilnú prevádzku preto vyžaduje menovitý výkon najmenej 5 A).

Zoznam pripojení: 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 pin 6 (SPI: MOSI) - Arduino D11nRF24 pin 7 (SPI: MISO) - Arduino D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino A5PCA9685 VCC - Arduino 5vPCA9685 GND - Arduino Kanály PCA 0-4, podľa môjho názoru palec - kanál 0, ukazovák - kanál 1 atď.

Krok 5: Umiestnenie senzorov EMG

Umiestnenie senzorov EMG
Umiestnenie senzorov EMG
Umiestnenie senzorov EMG
Umiestnenie senzorov EMG

Aby ste získali primerané hodnoty, je dôležité umiestniť zariadenia uECG, ktoré zaznamenávajú svalovú aktivitu, na správnych miestach. Aj keď je tu možných veľa rôznych možností, každá vyžaduje iný prístup k spracovaniu signálu - takže pre môj kód je najlepšie použiť umiestnenie podobné mojim fotografiám. Možno to nie je intuitívne, ale signál svalov palca je lepšie viditeľný na opačnej strane ramena, takže je tam umiestnený jeden zo senzorov a všetky sú umiestnené v blízkosti lakťa (svaly majú väčšinu tela v tejto oblasti, ale chcete zistiť, kde sa presne nachádza ten váš - je tu dosť veľký individuálny rozdiel)

Krok 6: Kód

Pred spustením hlavného programu budete musieť zistiť ID jednotiek vašich konkrétnych zariadení uECG (vykonáva sa odkomentovaním linky 101 a zapínaním zariadení jeden po druhom, okrem iného uvidíte ID aktuálneho zariadenia) a zadajte ich do pole unit_ids (riadok 37). Okrem toho sa chcete hrať s koeficientmi vzorcov (riadky 129-131) a pred pripojením k robotickej ruke skontrolujte, ako to vyzerá na sériovom plotri.

Krok 7: Výsledky

Pri niektorých experimentoch, ktoré trvali asi 2 hodiny, sa mi podarilo dosiahnuť celkom spoľahlivú prevádzku (video ukazuje typický prípad). Chová sa nie úplne dokonale a pri tomto spracovaní dokáže rozpoznať iba otvorené a zatvorené prsty (a dokonca ani každú z 5 -tich detekuje iba 3 svalové skupiny: palec, ukazovák a stred dohromady, prsteň a malé prsty dohromady). Ale „AI“, ktorá analyzuje signál, tu trvá 3 riadky kódu a z každého kanála používa jednu hodnotu. Verím, že analyzovaním 32-binových spektrálnych obrazov na počítači alebo smartfóne je možné urobiť viac. Táto verzia tiež používa iba 3 zariadenia uECG (kanály EMG). S viacerými kanálmi by malo byť možné rozpoznať skutočne zložité vzorce - ale to je zmysel projektu, poskytnúť východiskový bod pre kohokoľvek, koho zaujíma:) Ručné ovládanie rozhodne nie je jedinou aplikáciou pre takýto systém.

Odporúča: