Obsah:
- Krok 1: POŽADOVANÉ VĚCI:
- Krok 2: PRINCIP PRÁCE:
- Krok 3: VSTUPNÍ ZACHYCENÍ A ZPRACOVÁNÍ:
- Krok 4:
- Krok 5:
- Krok 6: ČÁST ZPRACOVÁNÍ:
- Krok 7:
- Krok 8:
- Krok 9:
- Krok 10:
- Krok 11:
- Krok 12: POHYBOVÁ ŘÍZENÍ:
- Krok 13:
Video: Gesture Hawk: Robot ovládaný gesty pomocí rozhraní založeného na zpracování obrazu: 13 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Gesture Hawk byl představen v TechEvince 4.0 jako jednoduché rozhraní pro zpracování obrazu založené na člověku a stroji. Jeho užitečnost spočívá v tom, že k ovládání robotického auta, které pracuje na principu diferenciálního pohonu, nejsou potřeba žádné další senzory ani nositelné kromě rukavice. V tomto pokynu vás provedeme fungujícím principem sledování objektu a detekce gest používaného v systému. Zdrojový kód tohoto projektu lze stáhnout z Githubu prostřednictvím odkazu:
Krok 1: POŽADOVANÉ VĚCI:
- Ovladač motoru L298N
- DC motory
- Robotický podvozek automobilu
- Arduino Uno
- LiPo baterie
- Arduino USB kabel (dlouhý)
- OpenCV knihovna s Pythonem
Krok 2: PRINCIP PRÁCE:
Gesture Hawk je třífázový systém zpracování, jak můžete vidět na výše uvedeném diagramu.
Krok 3: VSTUPNÍ ZACHYCENÍ A ZPRACOVÁNÍ:
Vstupní zachycení lze chápat v širších kategoriích uvedených ve výše uvedeném diagramu.
K extrahování tvaru ruky z prostředí musíme použít maskování nebo filtrování určité barvy (v tomto případě - fialová modrá ‘). Chcete -li to provést, musíte převést obrázek z formátu BGR do formátu HSV, který lze provést pomocí následujícího fragmentu kódu.
hsv = cv2.cvtColor (rámeček, cv2. COLOR_BGR2HSV)
Nyní je dalším krokem nalezení požadovaného rozsahu parametrů HSV k extrakci ruky pomocí masky nebo filtru. K tomu je nejlepším způsobem použití kolejnic pro nalezení vhodného dosahu. Zde je screenshot lišty stopy použité pro tento projekt.
Krok 4:
Krok 5:
Zde je uveden úryvek kódu, který vytvoří takový trackbar pro konstrukci masky:
importovat cv2
import numpy jako npdef nic (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 (snímek, 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: ČÁST ZPRACOVÁNÍ:
Získali jsme geometrický tvar ruky, nyní je čas ji využít a využít ji k určení gesta ruky.
Konvexní obal:
Prostřednictvím konvexního trupu se snažíme vložit přibližný polygon prostřednictvím extrémních bodů přítomných ve tvaru. Na obrázku vlevo je přibližný polygon, který byl tvaru přiřazen s konvexními body označenými červenou barvou.
Konvexní body jsou body ve tvaru, které jsou nejdále od strany tohoto aproximovaného mnohoúhelníku. Problém konvexního trupu je ale v tom, že během jeho výpočtu získáme pole všech konvexních bodů, ale to, co potřebujeme, je modře špičatý konvexní bod. Řekneme vám, proč je to nutné.
Abychom našli tento konvexní bod, musíme použít vzorec kolmé vzdálenosti pro nalezení vzdálenosti konvexního bodu s nejbližší stranou. Zjistili jsme, že modrý špičatý bod má maximální vzdálenost od boku, a tak tento bod získáme.
Krok 7:
Krok 8:
Dále musíme zjistit sklon čáry spojující špičku palce (nebo extrémní bod) s tímto konvexním bodem s horizontálou.
Krok 9:
Ve výše uvedeném případě by úhel α měl být mezi 0 až 90 stupni, pokud je gesto pro zatáčení doleva. To znamená, že tan (α) by měl být kladný.
Krok 10:
Ve výše uvedeném případě by úhel α měl být mezi 180 až 90 stupni, pokud je gesto pro pravé otočení. To je tan (α) by mělo být negativní.
Pokud je tedy Tan α kladný, pak zatočte doleva. Pokud je Tan α záporný, pak zatočte doprava. Nyní je načase zjistit, jak detekovat nejdůležitější příkaz k zastavení.
Zde je zkoumán specifikovaný poměr (zjištěný zásahem a pokusem) a v maximálních případech tento poměr vzdáleností zůstává v tomto konkrétním rozsahu.
Krok 11:
Nakonec je gesto pohybu vpřed analyzováno funkcí matchShape () v OpenCV. Tato funkce porovnává tvar dvou čítačů, v tomto případě mezi příkladem tréninku nahoře na obrázku výše a obrysem na levé straně obrázku výše. Vrací hodnotu v rozmezí od 0 do 2 nebo 3 podle variace přítomné ve tvaru dvou obrysů. Pro identicky stejný obrys vrátí 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0,0)
Zde jsou cn1 a cnt2 dva obrysy, které mají být porovnány.
Krok 12: POHYBOVÁ ŘÍZENÍ:
PySerial:
K převodu zpracovaných dat na sériová data, která byla sdělena Arduino Uno pomocí kabelu USB Arduino, jsme použili knihovnu python PySerial. Jakmile opencv zjistilo konkrétní gesto, vytvořili jsme dočasnou proměnnou „x“a přiřadili jí nějakou jedinečnou hodnotu a převedli ji na sériový vstup pomocí následujícího příkazového řádku:-
import serial #importovat knihovnu Pyserial
serial. Serial ('', baudrate = '9600', timeout = '0') # nastavení sériového výstupu.. PORT NAME je název portu, na kterém bude probíhat přenos dat.
serial.write (b'x ') # x je abeceda odeslaná na port … b je převod tohoto řetězce na bajty.
Zpracování Arduino:
Nyní je arduino kódováno takovým způsobem, že každý jiný sériový x je lineárně mapován na určitou akci zodpovědnou za plynulý pohyb robota (řekněme detekce levého gesta spustí motory vpravo a odbočí doleva). Pohyb každého kola můžeme ovládat translačně i rotačně správnou změnou kódu.
L298N Motorový ovladač:-
Motor Driver se používá jako prostředník mezi motorem a zdrojem energie, protože motory nelze napájet přímo z důvodu nízkého napětí. Baterie Li-Po je připojena ke vstupnímu terminálu 12V a my připojíme 5V zásuvku arduino k 5V vstupní zásuvce ovladače motoru a nakonec připojíme zem Li-Po i arduino do společné zemní zásuvky ovladače motoru.
Nyní jsou svorky motorů připojeny k uvedeným zásuvkám. Nakonec připojíme vstupní terminály pro motor k výstupním zásuvkám PWM arduina, což nám umožní svobodně rozhodnout o rotačních a translačních aspektech pohybu.
Doporučuje:
Robot ovládaný gesty pomocí Arduina: 7 kroků
Robot ovládaný gesty pomocí Arduina: Roboti se používají v mnoha odvětvích, jako je stavebnictví, armáda, výroba, montáž atd. Roboti mohou být autonomní nebo poloautonomní. Autonomní roboti nevyžadují žádný lidský zásah a mohou podle situace jednat sami. Viz
Zpracování obrazu s Raspberry Pi: Instalace OpenCV a separace barev obrazu: 4 kroky
Zpracování obrazu s Raspberry Pi: Instalace OpenCV a separace barev obrazu: Tento příspěvek je prvním z několika tutoriálů pro zpracování obrazu, které je třeba následovat. Podíváme se blíže na pixely, které tvoří obrázek, naučíme se instalovat OpenCV na Raspberry Pi a také píšeme testovací skripty pro zachycení obrázku a také
Robot SCARA: učení o Fowardově a inverzní kinematice !!! (Plot Twist Naučte se, jak vytvořit rozhraní v reálném čase v ARDUINO pomocí ZPRACOVÁNÍ !!!!): 5 kroků (s obrázky)
Robot SCARA: učení o Fowardově a inverzní kinematice !!! (Plot Twist Naučte se, jak vytvořit rozhraní v reálném čase v ARDUINO pomocí ZPRACOVÁNÍ !!!!): Robot SCARA je ve světě průmyslu velmi oblíbeným strojem. Název znamená jak robotické rameno sestavené podle výběru, tak kloubové rameno robota. Je to v zásadě robot se třemi stupni volnosti, který je prvními dvěma ukázkami
Rover ovládaný gesty pomocí akcelerometru a dvojice vysílač-přijímač RF: 4 kroky
Rover ovládaný gesty pomocí akcelerometru a párů vysílačů a přijímačů RF: Hej, někdy jste si přáli postavit rover, který byste mohli řídit jednoduchými gesty rukou, ale nikdy byste neměli odvahu pustit se do složitostí zpracování obrazu a propojení webové kamery s vaším mikrokontrolér, nemluvě o stoupání
Robotický invalidní vozík ovládaný DTMF a gesty: 7 kroků (s obrázky)
Robotický invalidní vozík ovládaný gesty a DTMF: V tomto světě je řada lidí zdravotně postižená. Jejich život se točí kolem kol. Tento projekt představuje přístup ke kontrole pohybu invalidního vozíku pomocí rozpoznávání gest rukou a DTMF chytrého telefonu