Obsah:
- Zásoby
- Krok 1: Získávání signálu
- Krok 2: Zjednodušený signál
- Krok 3: Zpracování signálu
- Krok 4: Schémata
- Krok 5: Umístění snímačů EMG
- Krok 6: Kód
- Krok 7: Výsledky
Video: Robotické ruční ovládání s EMG: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
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
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
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é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
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:
Hlasové ovládání robotické ruky: 4 kroky
Hlasové ovládání Robotická ruka: Vytvořil jsem robotickou ruku, která bude fungovat s vaším hlasovým příkazem. Rameno robota je ovládáno přirozeným propojeným vstupem řeči. Jazykový vstup umožňuje uživateli komunikovat s robotem způsobem, který je většině lidí známý. Pokrok
Jak ovládat 4dof vysoce výkonné velké robotické rameno pomocí dálkového ovládání Arduino a Ps2 ?: 4 kroky
Jak ovládat 4dof vysoce výkonné velké robotické rameno s dálkovým ovládáním Arduino a Ps2 ?: tato sada používá vysoce výkonný motor mg996, potřebuje vysoký proud, máme test hodně příkonu. Bude fungovat pouze adaptér 5v 6a. A deska arduino funguje také na ramenu robota 6dof. konec: napište koupit SINONING Obchod pro kutily
Bezkontaktní indikace hladiny vody a ovládání koroze a ovládání motoru .: 5 kroků
Kontaktujte méně a bez koroze Indikátor hladiny vody a ovládání motoru.: HI, V tomto návodu se podíváme na to, jak pomocí tří různých barevných diod v Bezkontaktní způsob s pomocí ultrazvukového senzoru a desky Arduino uno.P
Robotické auto pro bezdrátové ovládání Arduino: 5 kroků
Robotické auto pro bezdrátové ovládání Arduino: V tomto příspěvku se dozvíte, jak postavit auto pro bezdrátové ovládání robota Arduino. Postavíme vysílač i přijímač. Na straně vysílače bude nano modul Arduino, modul joysticku a NRF24L01 pro odeslání datového kabelu
Ruční robotické rameno Python programovatelné: 5 kroků
Python Programmable DIY Robot Arm: Why Do This Project: (a) Naučte se ovládat robotické rameno skutečným psaním kódu Pythonu. To vám poskytne nej granulárnější ovládání při přidávání počítačového programování na opasek a naučí se vnitřní fungování sofistikovaných motorů založených na registrech