Innholdsfortegnelse:
- Trinn 1: KRAV:
- Trinn 2: ARBEIDSPRINSIPP:
- Trinn 3: INPUT FANGST OG BEHANDLING:
- Trinn 4:
- Trinn 5:
- Trinn 6: BEHANDLINGSDEL:
- Trinn 7:
- Trinn 8:
- Trinn 9:
- Trinn 10:
- Trinn 11:
- Trinn 12: BEVEGELSESKONTROLL:
- Trinn 13:
Video: Gesture Hawk: Hand Gesture Controlled Robot Using Image Processing Based Interface: 13 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Gesture Hawk ble vist frem i TechEvince 4.0 som et enkelt bildebehandlingsbasert grensesnitt mellom mennesker og maskiner. Dens nytte ligger i det faktum at det ikke er nødvendig med flere sensorer eller bærbare unntatt en hanske for å kontrollere robotbilen som kjører på differensialdriftsprinsipp. I denne instruksen tar vi deg gjennom arbeidsprinsippet bak objektsporing og gestdeteksjon som brukes i systemet. Kildekoden til dette prosjektet kan lastes ned fra Github via lenke:
Trinn 1: KRAV:
- L298N motor driver
- DC Motors
- Robotbilchassis
- Arduino Uno
- LiPo batterier
- Arduino USB -kabel (lang)
- OpenCV -bibliotek med Python
Trinn 2: ARBEIDSPRINSIPP:
Gesture Hawk er et trefaset behandlingssystem som du kan se i diagrammet ovenfor.
Trinn 3: INPUT FANGST OG BEHANDLING:
Inndatafangst kan forstås i de større kategoriene gitt i diagrammet ovenfor.
For å trekke ut håndformen fra miljøet, må vi bruke maskering eller filtrering av en bestemt farge (i dette tilfellet - fiolettblått). For å gjøre det må du konvertere bildet fra BGR til HSV -format som kan gjøres ved å bruke følgende kodebit.
hsv = cv2.cvtColor (ramme, cv2. COLOR_BGR2HSV)
Nå er neste trinn å finne ønsket utvalg av HSV -parametere for å trekke ut hånden via maske eller filter. For dette er den beste måten å bruke sporstenger for å finne et passende område. Her er skjermbildet av en sporbar som ble brukt til dette prosjektet.
Trinn 4:
Trinn 5:
Her er det en kodebit nedenfor for å lage en slik sporbar for maskekonstruksjon:
importer cv2
importer numpy som npdef ingenting (x): pass cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, ingenting) cv2.createTrackbar ('l_S ',' image ', 50, 255, ingenting) cv2.createTrackbar (' l_V ',' image ', 50, 255, ingenting) cv2.createTrackbar (' h_H ',' image ', 130, 255, ingenting) cv2. createTrackbar ('h_S', 'image', 255, 255, ingenting) cv2.createTrackbar ('h_V', 'image', 255, 255, ingenting) mens (1): _, frame = img.read ()
hsv = cv2.cvtColor (ramme, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackbarPos ('l_ 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') lavere_R = np. array ([lH, lS, lV]) higher_R = np.array ([hH, hS, hV]) mask = cv2.inRange (hsv, lower_R, higher_R) res = cv2.bitwise_and (ramme, ramme, maske = maske) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF if k == 27: break cv2.destroyAllWindows ()
Trinn 6: BEHANDLINGSDEL:
Vel, vi har den geometriske formen på en hånd, nå er det på tide å utnytte den og bruke den til å finne ut håndbevegelsen.
Konveks skrog:
Gjennom konveks skrog prøver vi å passe en omtrentlig polygon via ekstreme punkter i formen. Bildet til venstre viser den omtrentlige polygonen som hadde blitt tildelt formen med de konvekse punktene merket med rødt.
Konvekse punkter er de punktene i formen som er lengst fra en side av denne tilnærmede polygonen. Men problemet med konveks skrog er at vi under beregningen vil få en rekke med alle de konvekse punktene, men det vi trenger er det blåspisse konvekse punktet. Vi vil fortelle deg hvorfor det er nødvendig.
For å finne dette konvekse punktet, må vi bruke formelen for vinkelrett avstand for å finne avstanden til det konvekse punktet med nærmeste side. Vi observerte at det blå spisse punktet har maksimal avstand fra siden, og så får vi dette punktet.
Trinn 7:
Trinn 8:
Deretter må vi finne skråningen av linjen som forbinder tuppen av tommelen (eller ekstrempunktet) til dette konvekse punktet med horisontal.
Trinn 9:
I tilfellet ovenfor bør vinkelen α være mellom 0 og 90 grader hvis bevegelsen er for venstresving. Det er tan (α) skal være positivt.
Trinn 10:
I tilfellet ovenfor skal vinkelen α være mellom 180 og 90 grader hvis bevegelsen er for høyresving. Det er tan (α) bør være negativ.
Derfor, hvis Tan α er positiv, så venstresving. Hvis Tan α er negativ, så høyresving. Nå er det på tide å se hvordan du oppdager den viktigste stoppkommandoen.
Her blir et spesifisert forhold (funnet ved treff og forsøk) undersøkt, og i maksimale tilfeller forblir dette avstandsforholdet i dette bestemte området.
Trinn 11:
Til slutt blir bevegelsesbevegelsen forover analysert av matchShape () -funksjonen i OpenCV. Denne funksjonen sammenligner formen på to tellere, i dette tilfellet, mellom treningseksempel på vekt i bildet ovenfor med konturen i venstre side av bildet ovenfor. Den returnerer en verdi fra 0 til 2 eller 3, i henhold til variasjonen som er tilstede i form av to konturer. For identisk samme kontur returnerer den 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Her er cn1 og cnt2 de to konturene som skal sammenlignes.
Trinn 12: BEVEGELSESKONTROLL:
PySerial:
Vi brukte PySerial -biblioteket til python for å konvertere de behandlede dataene til serielle data som ble kommunisert til Arduino Uno via Arduino USB -kabel. Når en bestemt gest ble oppdaget av opencv, opprettet vi en midlertidig variabel som sa 'x' og tildelte den en unik verdi og konverterte den til serieinngang ved å bruke følgende kommandolinje:-
importer serie #for å importere Pyserial -bibliotek
serial. Serial ('', baudrate = '9600', timeout = '0') # konfigurering av serieutgang.. PORTNAVN er navnet på porten som dataoverføring vil skje med.
serial.write (b'x ') # x er alfabetet som sendes til porten … b er å konvertere denne strengen til byte.
Arduino behandling:
Nå er arduino kodet på en slik måte at hver forskjellige seriell x blir lineært kartlagt til en viss handling som er ansvarlig for en jevn bevegelse av roboten (si at deteksjon av venstre gest vil utløse motorene til høyre for å svinge til venstre). Vi kan kontrollere bevegelsen til hvert hjul både translasjonelt og rotasjonsmessig ved å endre koden skikkelig.
L298N Motordriver:-
Motordriver brukes som formidler mellom motor og strømkilde siden motorer ikke kan drives direkte på grunn av lav spenning. Li-Po-batteri er koblet til sin 12V-inngangsterminal, og vi kobler arduinos 5V-kontakt til motordriverens 5V-inngangskontakt som til slutt kobler bakken til Li-Po, så vel som arduino i en felles bakke for motordriveren.
Nå er terminalene til motorene koblet til de angitte kontaktene. Til slutt kobler vi inngangsterminaler for motor til PWM -utganger på arduino, slik at vi kan bestemme rotasjons- og oversettelsesaspektene ved bevegelse nøyaktig.
Anbefalt:
Alexa Based Voice Controlled Rocket Launcher: 9 trinn (med bilder)
Alexa Based Voice Controlled Rocket Launcher: Når vintersesongen nærmer seg; kommer den tiden av året når lysfestivalen feires. Ja, vi snakker om Diwali som er en ekte indisk festival feiret over hele verden. I år er Diwali allerede over, og ser folk
Hand Gesture Controlled Chrome Dinosaur Gadget / How to Make This / #smartcreativity: 14 Steps
Hand Gesture Controlled Chrome Dinosaur Gadget / How to Make This / #smartcreativity: Hello Friends, I denne opplæringen skal jeg vise deg et veldig eksklusivt prosjekt.SO, i dag vil jeg vise deg hvordan du kontrollerer Chrome Dinosaur Game med håndbevegelsen din veldig lett. Hvis du vil bruke denne teknologien til å kontrollere krom DINO, vil du falle
IOT BASERT GESTURE CONTROLLED ROBOT: 10 trinn (med bilder)
IOT BASERT GESTURE CONTROLLED ROBOT: Denne roboten er en geststyrt robot som kan styres hvor som helst ved hjelp av internett. I dette prosjektet brukes akselerometer MPU 6050 for å samle inn data om håndbevegelsene våre. Den måler akselerasjonen av hånden vår i tre
ESP 8266 Nodemcu Ws 2812 Neopixel Based LED MOOD Lamp Controlled Using Webserver: 6 Steps
ESP 8266 Nodemcu Ws 2812 Neopixel Based LED MOOD Lamp Controlled Using Webserver: I dette prosjektet lager vi en MOOD lampe fra nodemcu & neopixel og som kan kontrolleres av hvilken som helst nettleser ved hjelp av lokal webserver
Third Hand ++: en flerbrukshjelpende hånd for elektronikk og annet delikat arbeid. 14 trinn (med bilder)
Third Hand ++: en flerbrukshjelpende hånd for elektronikk og annet delikat arbeid.: Tidligere har jeg brukt de tredje hendene/hjelpende hendene som er tilgjengelig i kjedeelektronikkbutikker og har blitt frustrert over brukervennligheten. Jeg kunne aldri få klippene akkurat der jeg ville ha dem, eller det tok mer tid enn det egentlig burde konfigurere