Tartalomjegyzék:
- Kellékek
- 1. lépés: A jelek megszerzése
- 2. lépés: Egyszerűsített jel
- 3. lépés: Jelfeldolgozás
- 4. lépés: Sémák
- 5. lépés: EMG érzékelők elhelyezése
- 6. lépés: Kód
- 7. lépés: Eredmények
Videó: Robotos kézi vezérlés EMG -vel: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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
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
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
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
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:
Kézi BASIC számítógép: 6 lépés (képekkel)
Kézi BASIC számítógép: Ez az utasítás leírja a BASIC -t futtató kis kézi számítógép építésének folyamatát. A számítógép az ATmega 1284P AVR chip köré épült, amely a számítógép buta nevét is inspirálta (HAL 1284). Ezt a konstrukciót HEAVILY ihlette
ESP8266 RGB LED STRIP WIFI vezérlés - NODEMCU IR távirányítóként a Wifi -n keresztül vezérelt LED szalaghoz - RGB LED STRIP okostelefon -vezérlés: 4 lépés
ESP8266 RGB LED STRIP WIFI vezérlés | NODEMCU IR távirányítóként a Wifi -n keresztül vezérelt LED szalaghoz | RGB LED STRIP okostelefon -vezérlés: Sziasztok, ebben az oktatóanyagban megtanuljuk, hogyan kell használni a nodemcu -t vagy az esp8266 -ot infravörös távirányítóként az RGB LED -szalag vezérléséhez, és a Nodemcu -t okostelefonon keresztül wifi -n keresztül kell irányítani. Tehát alapvetően okostelefonjával vezérelheti az RGB LED STRIP -et
Pacsi! - Robotos kéz: 5 lépés
Pacsi! - Robotos kéz: Egy napon a Principles of Engineering osztályban elhatároztuk, hogy összetett gépeket készítünk VEX alkatrészekből. Ahogy elkezdtük építeni a mechanizmusokat, nehezen tudtunk több összetett összetevőt kezelni, amelyeket össze kellett szerelni. Ha csak valamikor
Robotos ablakredőny: 5 lépés
Robotos működtetésű ablaktáblák: Ez az oktatóanyag a Dél -Floridai Egyetem (www.makecourse.com) Makecourse projektkövetelményének teljesítésével jött létre. Ez a projekt olyan automatikus redőnyökre vonatkozik, amelyek Bluetooth -on keresztül vezérelhetők a telefonról. Az S
Gesztus és hangvezérelt vezeték nélküli robot kézi vezérlés: 7 lépés (képekkel)
Gesztus és hang által vezérelt vezeték nélküli robot kézi vezérlés: Alapvetően ez volt a főiskolai projektünk, és a projekt benyújtására rendelkezésre álló idő hiányában elfelejtettünk néhány lépést lefényképezni. Azt a kódot is megterveztük, amellyel egyszerre vezérelhetjük ezt a robotkezetet gesztus és hang segítségével, de az