Obsah:
- Krok 1: POŽADOVANÉ VECI:
- Krok 2: PRINCÍP PRÁCE:
- Krok 3: VLOŽTE ZACHYTENIE A SPRACOVANIE:
- Krok 4:
- Krok 5:
- Krok 6: ČASŤ SPRACOVANIA:
- Krok 7:
- Krok 8:
- Krok 9:
- Krok 10:
- Krok 11:
- Krok 12: Riadenie pohybu:
- Krok 13:
Video: Gesture Hawk: Robot ovládaný gestami pomocou rozhrania založeného na spracovaní obrazu: 13 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Gesture Hawk bol predstavený v TechEvince 4.0 ako jednoduché rozhranie medzi človekom a strojom na spracovanie obrazu. Jeho užitočnosť spočíva v tom, že na ovládanie robotického auta, ktoré funguje na princípe diferenciálneho pohonu, nie sú potrebné žiadne ďalšie senzory ani nositeľné rukavice. V tomto návode vás prevedieme pracovným princípom sledovania objektov a detekcie gest, ktoré sa v systéme používajú. Zdrojový kód tohto projektu je možné stiahnuť z Githubu prostredníctvom odkazu:
Krok 1: POŽADOVANÉ VECI:
- Ovládač motora L298N
- DC motory
- Podvozok robota
- Arduino Uno
- LiPo batérie
- Kábel USB Arduino (dlhý)
- Knižnica OpenCV s Pythonom
Krok 2: PRINCÍP PRÁCE:
Gesture Hawk je trojfázový systém spracovania, ako vidíte na obrázku vyššie.
Krok 3: VLOŽTE ZACHYTENIE A SPRACOVANIE:
Vstupné zachytenie je možné chápať v širších kategóriách uvedených vo vyššie uvedenom diagrame.
Na extrakciu tvaru ruky z prostredia musíme použiť maskovanie alebo filtrovanie určitej farby (v tomto prípade fialovej modrej ‘). Na to musíte previesť obrázok z formátu BGR do formátu HSV, ktorý je možné vykonať pomocou nasledujúceho útržku kódu.
hsv = cv2.cvtColor (rám, cv2. COLOR_BGR2HSV)
Teraz je ďalším krokom nájsť požadovaný rozsah parametrov HSV na extrakciu ruky pomocou masky alebo filtra. Na to je najlepším spôsobom použiť lišty na nájdenie vhodného dosahu. Tu je snímka obrazovky s lištou použitou v tomto projekte.
Krok 4:
Krok 5:
Tu je útržok kódu uvedený nižšie na vytvorenie takého lišty pre stavbu masky:
import cv2
import numpy as npdef nothing (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) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (rám, 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') nižší_R = np. pole ([lH, lS, lV]) higher_R = np.array ([hH, hS, hV]) mask = cv2.inRange (hsv, lower_R, higher_R) res = cv2.bitwise_and (frame, frame, mask = mask) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
Krok 6: ČASŤ SPRACOVANIA:
Získali sme geometrický tvar ruky, teraz je načase ju využiť a použiť na určenie gesta ruky.
Konvexný trup:
Prostredníctvom konvexného trupu sa pokúšame vložiť približný mnohouholník prostredníctvom extrémnych bodov prítomných v tvare. Obrázok vľavo zobrazuje približný mnohouholník, ktorý bol priradený tvaru s konvexnými bodmi označenými červenou farbou.
Konvexné body sú body v tvare, ktoré sú najvzdialenejšie od strany tohto aproximovaného mnohouholníka. Problém s konvexným trupom je však v tom, že počas jeho výpočtu dostaneme pole všetkých konvexných bodov, ale to, čo potrebujeme, je modro špicatý konvexný bod. Povieme vám, prečo je to potrebné.
Aby sme našli tento konvexný bod, musíme použiť vzorec kolmej vzdialenosti na nájdenie vzdialenosti konvexného bodu s najbližšou stranou. Zistili sme, že modrý bod má maximálnu vzdialenosť od boku, a tak sme získali tento bod.
Krok 7:
Krok 8:
Ďalej musíme nájsť sklon čiary spájajúcej špičku palca (alebo extrémny bod) s týmto konvexným bodom s horizontálou.
Krok 9:
Vo vyššie uvedenom prípade by mal byť uhol α v rozsahu 0 až 90 stupňov, ak je gestom otáčanie doľava. To znamená, že tan (α) by mal byť pozitívny.
Krok 10:
Vo vyššie uvedenom prípade by mal byť uhol α medzi 180 až 90 stupňami, ak ide o gesto doprava. To je tan (α) by malo byť negatívne.
Preto, ak je Tan α kladný, potom odbočte doľava. Ak je Tan α záporný, potom odbočte doprava. Teraz je načase zistiť, ako zistiť najdôležitejší príkaz na zastavenie.
Tu sa skúma špecifikovaný pomer (zistený zásahom a pokusom) a v maximálnych prípadoch tento pomer vzdialeností zostáva v tomto konkrétnom rozsahu.
Krok 11:
Gesto pohybu dopredu je nakoniec analyzované funkciou matchShape () v OpenCV. Táto funkcia porovnáva tvar dvoch počítadiel, v tomto prípade medzi príkladom tréningu na thright na vyššie uvedenom obrázku s kontúrou na ľavej strane vyššie uvedeného obrázku. Vráti hodnotu v rozsahu od 0 do 2 alebo 3 podľa variácií prítomných v tvare dvoch obrysov. Pre identicky rovnaký obrys vráti 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0,0)
Tu sú cn1 a cnt2 dva obrysy, ktoré sa majú porovnať.
Krok 12: Riadenie pohybu:
PySerial:
Na konverziu spracovaných údajov na sériové údaje, ktoré boli oznámené Arduino Uno pomocou kábla USB Arduino, sme použili knižnicu pySerial Python. Akonáhle opencv detegovalo konkrétne gesto, vytvorili sme dočasnú premennú povedzme „x“a priradili sme jej jedinečnú hodnotu a previedli sme ju na sériový vstup pomocou nasledujúceho príkazového riadka:-
importovať sériové číslo #importovať knižnicuyserial
serial. Serial ('', baudrate = '9600', timeout = '0') # nastavenie sériového výstupu.. PORT NAME je názov portu, na ktorom bude prebiehať prenos dát.
serial.write (b'x ') # x je abeceda odoslaná na port … b je na prevod tohto reťazca na bajty.
Spracovanie Arduino:
Teraz je arduino kódované tak, že každý iný sériový x je lineárne priradený k určitej činnosti zodpovednej za plynulý pohyb robota (povedzme, že detekcia ľavého gesta spustí motory vpravo, aby odbočili doľava). Pohyb každého kolesa môžeme ovládať translačne aj rotačne správnou zmenou kódu.
L298N Ovládač motora:-
Motor Driver sa používa ako sprostredkovateľ medzi motorom a zdrojom energie, pretože motory nemožno napájať priamo z dôvodu nízkeho napätia. Batéria Li-Po je zapojená do vstupného terminálu 12V a 5V zásuvku arduino zapojíme do vstupnej zásuvky 5V ovládača motora, pričom nakoniec spojíme uzemnenie Li-Po a arduino do spoločnej uzemňovacej zásuvky vodiča motora.
Teraz sú svorky motorov pripojené k uvedeným zásuvkám. Nakoniec pripojíme vstupné terminály pre motor k výstupným zásuvkám PWM arduina, aby sme sa mohli slobodne rozhodnúť pre rotačné a translačné aspekty pohybu.
Odporúča:
Robot ovládaný gestami pomocou Arduina: 7 krokov
Robot ovládaný gestami pomocou Arduina: Roboty sa používajú v mnohých odvetviach, ako je stavebníctvo, armáda, výroba, montáž atď. Roboty môžu byť autonómne alebo poloautonómne. Autonómne roboty nevyžadujú žiadny ľudský zásah a môžu podľa situácie konať samy. Pozri
Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov
Výpočet vlhkosti, tlaku a teploty pomocou BME280 a fotónového rozhrania: Stretávame sa s rôznymi projektmi, ktoré vyžadujú monitorovanie teploty, tlaku a vlhkosti. Uvedomujeme si, že tieto parametre skutočne zohrávajú zásadnú úlohu pri odhade pracovnej účinnosti systému pri rôznych atmosférických podmienkach
Systém rozpoznávania a hasenia požiaru založený na spracovaní obrazu: 3 kroky
Systém rozpoznávania a hasenia požiaru založený na spracovaní obrazu: Ahoj priatelia, toto je systém na zisťovanie požiaru a hasiaci prístroj založený na spracovaní obrazu pomocou Arduina
Autonómne riadenie otáčok motora pomocou systému spätnej väzby z tachometra založeného na infračervenom žiarení: 5 krokov (s obrázkami)
Autonómne riadenie otáčok motora pomocou systému spätnej väzby z tachometra založeného na infračervenom žiarení: Vždy je potrebné automatizovať proces, či už je to jednoduchý/monštruózny. Dostal som nápad urobiť tento projekt z jednoduchej výzvy, s ktorou som sa stretol pri hľadaní metódy na polievanie/zavlažovanie nášho malého kúska zeme. Problém nedostatku súčasného prívodného vedenia
Robotický invalidný vozík ovládaný gestami DTMF a gestami: 7 krokov (s obrázkami)
Robotický invalidný vozík ovládaný gestami DTMF a gestami: V tomto svete je veľa ľudí zdravotne postihnutých. Ich život sa točí okolo kolies. Tento projekt predstavuje prístup k ovládaniu pohybu invalidného vozíka pomocou rozpoznávania gest rúk a DTMF smartfónu