Tartalomjegyzék:

Robotos kézi vezérlés EMG -vel: 7 lépés
Robotos kézi vezérlés EMG -vel: 7 lépés

Videó: Robotos kézi vezérlés EMG -vel: 7 lépés

Videó: Robotos kézi vezérlés EMG -vel: 7 lépés
Videó: Viyu vyu degida poq degğida manshqa qarab kedvordi 2024, Július
Anonim
Image
Image
Jelátvétel
Jelátvétel

Ez a projekt bemutatja a robot kéz irányítását (nyílt forráskódú inMoov segítségével) 3 nyílt forrású uECG eszközzel, amelyet izomaktivitás mérésére és feldolgozására használnak (elektromiogram, EMG). Csapatunknak hosszú története van a kezével és az irányításával, és ez jó lépés a helyes irányba:)

Kellékek

3x uECG eszközök 1x Arduino (Nano -t használok, de a legtöbb más működne) 1x nRF24 modul (bármelyik általános is megtenné) 1x PCA9685 vagy hasonló szervo meghajtó 1x inMoov kézi 5x nagy szervó (lásd inMoov utasításokat a kompatibilis típusokhoz) 1x 5V tápegység 5A vagy több áram

1. lépés: A jelek megszerzése

A vezérlés az EMG -n - az izmok elektromos aktivitásán - alapul. Az EMG jelet három uECG eszköz nyeri (tudom, állítólag EKG monitor, de mivel általános ADC -n alapul, bármilyen bioszignált képes mérni - beleértve az EMG -t is). Az EMG feldolgozáshoz az uECG speciális móddal rendelkezik, amelyben 32 bin spektrumadatokat küld, és "izomablak" átlagot (átlagos spektrális intenzitás 75 és 440 Hz között). A spektrumképek kék-zöld mintáknak tűnnek, amelyek idővel változnak. Itt a frekvencia függőleges tengelyen van (mind a három parcellán, alacsony frekvencia alul, magas fent - 0 és 488 Hz között, ~ 15 Hz -es lépésekkel), az idő vízszintes (régi adatok a bal oldalon körülbelül 10 másodperc van a képernyőn). Az intenzitást színek kódolják: kék - alacsony, zöld - közepes, sárga - magas, piros - még magasabb.

2. lépés: Egyszerűsített jel

Egyszerűsített jel
Egyszerűsített jel

A megbízható gesztusfelismeréshez e spektrális képek megfelelő számítógépes feldolgozása szükséges. A robot kézi ujjak egyszerű aktiválásához azonban elegendő csupán az átlagolt értéket használni 3 csatornán - az uECG kényelmesen biztosítja bizonyos csomagbájtoknál, így az Arduino -vázlat elemezheti. Ezek az értékek sokkal egyszerűbbnek tűnnek - csatoltam egy táblázatot az Arduino Soros Plotter nyers értékeiről. A piros, zöld, kék diagramok nyers értékek 3 uECG eszközről, különböző izomcsoportokban, amikor a hüvelykujját, a gyűrűjét és a középső ujját szorítom megfelelően. Szemünk szerint ezek az esetek egyértelműen eltérnek egymástól, de ezeket az értékeket valahogy "ujjpontozássá" kell alakítanunk, hogy egy program ki tudja adni az értékeket a kézi szervóknak. A probléma az, hogy az izomcsoportok jelei "vegyesek": az első és a harmadik esetben a kék jel intenzitása körülbelül azonos - de a piros és a zöld különböző. A második és a harmadik esetben a zöld jelek azonosak, de a kék és a piros eltér.

3. lépés: Jelfeldolgozás

Jelfeldolgozás
Jelfeldolgozás

