Obsah:

Robotické ruční ovládání s EMG: 7 kroků
Robotické ruční ovládání s EMG: 7 kroků

Video: Robotické ruční ovládání s EMG: 7 kroků

Video: Robotické ruční ovládání s EMG: 7 kroků
Video: ETA Raggio robotický vysavač 2024, Červenec
Anonim
Image
Image
Akvizice signálu
Akvizice signálu

Tento projekt ukazuje ovládání robotické ruky (pomocí opensource hand inMoov) pomocí 3 opensource uECG zařízení používaných k měření a zpracování svalové aktivity (elektromyogram, EMG). Náš tým má dlouhý příběh s rukama a jejich kontrolou, a to je dobrý krok správným směrem:)

Zásoby

3x zařízení uECG1x Arduino (používám Nano, ale většina ostatních by fungovala) 1x modul nRF24 (jakýkoli obecný by stačil) 1x PCA9685 nebo podobný ovladač serva 5A nebo více proudu

Krok 1: Získávání signálu

Řízení je založeno na EMG - elektrické aktivitě svalů. EMG signál získávají tři zařízení uECG (vím, má to být monitor EKG, ale protože je založen na generickém ADC, dokáže měřit jakékoli biosignály - včetně EMG). Pro zpracování EMG má uECG speciální režim, ve kterém vysílá data o spektru 32 bin a průměr „svalového okna“(průměrná spektrální intenzita mezi 75 a 440 Hz). Obrázky spektra vypadají jako modrozelené vzory, které se v průběhu času mění. Zde je frekvence na svislé ose (na každém ze 3 grafů, nízká frekvence dole, vysoká nahoře - od 0 do 488 Hz s kroky ~ 15 Hz), čas je na horizontále (stará data vlevo celkově zde je na obrazovce asi 10 sekund). Intenzita je kódována barvou: modrá - nízká, zelená - střední, žlutá - vysoká, červená - ještě vyšší.

Krok 2: Zjednodušený signál

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

Pro spolehlivé rozpoznávání gest je vyžadováno řádné zpracování těchto spektrálních obrazů počítačem. Ale pro jednoduchou aktivaci robotických ručních prstů stačí použít průměrnou hodnotu na 3 kanálech - uECG to pohodlně poskytuje v určitých bajtech paketů, aby to skica Arduina mohla analyzovat. Tyto hodnoty vypadají mnohem jednodušeji - připojil jsem graf nezpracovaných hodnot ze sériového plotru Arduino. Červené, zelené a modré grafy jsou surové hodnoty ze 3 zařízení uECG na různých svalových skupinách, když odpovídajícím způsobem mačkám palec, prsten a prostředníček. Pro naše oko se tyto případy zjevně liší, ale musíme tyto hodnoty nějakým způsobem změnit na „skóre prstů“, aby program mohl vydávat hodnoty do ručních serv. Problém je v tom, že signály ze svalových skupin jsou „smíšené“: v 1. a 3. případě je intenzita modrého signálu přibližně stejná - ale červená a zelená se liší. Ve 2. a 3. případě jsou zelené signály stejné - ale modré a červené jsou odlišné.

Krok 3: Zpracování signálu

Zpracování signálu
Zpracování signálu

K „smísení“těchto signálů jsem použil relativně jednoduchý vzorec:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), kde S0 - skóre pro kanál 0, V0, V1, V2 - základní hodnoty pro kanály 0, 1, 2 a a, b, c, d - koeficienty, které jsem nastavil ručně (a a c byly od 0,3 do 2,0, b a d byly 15 a 20, budete je muset změnit tak, aby odpovídaly vašemu konkrétnímu umístění senzoru). Stejné skóre bylo vypočítáno pro kanály 1 a 2. Poté se grafy téměř dokonale oddělily. Pro stejná gesta (tentokrát prsteník, prostředník a poté palec) jsou signály jasné a lze je snadno převést na pohyby serva pouhým porovnáním s prahem

Krok 4: Schémata

Schémata
Schémata

Schéma je celkem jednoduché, potřebujete pouze modul nRF24, PCA9685 nebo podobný I2C PWM řadič a 5V napájecí zesilovač, který by stačil k přesunu všech těchto serv najednou (pro stabilní provoz tedy vyžaduje jmenovitý výkon alespoň 5A).

Seznam připojení: 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 A4PCA9685 SCL - Arduino A5PCA9685 GND - GN5 Kanály PCA 0-4, podle mého názoru palec - kanál 0, ukazováček - kanál 1 atd.

Krok 5: Umístění snímačů EMG

Umístění snímačů EMG
Umístění snímačů EMG
Umístění snímačů EMG
Umístění snímačů EMG

Abyste získali rozumné hodnoty, je důležité umístit zařízení uECG, která zaznamenávají svalovou aktivitu, na správná místa. I když je zde možné mnoho různých možností, každá vyžaduje jiný přístup ke zpracování signálu - takže s mým kódem je nejlepší použít umístění podobné mým fotografiím. Může to být neintuitivní, ale signál svalu palce je lépe viditelný na opačné straně paže, takže je tam umístěn jeden ze senzorů a všechny jsou umístěny v blízkosti lokte (svaly mají v této oblasti většinu těla, ale chcete zjistit, kde přesně se nacházejí ty vaše - existuje poměrně velký individuální rozdíl)

Krok 6: Kód

Před spuštěním hlavního programu budete muset zjistit ID jednotek vašich konkrétních zařízení uECG (provádí se odkomentováním linky 101 a otáčením zařízení po jednom, mimo jiné uvidíte ID aktuálního zařízení) a vyplnit je do pole unit_ids (řádek 37). Kromě toho si chcete pohrát s koeficienty vzorců (řádky 129–131) a před připojením k robotické ruce zkontrolovat, jak to vypadá na sériovém plotru.

Krok 7: Výsledky

S některými experimenty, které trvaly asi 2 hodiny, se mi podařilo získat celkem spolehlivý provoz (video ukazuje typický případ). Chová se ne dokonale a při tomto zpracování dokáže rozpoznat pouze otevřené a zavřené prsty (a dokonce ani každý z 5, detekuje pouze 3 svalové skupiny: palec, index a střed dohromady, prsten a malíček dohromady). Ale „AI“, která analyzuje signál, zde potřebuje 3 řádky kódu a z každého kanálu používá jednu hodnotu. Věřím, že analyzováním spektrálních obrazů s 32 přihrádkami na PC nebo smartphonu lze udělat mnohem více. Tato verze také používá pouze 3 zařízení uECG (kanály EMG). S více kanály by mělo být možné rozpoznat opravdu složité vzory - ale to je smysl projektu, poskytnout nějaké východisko každému, koho to zajímá:) Ruční ovládání rozhodně není jedinou aplikací pro takový systém.

Doporučuje: