Tartalomjegyzék:
- 1. lépés: SZÜKSÉGES DOLGOK:
- 2. lépés: MUNKAELV:
- 3. lépés: BEMENET ELKÉSZÍTÉSE ÉS FELDOLGOZÁSA:
- 4. lépés:
- 5. lépés:
- 6. lépés: FELDOLGOZÁSI RÉSZ:
- 7. lépés:
- 8. lépés:
- 9. lépés:
- 10. lépés:
- 11. lépés:
- 12. lépés: MOTION CONTROL:
- 13. lépés:
Videó: Gesztus Hawk: Kézi gesztusvezérelt robot képfeldolgozási felületen: 13 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
A Gesture Hawk-ot a TechEvince 4.0-ban mutatták be, mint egy egyszerű képfeldolgozáson alapuló ember-gép felületet. Hasznossága abban rejlik, hogy a differenciálhajtás elvén futó robotkocsi vezérléséhez nincs szükség további érzékelőkre vagy viselhető kesztyűn kívül. Ebben az utasításban végigvezetjük a rendszerben használt objektumkövetés és gesztusérzékelés működési elvén. A projekt forráskódja letölthető a Github webhelyről a következő linkről:
1. lépés: SZÜKSÉGES DOLGOK:
- L298N motorvezérlő
- DC motorok
- Robot autó alváz
- Arduino Uno
- LiPo akkumulátorok
- Arduino USB kábel (hosszú)
- OpenCV könyvtár Python segítségével
2. lépés: MUNKAELV:
A Gesture Hawk egy háromfázisú feldolgozó rendszer, amint az a fenti ábrán látható.
3. lépés: BEMENET ELKÉSZÍTÉSE ÉS FELDOLGOZÁSA:
A bemeneti rögzítés a fenti diagramban megadott szélesebb kategóriákban érthető.
Ahhoz, hogy a kéz formáját kivonjuk a környezetből, meghatározott színű maszkot vagy szűrést kell használnunk (ebben az esetben - ibolyakék’). Ehhez konvertálnia kell a képet BGR -ből HSV formátumba, amelyet a következő kódrészlet segítségével lehet megtenni.
hsv = cv2.cvtColor (keret, cv2. COLOR_BGR2HSV)
Most a következő lépésben meg kell találni a kívánt HSV paraméterek tartományát, hogy maszkon vagy szűrőn keresztül ki lehessen húzni a kezet. Ehhez a legjobb módszer a sávok használata a megfelelő tartomány megtalálásához. Itt a képernyőkép a projekthez használt sávról.
4. lépés:
5. lépés:
Itt egy kódrészlet található az alábbi sáv létrehozásához a maszképítéshez:
import cv2
importálja a numpy -t npdef semmit (x): pass cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, nothing) cv2.createTrackbar ('l_S ',' image ', 50, 255, nothing) cv2.createTrackbar (' l_V ',' image ', 50, 255, nothing) cv2.createTrackbar (' h_H ',' image ', 130, 255, nothing) cv2. createTrackbar ('h_S', 'image', 255, 255, nothing) cv2.createTrackbar ('h_V', 'image', 255, 255, nothing), miközben (1): _, frame = img.read ()
hsv = cv2.cvtColor (keret, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackbarPos ('l_V', 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') alsó_R = np. tömb ([lH, lS, lV]) magasabb_R = np.tömb ([hH, hS, hV]) maszk = cv2.inRange (hsv, alsó_R, magasabb_R) res = cv2.bitwise_and (keret, keret, maszk = maszk) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
6. lépés: FELDOLGOZÁSI RÉSZ:
Nos, megkaptuk a kéz geometriai alakját, most itt az ideje, hogy ezt kihasználjuk és felhasználjuk a kézmozdulat kitalálásához.
Domború hajótest:
A domború hajótesten keresztül megpróbálunk hozzárendelni egy hozzávetőleges sokszöget az alak szélső pontjain keresztül. A bal oldali kép a hozzávetőleges sokszöget mutatja, amelyet az alakhoz rendeltek, és a domború pontokat pirossal jelöltük.
A domború pontok az alak azon pontjai, amelyek a legközelebbi sokszög oldalától legtávolabb vannak. A domború hajótest problémája azonban az, hogy a számítás során az összes domború pont tömbjét kapjuk, de a kék hegyes domború pontra van szükségünk. Elmondjuk, miért van rá szükség.
Ennek a domború pontnak a megtalálásához a merőleges távolság képletét kell alkalmaznunk a konvex pont legközelebbi oldallal való távolságának megállapításához. Megfigyeltük, hogy a kék hegyű pont maximális távolságot mutat az oldaltól, és így megkapjuk ezt a pontot.
7. lépés:
8. lépés:
Ezután meg kell találnunk a hüvelykujj hegyét (vagy a szélső pontot) ehhez a vízszintes domború ponthoz kapcsolódó vonal dőlését.
9. lépés:
A fenti esetben az α szögnek 0 és 90 fok között kell lennie, ha a gesztus balra fordul. Ez azt jelenti, hogy a tan (α) pozitív legyen.
10. lépés:
A fenti esetben az α szögnek 180 és 90 fok között kell lennie, ha a gesztus jobbra fordul. Vagyis tan (α) legyen negatív.
Ezért, ha Tan α pozitív, akkor balra fordul. Ha Tan α negatív, akkor jobbra. Itt az ideje, hogy megtudja, hogyan lehet észlelni a legfontosabb stop parancsot.
Itt egy meghatározott arányt (találat és próba) találnak, és a legtöbb esetben ez a távolságarány ebben a tartományban marad.
11. lépés:
Végül az előrefelé irányuló mozgást az OpenCV matchShape () függvénye elemzi. Ez a függvény két számláló alakját hasonlítja össze, ebben az esetben a fenti képen a szorításra gyakorolt példa és a fenti kép bal oldalán lévő kontúr között. 0 és 2 vagy 3 közötti értéket ad vissza, két kontúr alakjában. Azonos kontúr esetén 0 -t ad vissza.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Itt a cn1 és a cnt2 a két kontúr, amelyeket össze kell hasonlítani.
12. lépés: MOTION CONTROL:
PySerial:
A PySerial python könyvtárát használtuk fel arra, hogy a feldolgozott adatokat soros adatokká alakítsuk át az Arduino Uno -hoz az Arduino USB -kábelen keresztül továbbítva. Miután az opencv észlelt egy adott gesztust, létrehoztunk egy ideiglenes változót, mondjuk az „x” -t, és hozzárendeltünk néhány egyedi értéket, és a következő parancssort használva konvertáltuk soros bemenetre:-
sorozat sorozat importálása #Pyserial könyvtár importálásához
serial. Serial ('', baudrate = '9600', timeout = '0') # soros kimenet beállítása.. PORT NÉV annak a portnak a neve, amelyen keresztül adatátvitel történik.
serial.write (b'x ') # x a portra küldött ábécé… b a karakterlánc bájtra konvertálása.
Arduino feldolgozás:
Most az arduino kódolása oly módon történik, hogy minden egyes soros x lineárisan le van képezve a robot zökkenőmentes mozgásáért felelős műveletre (mondjuk a bal oldali gesztus észlelése a jobb oldali motorokat balra kanyarítja). A kód helyes megváltoztatásával irányíthatjuk az egyes kerekek mozgását fordítva és forgásirányban is.
L298N Motor meghajtó:-
A motorvezérlő közvetítőként szolgál a motor és az áramforrás között, mivel a motorokat nem lehet közvetlenül táplálni az alacsony feszültség miatt. A Li-Po akkumulátort a 12 V-os bemeneti csatlakozójához csatlakoztatjuk, és az arduino 5 V-os aljzatát a motorvezérlő 5 V-os bemeneti aljzatához csatlakoztatjuk, amely végül a Li-Po földjét és az arduino-t csatlakoztatja a motorvezérlő közös földelő aljzatába.
Most a motorok kapcsai a megadott aljzatokon vannak csatlakoztatva. Végül csatlakoztatjuk a motor bemeneti termináljait az arduino PWM kimeneti aljzataihoz, így szabadon dönthetünk a mozgás forgási és fordítási szempontjairól.
Ajánlott:
Gesztus robot házi Arduino -val: 7 lépés
Gesztusrobot házi Arduino -val: Ebben a bejegyzésben elmagyarázzuk, hogyan lehet lépésről lépésre gesztusvezérlő autót építeni saját házi Arduino -val. Ez magában foglalja a működését is; az összes mechanika, alkatrész, stb. Reméljük, hogy tetszeni fog nekünk, és kiderítettük, mi a tudomány
Gesztusvezérelt robot építése: 4 lépés (képekkel)
Gesztusvezérelt robot építése: Ebben az utasításban egy Arcbotics Sparki robotot építünk, amely 3D -s gesztusokkal vezérelhető. A projekt szép tulajdonsága, hogy nincs szükség további eszközre, például okostelefonra vagy kesztyűre a robot vezérléséhez. Csak mozgassa a kezét az eleje fölé
DTMF és gesztusvezérelt robot kerekesszék: 7 lépés (képekkel)
DTMF és gesztusvezérelt robotkerekek: Ebben a világban számos ember fogyatékos. Életük a kerekek körül forog. Ez a projekt egy megközelítést mutat be a kerekesszék mozgásának vezérléséhez kézmozdulatok felismerése és egy okostelefon DTMF használatával
RC autó vezérlése webes felületen keresztül: 6 lépés (képekkel)
RC autó vezérlése webes felületen keresztül: Hi barátok, Ebben az oktatható útmutatóban megtanítom Önt, hogy készítsen RC autót egy webes felületen keresztül. Vezeték nélkül irányítjuk saját szerverünkön keresztül. A bemutatott módszerrel nem kell RC vevőt használnunk. Az internet tárolásához
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