Innholdsfortegnelse:

Ball Tracking Robot: 8 trinn
Ball Tracking Robot: 8 trinn

Video: Ball Tracking Robot: 8 trinn

Video: Ball Tracking Robot: 8 trinn
Video: How To Connect The 9 Dots With 4 Straight Lines Puzzle #shorts 2024, Juli
Anonim
Ball Tracking Robot
Ball Tracking Robot
Ball Tracking Robot
Ball Tracking Robot
Ball Tracking Robot
Ball Tracking Robot

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

Introduksjon
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

Materialer og myke varer som brukes i dette prosjektet
Materialer og myke varer som brukes i dette prosjektet
Materialer og myke varer som brukes i dette prosjektet
Materialer og myke varer som brukes i dette prosjektet
Materialer og myke varer som brukes i dette prosjektet
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

Image
Image
Skjemaer
Skjemaer
Skjemaer
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

Pseudokode
Pseudokode

Her er pseudokoden for deteksjonsdelen ved hjelp av OpenCV der vi oppdager en ball.

Trinn 7: Kode

Kode
Kode
Kode
Kode
Kode
Kode
Kode
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: