Kazalo:
- 1. korak: POTREBNE STVARI:
- 2. korak: DELOVNO NAČELO:
- 3. korak: VSTOPANJE IN OBDELAVA:
- 4. korak:
- 5. korak:
- 6. korak: DELOVNA OBDELAVA:
- 7. korak:
- 8. korak:
- 9. korak:
- 10. korak:
- 11. korak:
- 12. korak: NADZOR GIBANJA:
- 13. korak:
Video: Gesture Hawk: Robot z ročno krmiljeno roko z uporabo vmesnika za obdelavo slik: 13 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Gesture Hawk je bil predstavljen v TechEvince 4.0 kot preprost vmesnik človek-stroj, ki temelji na obdelavi slik. Njegova uporabnost je v tem, da za nadzor robotskega avtomobila, ki deluje na principu diferencialnega pogona, niso potrebni dodatni senzorji ali nošljivi rokavi, razen rokavic. V tem navodilu vas bomo popeljali skozi načelo delovanja za sledenje objektom in zaznavanje kretenj, ki se uporablja v sistemu. Izvorno kodo tega projekta lahko prenesete iz Github-a na povezavi:
1. korak: POTREBNE STVARI:
- L298N Gonilnik motorja
- DC motorji
- Podvozje robotskega avtomobila
- Arduino Uno
- LiPo baterije
- Arduino USB kabel (dolg)
- Knjižnica OpenCV s programom Python
2. korak: DELOVNO NAČELO:
Gesture Hawk je trifazni sistem za obdelavo, kot lahko vidite na zgornjem diagramu.
3. korak: VSTOPANJE IN OBDELAVA:
Zajem vhoda je mogoče razumeti v širših kategorijah, navedenih v zgornjem diagramu.
Če želimo izvleči obliko roke iz okolja, moramo uporabiti prikrivanje ali filtriranje določene barve (v tem primeru - vijolično modro). Če želite to narediti, morate sliko pretvoriti iz zapisa BGR v format HSV, kar lahko storite z uporabo naslednjega odrezka kode.
hsv = cv2.cvtColor (okvir, cv2. COLOR_BGR2HSV)
Naslednji korak je najti želeno območje parametrov HSV, da izvlečete roko prek maske ali filtra. Za to je najboljši način, da uporabite palice za iskanje primernega dosega. Tukaj je posnetek zaslona sledilne vrstice, uporabljene za ta projekt.
4. korak:
5. korak:
Spodaj je naveden delček kode za izdelavo takšne sledi za izdelavo maske:
uvoz cv2
uvoz numpy kot npdef nič (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, nič) cv2. createTrackbar ('h_S', 'image', 255, 255, nothing) cv2.createTrackbar ('h_V', 'image', 255, 255, nothing) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (frame, 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') lower_R = np. matrika ([lH, lS, lV]) višja_R = np. matrika ([hH, hS, hV]) maska = cv2.inRange (hsv, spodnji_R, višji_R) res = cv2. bitni_in (okvir, okvir, maska = maska) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
6. korak: DELOVNA OBDELAVA:
No, imamo geometrijsko obliko roke, zdaj je čas, da jo izkoristimo in uporabimo, da ugotovimo potezo roke.
Konveksni trup:
Skozi konveksni trup poskušamo približati približni poligon preko skrajnih točk v obliki. Slika na levi prikazuje približni poligon, ki je bil dodeljen obliki z izbočenimi točkami, označenimi z rdečo.
Konveksne točke so tiste točke v obliki, ki so najbolj oddaljene od strani tega približnega poligona. Toda problem konveksnega trupa je v tem, da bomo med njegovim izračunom dobili niz vseh konveksnih točk, kar pa potrebujemo, je modro koničasto konveksno točko. Povedali vam bomo, zakaj je to potrebno.
Za iskanje te konveksne točke moramo uporabiti formulo pravokotne razdalje za iskanje razdalje konveksne točke z najbližjo stranjo. Opazili smo, da ima modra koničasta točka največjo razdaljo od strani in tako dobimo to točko.
7. korak:
8. korak:
Nato moramo najti naklon črte, ki združuje konico palca (ali skrajno točko) s to izbočeno točko z vodoravno.
9. korak:
V zgornjem primeru mora biti kot α med 0 in 90 stopinj, če je poteza za ovinek v levo. To pomeni, da mora biti tan (α) pozitiven.
10. korak:
V zgornjem primeru mora biti kot α med 180 in 90 stopinjami, če je poteza za desni zavoj. To pomeni, da mora biti tan (α) negativen.
Če je torej Tan α pozitiven, zavijte levo. Če je Tan α negativen, zavijte desno. Zdaj je čas, da vidimo, kako odkriti najpomembnejši ukaz stop.
Tu se preveri določeno razmerje (ugotovljeno z zadetkom in poskusom), v največjih primerih pa to razmerje razdalj ostane v tem območju.
11. korak:
Nazadnje potezo gibanja naprej analizira funkcija matchShape () v OpenCV. Ta funkcija v tem primeru primerja obliko dveh števcev med primerom vadbe na trici na zgornji sliki s konturo na levi strani zgornje slike. Vrne vrednost v razponu od 0 do 2 ali 3 glede na variacijo v obliki dveh kontur. Za enako konturo vrne 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Tu sta cn1 in cnt2 dve konturi, ki ju je treba primerjati.
12. korak: NADZOR GIBANJA:
PySerial:
Uporabili smo knjižnico PySerial za pretvorbo obdelanih podatkov v serijske podatke, ki so bili posredovani Arduino Uno prek kabla USB Arduino. Ko je opencv odkril določeno gesto, smo ustvarili začasno spremenljivko, recimo "x", ji dodelili neko edinstveno vrednost in jo pretvorili v serijski vnos z naslednjo ukazno vrstico:-
import serial #to import Pyserial library
serial. Serial ('', baudrate = '9600', timeout = '0') # nastavitev serijskega izhoda.. PORT NAME je ime vrat, prek katerih bo prišlo do prenosa podatkov.
serial.write (b'x ') # x je abeceda, poslana na vrata … b je pretvorba tega niza v bajte.
Arduino obdelava:
Zdaj je arduino kodiran tako, da je vsak drugačen serijski x linearno preslikan na določeno dejanje, ki je odgovorno za nemoteno gibanje robota (recimo, da bo zaznavanje leve geste sprožilo motorje na desni, da zavijejo levo). Gibanje vsakega kolesa lahko nadziramo translacijsko in rotacijsko, tako da ustrezno spremenimo kodo.
L298N Gonilnik motorja:-
Motor Driver se uporablja kot posrednik med motorjem in virom energije, saj motorjev zaradi nizkih napetosti ni mogoče neposredno napajati. Li-Po baterija je priključena na njegov 12V vhodni priključek in arduinovo 5V vtičnico priključimo na 5V vhodno vtičnico gonilnika motorja, ki končno poveže ozemljitev Li-Po in arduino v skupni ozemljitveni vtičnici gonilnika motorja.
Sedaj so priključki motorjev priključeni v danih vtičnicah. Nazadnje priključimo vhodne sponke za motor na izhodne vtičnice PWM arduina, s čimer se lahko svobodno odločimo o rotacijskih in prevodnih vidikih gibanja.
Priporočena:
Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika .: 6 korakov
Izračun vlažnosti, tlaka in temperature z uporabo BME280 in fotonskega vmesnika. Naletimo na različne projekte, ki zahtevajo spremljanje temperature, tlaka in vlažnosti. Tako se zavedamo, da imajo ti parametri dejansko bistveno vlogo pri oceni delovne učinkovitosti sistema pri različnih atmosferskih pogojih
Digitalno krmiljeno linearno napajanje: 6 korakov (s slikami)
Digitalno krmiljeno linearno napajanje: V mojih letih pred približno 40 leti sem ustvaril dvojni linearni napajalnik. Shematski diagram sem dobil iz revije z imenom Elektuur, ki se danes imenuje Nizozemska Elektor. Ta napajalnik je uporabil en potenciometer za nastavitev napetosti
Zamahnite z roko, da nadzirate robotsko roko OWI Brez priloženih strun: 10 korakov (s slikami)
Zamahnite z roko, da nadzirate robotsko roko OWI … Brez priloženih nizov: IDEJA: Na spletnem mestu Instructables.com (od 13. maja 2015) obstajajo še vsaj 4 drugi projekti, ki se nanašajo na spreminjanje ali nadzor robotske roke OWI. Ni presenetljivo, saj je tako odličen in poceni robotski komplet za igranje. Ta projekt je podoben v
Raspberry Pi krmiljeno škarjasto dvigalo: 17 korakov (s slikami)
Raspberry Pi krmiljeno škarjasto dvigalo: Zakaj škarjasto dvigalo? Zakaj ne! To je kul in zabaven projekt za gradnjo. Pravi razlog zame je dvig kamer v mojem projektu Great Mojave Rover. Želim, da se kamere dvignejo nad roverjem in zajamejo slike okolice. Potreboval pa sem
Uvod v obdelavo slik: Pixy in njene alternative: 6 korakov
Uvod v obdelavo slik: Pixy in njene alternative: V tem članku bomo razložili pomen digitalne obdelave slik (DIP) in razloge za uporabo strojne opreme, kot je Pixy, in drugih orodij za izdelavo postopkov na slikah ali videoposnetkih. Na koncu tega članka boste izvedeli: Kako nastane digitalna slika.