Obsah:
- Zásoby
- Krok 1: Získanie signálu
- Krok 2: Zjednodušený signál
- Krok 3: Spracovanie signálu
- Krok 4: Schémy
- Krok 5: Umiestnenie senzorov EMG
- Krok 6: Kód
- Krok 7: Výsledky
Video: Robotické ručné ovládanie s EMG: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
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
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
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é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
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:
Ručné nočné svetlo: 7 krokov (s obrázkami)
Ručné nočné svetlo: Môj 5-ročný nás stále v noci budil a stále sme mu prednášali, ako nechať matku a otca spať, kým som si neuvedomil, že vlastne nevie sám určiť, či je čas na spánok alebo na hranie. času. Navyše by nás požiadal, aby sme zapli svetlo.
Ovládanie žalúzií s ESP8266, integrácia Google Home a Openhab a webové ovládanie: 5 krokov (s obrázkami)
Ovládanie žalúzií S ESP8266, integráciou Google Home a Openhab a webovým ovládaním: V tomto návode vám ukážem, ako som k svojim žalúziám pridal automatizáciu. Chcel som mať možnosť pridať a odstrániť automatizáciu, takže všetka inštalácia je nasadená. Hlavnými časťami sú: krokový motor, krokový ovládač ovládaný bij ESP-01 prevodovka a montáž
Ovládanie jasu Ovládanie LED na báze PWM pomocou tlačidiel, Raspberry Pi a Scratch: 8 krokov (s obrázkami)
Ovládanie jasu Ovládanie LED na základe PWM pomocou tlačidiel, Raspberry Pi a Scratch: Snažil som sa nájsť spôsob, ako vysvetliť, ako PWM funguje u mojich študentov, a tak som si dal za úlohu pokúsiť sa ovládať jas LED pomocou dvoch tlačidiel. - jedno tlačidlo zvyšuje jas LED diódy a druhé ju stmieva. Programovať
ESP8266 RGB LED STRIP WIFI ovládanie - NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi - Ovládanie smartfónu RGB LED STRIP: 4 kroky
ESP8266 RGB LED STRIP WIFI ovládanie | NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi | Ovládanie smartfónu RGB LED STRIP: Ahoj, v tomto návode sa naučíme, ako používať nodemcu alebo esp8266 ako IR diaľkové ovládanie na ovládanie RGB LED pásu a Nodemcu budete ovládať smartfónom cez wifi. V zásade teda môžete RGB LED STRIP ovládať pomocou svojho smartfónu
Ručne vyrábané diaľkové ovládanie IR: 5 krokov (s obrázkami)
Ručne vyrábaný diaľkový ovládač IR: Vo svojom predchádzajúcom projekte som použil toto zariadenie ako infračervený vysielač a sľúbil som, že tento popis projektu nahrám v ďalších pokynoch. Takže tu vám predstavujem IR vysielač s časovačom 555. Posledný projekt, v ktorom tento diaľkový ovládač Chceme navrhnúť viac