Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Introduksjon
- Trinn 2: Materialer og myke varer som brukes i dette prosjektet
- Trinn 3: Hva skal jeg gjøre?
- Trinn 4: Skjemaer
- Trinn 5: Hvordan gjør du?
- Trinn 6: Pseudokode
- Trinn 7: Kode
- Trinn 8: Eksterne lenker
Video: Ball Tracking Robot: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Så i dette skal jeg fortelle hvordan du lager en ballsporingsrobot som er en robot som vil identifisere en ball og følge den. Det er i utgangspunktet en automatisert overvåkingsteknikk som kan brukes i den moderne verden. Så la oss bare hoppe inn og begynne å bygge …
MERK: Denne deloppgaven ble levert til Deakin University, School of IT, SIT-210 Embedded Systems Development
Rekvisita
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Trinn 1: Introduksjon
Dagens overvåking gir en stor ulempe som er at den hviler på involvering av mennesker som som vi alle vet lett kan bli distrahert, så det var av største viktighet å oppdage et system som kan overvåke regioner autonomt og kontinuerlig. Og vi ønsker også å identifisere ubehagelige eller uønskede ting og farer samtidig som vi tar beslutninger og reagerer deretter. Så objektsporing med bruk av intelligente systemer og datamaskiner er avgjørende og avgjørende for å oppnå automatisk overvåkning.
Ethvert utendørs overvåkingssystem må kunne spore objekter som beveger seg i synsfeltet, klassifisere disse objektene og oppdage noen av aktivitetene. Jeg har utviklet en metode for å spore og klassifisere disse objektene i realistiske scenarier. Objektsporing i et enkelt kamera utføres ved hjelp av bakgrunnssubtraksjon, etterfulgt av regionskorrespondanse. Dette tar hensyn til flere signaler, inkludert hastigheter, størrelser og avstander til avgrensningsbokser.
Trinn 2: Materialer og myke varer som brukes i dette prosjektet
Maskinvarekomponenter som brukes:
- Bringebær Pi (x1)
- Raspberry Pi kameramodul (x1)
- Ultralydsensor (x3)
- SparkFun Dual H-Bridge motordrivere L298 (x1)
- Likestrømsmotor (x1)
- Brødbrett (x1)
- Koble til ledninger
Programvare som brukes:
OpenCV
Hånd verktøy:
Python
Trinn 3: Hva skal jeg gjøre?
Ethvert utendørs overvåkingssystem må kunne spore objekter som beveger seg i synsfeltet, klassifisere disse objektene og oppdage noen av aktivitetene. Jeg har utviklet en metode for å spore og klassifisere disse objektene i realistiske scenarier. Objektsporing i et enkelt kamera utføres ved hjelp av bakgrunnssubtraksjon, etterfulgt av regionskorrespondanse. Dette tar hensyn til flere signaler, inkludert hastigheter, størrelser og avstander til avgrensningsbokser.
Avgjørende ting mens du oppdaget bilder ramme for ramme var å unngå rammefall, da kan boten gå i en limbo -tilstand hvis boten ikke merker bevegelsesretningen til ballen på grunn av rammedråper. Hvis ballen går utenfor kameraets rekkevidde, vil den gå inn i det vi kaller en limbo-tilstand, i så fall gjør boten en 360-graders sving for å se rommet rundt det til ballen kommer tilbake i rammen av kameraet og deretter begynne å bevege seg i retning.
For bildeanalysen tar jeg hver ramme og maskerer den med den fargen som trengs. Så finner jeg alle konturene og finner den største blant dem og binder den i et rektangel. Og vis rektangelet på hovedbildet og finn koordinatene til midten av rektanglet.
Til slutt prøver boten å bringe ballens koordinater til midten av koordinataksen. Slik fungerer roboten. Dette kan forbedres ytterligere ved å bruke en IoT -enhet som en fotonpartikkel som lar deg bli informert når en ting blir oppdaget og at roboten følger den eller når roboten har mistet sporet av den og nå går tilbake til basen.
For bildebehandling må du installere OpenCV -programvare på bringebær -pi, noe som var ganske vanskelig for meg.
Du kan få all nødvendig informasjon for å installere OpenCV via denne lenken: klikk her
Trinn 4: Skjemaer
Over har jeg gitt skjemaene for prosjektet mitt, og sammen med det er Printed Circuit Board (PCB).
Og her er noen av de viktigste forbindelsene du må gjøre:
• Først og fremst er Raspberry Pi -kameramodulen direkte koblet til Raspberry Pi.
• Ultralydsensorene VCC er koblet til den vanlige terminalen, det samme er med GND (jord), og de resterende to portene på ultralydsensoren er koblet til GPIO -pinnene på Raspberry Pi.
• Motorene er tilkoblet ved hjelp av H-broen.
• Strømmen leveres med batteriet.
Jeg har også lagt til videoen som kan hjelpe med forståelsen av hvordan ultralydsensoren fungerer og hvordan den fungerer.
og du kan også følge denne lenken hvis du ikke finner videoen ovenfor.
Trinn 5: Hvordan gjør du?
Jeg laget dette prosjektet som skildrer en grunnleggende robot som kan spore en ball. Roboten bruker et kamera for å gjøre bildebehandling ved å ta rammer og spore ballen. For å spore ballen brukes forskjellige funksjoner som farge, størrelse, form.
Roboten finner en hardkodet farge og søker deretter etter ballen med den fargen og følger den. Jeg har valgt Raspberry Pi som mikrokontroller i dette prosjektet fordi det lar oss bruke kameramodulen og gir stor fleksibilitet i koden ettersom den bruker python-språk som er veldig brukervennlig, og det lar oss også bruke OpenCV-bibliotek for å analysere bildene.
En H-bro har blitt brukt til å bytte rotasjonsretning for motorer eller stoppe dem.
For bildeanalysen tar jeg hver ramme og maskerer den med den fargen som trengs. Så finner jeg alle konturene og finner den største blant dem og binder den i et rektangel. Og vis rektangelet på hovedbildet og finn koordinatene til midten av rektanglet.
Til slutt prøver boten å bringe ballens koordinater til midten av koordinataksen. Slik fungerer roboten. Dette kan forbedres ytterligere ved å bruke en IoT -enhet som en fotonpartikkel som lar deg bli informert når en ting blir oppdaget og at roboten følger den eller når roboten har mistet sporet av den og nå går tilbake til basen. Og for å gjøre dette bruker vi en online programvareplattform som kobler enhetene og lar dem utføre visse handlinger på spesifikke utløsere som er IFTTT -utløsere.
Trinn 6: Pseudokode
Her er pseudokoden for deteksjonsdelen ved hjelp av OpenCV der vi oppdager en ball.
Trinn 7: Kode
Over er utdragene av koden, og nedenfor er den detaljerte beskrivelsen av koden.
# importer de nødvendige pakkene
VI IMPORTERER ALLE DE NØDVENDIGE PAKKENE
fra picamera.array import PiRGBArray #Ettersom det er et oppløsningsproblem i bringebær pi, vil ikke være i stand til å fange rammer av VideoCapture
fra picamera import PiCamera import RPi. GPIO som GPIO import tid import numpy som np
NÅ SETTER VI MASKINEN OG TILDELER PINNENE TILKOBLET PÅ RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #venstre ultralydssensor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Front ultralydssensor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Høyre ultralydssensor
GPIO_ECHO3 = 35
MOTOR1B = 18 #venstre motor
MOTOR1E = 22
MOTOR2B = 21 #Høyre motor
MOTOR2E = 19
LED_PIN = 13 #Hvis den finner ballen, vil den lyse lysdioden
# Sett pinner som utgang og inngang
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Sett utløseren til Falsk (lav)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
DENNE FUNKSJONEN BRUKER ALLE ULTRASONISKE SENSORER SAMLER AVSTANDEN FRA FORMÅLENE RUNDT VÅR BOT
# La modulen bosette seg
def ekkolodd (GPIO_TRIGGER, GPIO_ECHO): start = 0 stopp = 0 # Sett pinner som utgang og inngang GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Sett trigger til False (Lav) GPIO.output (GPIO_TRIGGER, False) #La modulen avregne time.sleep (0.01) #while distance> 5: #Send 10us puls for å utløse GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time () mens GPIO.input (GPIO_ECHO) == 0 og time.time ()
FÅ DC -MOTORENE I ARBEID MED RASPBERRY PI
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINISERING AV FUNKSJONER FOR Å BRUKE ROBOTEN OG GJØRE DEN Å BEVEGE I ULIKE RETNINGER
def fremover ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def revers (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)
def stopp ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
LAGER KAMERAMODULEN OG JUSTERER INNSTILLINGENE
#KAMERA FANGST
#initialiser kameraet og ta en referanse til kameraet med rå kameraopptak = PiCamera () kamera. oppløsning = (160, 120) kamera.framerat = 16 rawCapture = PiRGBArray (kamera, størrelse = (160, 120)) # tillat kameraet til oppvarmingstid. søvn (0,001)
NÅ GJENNOMFØRER DU Hovedtingen der boten følger ballen og unngår noe hinder på veien
mens (1 <10): {#avstand som kommer fra ultralydsensoravstanden foranC = ekkolodd (GPIO_TRIGGER2, GPIO_ECHO2) #avstand som kommer fra høyre ultralydsensoravstandR = ekkolod (GPIO_TRIGGER3, GPIO_ECHO3) #avstand fra venstre ultralydsensoravstand L = sonar (GPIO_TRIGGER1, GPIO_ECHO1) hvis (avstandC = 8: høyretur () time.sleep (0.00625) stop () time.sleep (0.0125) forover () time.sleep (0.00625) stop () time.sleep (0.0125) #while found == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) høyre sving () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #ellers går den fremover () time.sleep (0.00625) hvis (avstandC> 10): #den bringer koordinatene til ballen til midten av kameraets imaginære akse. hvis (senter_x = 20): hvis (senter_x0): flagg = 1 venstre () tid. søvn (0,025) fremover () tid. søvn (0,00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)
ellers:
#hvis den finner ballen og den er for nær, lyser den lysdioden. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # tøm strømmen som forberedelse til neste ramme}
GJØR DE NØDVENDIGE RENGJØRINGENE
GPIO.cleanup () #free alle GPIO -pinnene
Trinn 8: Eksterne lenker
Lenke til demonstrasjonsvideoen: klikk her (Youtube)
Lenke til koden på Git-hub: klikk her (Git-Hub)
Anbefalt:
Mandalorian Tracking Fob: 7 trinn
Mandalorian Tracking Fob: Etter at jeg så de første episodene av Mandalorian var jeg ivrig etter å prøve å bygge sporingsfoben. Mange andre mennesker hadde den samme ideen og hadde lagt ut mye referansemateriale som jeg kunne jobbe med når jeg utformet sporingsfoben i Fusion 360
Head Motion Tracking System for VR: 8 trinn
Head Motion Tracking System for VR: Jeg heter Sam KODO, I denne veiledningen vil jeg lære deg trinn for trinn hvordan du bruker Arduino IMU -sensorer til å bygge hodesporingssystem for VR. I dette prosjektet trenger du: - En LCD -skjerm HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac…- En
Human Eye Motion Tracking: 6 trinn
Human Eye Motion Tracking: Dette prosjektet tar sikte på å fange bevegelsen til det menneskelige øyet, og viser bevegelsen på et sett med LED -lys som er plassert i form av et øye. Denne typen prosjekter kan potensielt ha mange bruksområder innen robotikk og spesielt huma
DIY Smart Robot Tracking Car Kit Sporing Car Fotosensitiv: 7 trinn
DIY Smart Robot Tracking Car Kits Tracking Car Fotosensitiv: Design av SINONING ROBOT Du kan kjøpe fra tracking robot carTheoryLM393 chip sammenligne de to fotoresistoren, når det er en fotoresistor LED på den ene siden på HVIT stopper siden av motoren umiddelbart, den andre siden av motoren snurre opp, slik at
Pet Robot Ball: 10 trinn (med bilder)
Pet Robot Ball: Min kjæledyrhund elsker å leke med leker, spesielt de han kan jage! Jeg bygde en robotkule som slår seg på og ruller bort automatisk når han samhandler med den, varsler meg via mobiltelefonen min som jeg deretter kan bruke til å kontrollere den over WiFi og fin