Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Introduktion
- Trin 2: Materialer og bløde varer, der bruges i dette projekt
- Trin 3: Hvad skal man gøre?
- Trin 4: Skemaer
- Trin 5: Hvordan gør man?
- Trin 6: Pseudo-kode
- Trin 7: Kode
- Trin 8: Eksterne links
Video: Ball Tracking Robot: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Så i dette vil jeg fortælle, hvordan man laver en boldsporingsrobot, der er en robot, identificerer en bold og følger den. Det er dybest set en automatiseret overvågningsteknik, der kan bruges i den moderne verden. Så lad os bare hoppe ind og begynde at bygge …
BEMÆRK: Denne delopgave blev indsendt til Deakin University, School of IT, SIT-210 Embedded Systems Development
Forbrugsvarer
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Trin 1: Introduktion
Dagens overvågning giver en stor ulempe, at den hviler på inddragelse af mennesker, som som vi alle ved let kan blive distraheret, så det var for vores største betydning at opdage et system, der kan overvåge regioner autonomt og kontinuerligt. Og vi ønsker også at identificere ubehagelige eller uønskede ting og farer, samtidig med at vi træffer beslutninger og reagerer derefter. Så objektsporing med brug af intelligente systemer og computere er afgørende og afgørende for at opnå automatiseret overvågning.
Ethvert udendørs overvågningssystem skal kunne spore objekter, der bevæger sig i sit synsfelt, klassificere disse objekter og registrere nogle af deres aktiviteter. Jeg har udviklet en metode til at spore og klassificere disse objekter i realistiske scenarier. Objektsporing i et enkelt kamera udføres ved hjælp af baggrundssubtraktion efterfulgt af regionskorrespondance. Dette tager højde for flere signaler, herunder hastigheder, størrelser og afstande for afgrænsningskasser.
Trin 2: Materialer og bløde varer, der bruges i dette projekt
Anvendte hardwarekomponenter:
- Hindbær Pi (x1)
- Raspberry Pi kameramodul (x1)
- Ultralydssensor (x3)
- SparkFun Dual H-Bridge motordrivere L298 (x1)
- DC -motor (x1)
- Brødbræt (x1)
- Tilslutning af ledninger
Brugt software:
OpenCV
Håndværktøj:
Python
Trin 3: Hvad skal man gøre?
Ethvert udendørs overvågningssystem skal kunne spore objekter, der bevæger sig i sit synsfelt, klassificere disse objekter og registrere nogle af deres aktiviteter. Jeg har udviklet en metode til at spore og klassificere disse objekter i realistiske scenarier. Objektsporing i et enkelt kamera udføres ved hjælp af baggrundssubtraktion efterfulgt af regionskorrespondance. Dette tager højde for flere signaler, herunder hastigheder, størrelser og afstande for afgrænsningskasser.
Vigtig ting, mens detektering af billeder ramme for ramme var at undgå eventuelle rammefald, da botten kan gå i en limbo -tilstand, hvis botten ikke bemærker kuglens bevægelsesretning på grund af rammefald. Hvis bolden går uden for kameraets rækkevidde, vil den gå ind i det, vi kalder en limbo-tilstand, i så fald gør botten en 360-graders drejning for at se rummet omkring det, indtil bolden kommer tilbage i rammen af kameraet og derefter begynde at bevæge sig i dens retning.
Til billedanalysen tager jeg hver ramme og maskerer den derefter med den nødvendige farve. Så finder jeg alle konturerne og finder den største blandt dem og binder det i et rektangel. Og vis rektanglet på hovedbilledet og find koordinaterne til midten af rektanglet.
Endelig forsøger boten at bringe boldens koordinater til midten af dens koordinatakse. Sådan fungerer robotten. Dette kan yderligere forbedres ved at bruge en IoT -enhed som en fotonpartikel, der kan lade dig blive informeret, når en ting opdages, og at robotten følger den, eller når robotten har mistet sporet af den og nu vender tilbage til basen.
Med henblik på billedbehandling skal du installere OpenCV -software på din hindbær pi, hvilket var ret vanskeligt for mig.
Du kan få alle nødvendige oplysninger for at installere OpenCV via dette link: klik her
Trin 4: Skemaer
Ovenfor har jeg leveret skemaerne til mit projekt, og sammen med det er Printed Circuit Board (PCB).
Og her er nogle af de vigtigste forbindelser, du skal gøre:
• Først og fremmest er Raspberry Pi -kameramodulet direkte forbundet til Raspberry Pi.
• Ultralydssensorerne VCC er forbundet til den fælles terminal, det samme er med GND (jord), og de resterende to porte på ultralydssensoren er forbundet til GPIO -benene på Raspberry Pi.
• Motorerne er forbundet med H-broen.
• Strømforsyningen leveres ved hjælp af batteriet.
Jeg har også tilføjet videoen, der kan hjælpe med forståelsen af ultralydssensorens funktion og hvordan den fungerer.
og du kan også følge dette link, hvis du ikke kan finde videoen ovenfor.
Trin 5: Hvordan gør man?
Jeg lavede dette projekt, der skildrer en grundlæggende robot, der kan spore en bold. Robotten bruger et kamera til billedbehandling ved at tage rammer og spore bolden. For at spore bolden bruges forskellige funktioner som dens farve, størrelse, form.
Robotten finder en hårdkodet farve og søger derefter efter bolden med den farve og følger den. Jeg har valgt Raspberry Pi som mikro-controller i dette projekt, fordi det giver os mulighed for at bruge sit kameramodul og giver stor fleksibilitet i kode, da det bruger python-sprog, som er meget brugervenligt, og det lader os også bruge OpenCV-bibliotek til at analysere billederne.
En H-bro er blevet brugt til at ændre motorens rotationsretning eller stoppe dem.
Til billedanalysen tager jeg hver ramme og maskerer den derefter med den nødvendige farve. Så finder jeg alle konturerne og finder den største blandt dem og binder det i et rektangel. Og vis rektanglet på hovedbilledet og find koordinaterne for midten af rektanglet.
Endelig forsøger bot at bringe koordinaterne for bolden til midten af dens koordinatakse. Sådan fungerer robotten. Dette kan yderligere forbedres ved at bruge en IoT -enhed som en fotonpartikel, der kan lade dig blive informeret, når en ting opdages, og at robotten følger den, eller når robotten har mistet sporet af den og nu vender tilbage til basen. Og for at gøre dette vil vi bruge en online softwareplatform, der forbinder enhederne og giver dem mulighed for at udføre bestemte handlinger på bestemte udløsere, der er IFTTT -udløsere.
Trin 6: Pseudo-kode
Her er pseudokoden til detektionsdelen ved hjælp af OpenCV, hvor vi registrerer en bold.
Trin 7: Kode
Ovenfor er uddragene af koden og nedenfor er den detaljerede beskrivelse af koden.
# importer de nødvendige pakker
VI IMPORTERER ALLE DE NØDVENDIGE PAKKER
fra picamera.array import PiRGBArray #Da der er et opløsningsproblem i hindbær pi, vil det ikke være i stand til at fange rammer ved VideoCapture
fra picamera import PiCamera import RPi. GPIO som GPIO import tid import numpy som np
NU OPSÆTTER VI HARDWAREN OG TILDELER PINNERNE TILSLUTTET 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øjre ultralydssensor
GPIO_ECHO3 = 35
MOTOR1B = 18 #venstre motor
MOTOR1E = 22
MOTOR2B = 21 #højre motor
MOTOR2E = 19
LED_PIN = 13 #Hvis den finder bolden, så lyser den
# Indstil stifter som output og input
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)
# Indstil udløseren til Falsk (lav)
GPIO.output (GPIO_TRIGGER1, Falsk) GPIO.output (GPIO_TRIGGER2, Falsk) GPIO.output (GPIO_TRIGGER3, Falsk)
DENNE FUNKTION ANVENDER ALLE ULTRASONISKE SENSORER SAMLER AFSTANDEN FRA FORMÅLENE RUNDT VORES BOT
# Tillad modul at afregne
def ekkolod (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Indstil stifter som output og input GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Sæt trigger til False (Lav) GPIO.output (GPIO_TRIGGER, Falsk) #Tillad modul at afregne time.sleep (0.01) #while distance> 5: #Send 10us puls for at udlø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 -MOTORERNE TIL AT ARBEJDE MED RASPBERRY PI
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINITION AF FUNKTIONER FOR AT BRUGE ROBOTEN OG GØRE DEN AT BEVÆGTE I FORSKELLIGE RETNINGER
def fremad ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def højre drej (): 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 stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
FÅR KAMERAMODULET til at fungere og justere indstillingerne
#KAMERA FANGST
#initialiser kameraet, og tag en reference til det rå kameraoptagelseskamera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, størrelse = (160, 120)) # tillad kameraet til opvarmningstid. søvn (0,001)
NU GENNEMFØRER DU VEDRIGTIGT, DER BOTEN FØLGER BOLLEN OG UNDGÅ NOGEN HINDRING PÅ VEJEN
mens (1 <10): {#distance, der kommer fra ultralydssensorens forreste afstandC = ekkolod (GPIO_TRIGGER2, GPIO_ECHO2) #distance, der kommer fra højre ultralydsensorafstandR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distance fra venstre ultralyds sensorafstand L = sonar (GPIO_TRIGGER1, GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () 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øjre drej () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #ellers går den fremad () time.sleep (0.00625) hvis (distanceC> 10): #det bringer koordinaterne til bolden til midten af kameraets imaginære akse. hvis (center_x = 20): if (center_x0): flag = 1 venstre tur () time.sleep (0,025) frem () time.sleep (0,00003125) stop () time.sleep (0,00625) else: stop () time.sleep (0,01)
andet:
#hvis den finder bolden, og den er for tæt, tændes lysdioden. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.trunker (0) # ryd strømmen som forberedelse til næste ramme}
GØR DE NØDVENDIGE RENGØRINGER
GPIO.cleanup () #free alle GPIO pins
Trin 8: Eksterne links
Link til demonstrationsvideoen: klik her (Youtube)
Link til koden på Git-hub: klik her (Git-Hub)
Anbefalede:
Mandalorian Tracking Fob: 7 trin
Mandalorian Tracking Fob: Efter jeg så de første par afsnit af Mandalorian var jeg ivrig efter at prøve at bygge tracking fob. Mange andre mennesker havde den samme idé og havde postet masser af referencemateriale, som jeg kunne arbejde ud af, når jeg designede sporingsfoben i Fusion 360
Head Motion Tracking System til VR: 8 trin
Head Motion Tracking System til VR: Mit navn er Sam KODO, I denne tuto vil jeg lære dig trin for trin, hvordan du bruger Arduino IMU -sensorer til at bygge head tracking system til VR. I dette projekt har du brug for: - En LCD Display HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac…- En
LED Bordtennis Ball-Ball: 16 trin (med billeder)
LED Table Tennis Ball-Ball: Backstory Efter at have bygget et fladt bord med bordtennisbolde for et stykke tid siden, begyndte jeg at spekulere på, om det ville være muligt at lave et 3D-panel af bordtennisbolde. Kombineret med min interesse for at lave " kunst " fra tilbagevendende geometriske former jeg
DIY Smart Robot Tracking Car Kits Tracking Car Fotosensitive: 7 trin
DIY Smart Robot Tracking Car Kits Tracking Car Fotofølsom: Design af SINONING ROBOT Du kan købe fra tracking robot carTheoryLM393 chip sammenligne de to fotoresistor, når der er en fotoresistor LED på den ene side på HVID, stopper motorens side med det samme, den anden side af motoren drej op, så
Pet Robot Ball: 10 trin (med billeder)
Pet Robot Ball: Min kæledyrshund elsker at lege med legetøj, især dem han kan jage! Jeg byggede en robotkugle, der tænder og ruller væk automatisk, når han interagerer med den, giver mig besked via min mobiltelefon, som jeg derefter kan bruge til at styre den over WiFi og fin