Annak érdekében, hogy ezeket a jeleket "összekeverjük", viszonylag egyszerű képletet használtam:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), ahol S0 - a 0., V0, V1, V2 csatorna pontszáma - nyers értékek a 0, 1, 2 és a csatornákhoz, b, c, d - együtthatók, amelyeket manuálisan állítottam be (a és c 0,3 -tól 2,0 -ig, b és d 15 és 20, ezeket mindenképpen módosítania kell, hogy az adott érzékelő elhelyezéséhez igazodjon). Ugyanezt a pontszámot számították ki az 1 -es és 2 -es csatornákra. Ezt követően a diagramok szinte tökéletesen elkülönültek. Ugyanazokra a gesztusokra (ezúttal a gyűrűsujj, a középső, majd a hüvelykujj) a jelek világosak, és egyszerűen szervomozgásokká alakíthatók, csak a küszöbértékhez képest

4. lépés: Sémák

Vázlatok
Vázlatok

A vázlat meglehetősen egyszerű, csak nRF24 modulra, PCA9685 vagy hasonló I2C PWM vezérlőre és nagy erősítőjű 5 V -os tápegységre van szüksége, amely elegendő lenne ezeknek a szervóknak egyidejű mozgatásához (tehát legalább 5 A névleges teljesítmény szükséges a stabil működéshez).

Kapcsolatok listája: nRF24 1. tű (GND) - Arduino GNDnRF24 2. tűje (Vcc) - Arduino 3.3vnRF24 3. tűje (Chip engedélyezése) - Arduino D9nRF24 4. tűje (SPI: CS) - Arduino D8nRF24 5. tűje (SPI: SCino) - 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 GN erősítő GN erősítő PCA csatornák 0-4, a jelölésem szerint hüvelykujj - 0 csatorna, mutatóujj - 1 csatorna stb.

5. lépés: EMG érzékelők elhelyezése

EMG érzékelők elhelyezése
EMG érzékelők elhelyezése
EMG érzékelők elhelyezése
EMG érzékelők elhelyezése

Az ésszerű értékek elérése érdekében fontos, hogy az izomtevékenységet rögzítő uECG -eszközöket megfelelő helyre helyezze. Bár sokféle lehetőség lehetséges itt, mindegyik eltérő jelfeldolgozási megközelítést igényel - így a kódommal a legjobb, ha a fotóimhoz hasonló elhelyezést használok. Lehet, hogy nem intuitív, de a hüvelykujj izomjele jobban látható a kar ellenkező oldalán, tehát az egyik érzékelőt ott helyezik el, és mindegyiket a könyök közelében helyezik el (az izmok testének nagy része ezen a területen van, de szeretné ellenőrizni, hogy pontosan hol található a tied - elég nagy az egyéni különbség)

6. lépés: Kód

A főprogram futtatása előtt meg kell találnia az egyes uECG -eszközök egység -azonosítóit (ez a 101 -es sor megjegyzésének megszüntetésével és az eszközök egyesével történő bekapcsolásával történik, többek között látni fogja az aktuális eszköz azonosítóját), és be kell tölteni őket unit_ids tömb (37. sor). Ettől eltekintve a képlet együtthatóival szeretne játszani (129-131. Sor), és ellenőrizze, hogyan néz ki a soros plotteren, mielőtt a robot kezéhez rögzítené.

7. lépés: Eredmények

Néhány körülbelül 2 órás kísérlettel meglehetősen megbízható működést tudtam elérni (a videó egy tipikus esetet mutat be). Nem viselkedik tökéletesen, és ezzel a feldolgozással csak a nyitott és zárt ujjakat ismeri fel (és még az 5 -ös mindegyikét sem, csak 3 izomcsoportot észlel: hüvelykujj, mutató és középső együtt, gyűrű és kisujj együtt). De a jelet elemző "AI" itt 3 sor kódot vesz fel, és minden csatornából egyetlen értéket használ. Úgy gondolom, hogy sokkal többet lehetne tenni a 32 hüvelykes spektrális képek számítógépen vagy okostelefonon történő elemzésével. Ez a verzió is csak 3 uECG eszközt (EMG csatornát) használ. Több csatorna esetén lehetővé kell tenni az igazán összetett minták felismerését - de hát ez a projekt lényege, hogy kiindulópontot nyújtson az érdeklődőknek:) A kézi vezérlés biztosan nem az egyetlen alkalmazás az ilyen rendszerekhez.

Ajánlott: