Innehållsförteckning:
- Tillbehör
- Steg 1: Introduktion
- Steg 2: Material och mjukvaror som används i detta projekt
- Steg 3: Vad ska jag göra?
- Steg 4: Scheman
- Steg 5: Hur gör man?
- Steg 6: Pseudokod
- Steg 7: Kod
- Steg 8: Externa länkar
Video: Ball Tracking Robot: 8 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:40
Så i det här ska jag berätta hur man gör en bollspårningsrobot som är en robot kommer att identifiera en boll och följer den. Det är i grunden en automatiserad övervakningsteknik som kan användas i den moderna världen. Så låt oss bara hoppa in och börja bygga …
OBS: Detta deluppdrag lämnas till Deakin University, IT-skolan, SIT-210 Embedded Systems Development
Tillbehör
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Steg 1: Introduktion
Dagens övervakning är en stor nackdel som är att den vilar på människors engagemang som, som vi alla vet, lätt kan distraheras, så det var av yttersta vikt att upptäcka ett system som kan övervaka regioner autonomt och kontinuerligt. Och vi vill också identifiera vidriga eller oönskade saker och faror samtidigt som vi fattar beslut och svarar därefter. Så spårning av objekt med användning av intelligenta system och datorer är avgörande och avgörande för att uppnå automatisk övervakning.
Alla utomhusövervakningssystem måste kunna spåra föremål som rör sig i sitt synfält, klassificera dessa objekt och upptäcka några av deras aktiviteter. Jag har utvecklat en metod för att spåra och klassificera dessa objekt i realistiska scenarier. Objektspårning i en enda kamera utförs med hjälp av bakgrundssubtraktion, följt av regionkorrespondens. Detta tar hänsyn till flera signaler, inklusive hastigheter, storlekar och avstånd för avgränsningsboxar.
Steg 2: Material och mjukvaror som används i detta projekt
Hårdvarukomponenter som används:
- Hallon Pi (x1)
- Raspberry Pi kameramodul (x1)
- Ultraljudssensor (x3)
- SparkFun Dual H-Bridge motorförare L298 (x1)
- Likströmsmotor (x1)
- Brödbräda (x1)
- Anslutningskablar
Programvara som används:
OpenCV
Handverktyg:
Pytonorm
Steg 3: Vad ska jag göra?
Alla utomhusövervakningssystem måste kunna spåra föremål som rör sig i sitt synfält, klassificera dessa objekt och upptäcka några av deras aktiviteter. Jag har utvecklat en metod för att spåra och klassificera dessa objekt i realistiska scenarier. Objektspårning i en enda kamera utförs med hjälp av bakgrundssubtraktion, följt av regionkorrespondens. Detta tar hänsyn till flera ledtrådar inklusive hastigheter, storlekar och avstånd för avgränsningsboxar.
Avgörande när man upptäckte bilder bild för bild var att undvika ramdroppar eftersom botten då kan hamna i ett limbo -tillstånd om boten inte märker bollens rörelseriktning på grund av ramfall. Om bollen går utanför kamerans räckvidd kommer den att gå in i det vi kallar ett limbo-tillstånd, i så fall gör boten en 360-graders sväng för att se utrymmet runt den tills bollen kommer tillbaka i ramen för kameran och börja sedan röra sig i dess riktning.
För bildanalysen tar jag varje ram och maskerar den sedan med den färg som behövs. Sedan hittar jag alla konturer och hittar den största bland dem och band det i en rektangel. Och visa rektangeln på huvudbilden och hitta koordinaterna för rektangelns mitt.
Slutligen försöker boten att föra bollens koordinater till mitten av dess koordinataxel. Så här fungerar roboten. Detta kan förbättras ytterligare genom att använda en IoT -enhet som en fotonpartikel som kan låta dig informeras när en sak upptäcks och att roboten följer den eller när roboten har tappat spåret av den och nu återvänder till basen.
För bildbehandling måste du installera OpenCV -programvara på din hallon pi vilket var ganska svårt för mig.
Du kan få all nödvändig information för att installera OpenCV via denna länk: klicka här
Steg 4: Scheman
Ovan har jag tillhandahållit schemat för mitt projekt och tillsammans med det är Printed Circuit Board (PCB).
Och här är några av de viktigaste anslutningarna som du behöver göra:
• Först och främst är Raspberry Pi -kameramodulen direkt ansluten till Raspberry Pi.
• Ultraljudssensorerna VCC är anslutna till den gemensamma terminalen, samma är med GND (jord) och de återstående två portarna på ultraljudssensorn är anslutna till GPIO -stiften på Raspberry Pi.
• Motorerna är anslutna med H-bron.
• Strömförsörjningen sker med batteriet.
Jag har också lagt till videon som kan hjälpa till med förståelsen av hur ultraljudssensorn fungerar och hur den fungerar.
och du kan också följa den här länken om du inte hittar videon ovan.
Steg 5: Hur gör man?
Jag gjorde det här projektet som visar en grundläggande robot som kan spåra en boll. Roboten använder en kamera för bildbehandling genom att ta ramar och spåra bollen. För att spåra bollen används olika funktioner som dess färg, storlek, form.
Roboten hittar en hårdkodad färg och söker sedan efter bollen med den färgen och följer den. Jag har valt Raspberry Pi som mikrokontroller i detta projekt eftersom det tillåter oss att använda sin kameramodul och ger stor flexibilitet i kod eftersom det använder pythonspråk som är mycket användarvänligt och det låter oss också använda OpenCV-bibliotek för att analysera bilderna.
En H-bro har använts för att ändra motorns rotationsriktning eller stoppa dem.
För bildanalysen tar jag varje ram och maskerar den sedan med den färg som behövs. Sedan hittar jag alla konturer och hittar den största bland dem och band det i en rektangel. Och visa rektangeln på huvudbilden och hitta koordinaterna för rektangelns mitt.
Slutligen försöker boten att föra bollens koordinater till mitten av dess koordinataxel. Så här fungerar roboten. Detta kan förbättras ytterligare genom att använda en IoT -enhet som en fotonpartikel som kan låta dig informeras när en sak upptäcks och att roboten följer den eller när roboten har tappat spåret av den och nu återvänder till basen. Och för att göra detta kommer vi att använda en online mjukvaruplattform som ansluter enheterna och låter dem utföra vissa åtgärder på specifika triggers som är IFTTT -triggers.
Steg 6: Pseudokod
Här är pseudokoden för detekteringsdelen med OpenCV där vi upptäcker en boll.
Steg 7: Kod
Ovan är kodavsnitten och nedan följer en detaljerad beskrivning av koden.
# importera nödvändiga paket
Vi importerar alla nödvändiga paket
från picamera.array import PiRGBArray #Eftersom det finns ett upplösningsproblem i hallon pi, kommer inte att kunna fånga bildrutor av VideoCapture
från picamera import PiCamera import RPi. GPIO som GPIO import tid import numpy som np
NU SETTER VI HARDWARE OCH TILLDELAR PIN -KNAPPARNA ANSLUTNA PÅ RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #vänster ultraljudssensor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Front ultraljudssensor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Rätt ultraljudssensor
GPIO_ECHO3 = 35
MOTOR1B = 18 #vänster motor
MOTOR1E = 22
MOTOR2B = 21 #höger motor
MOTOR2E = 19
LED_PIN = 13 #Om den hittar bollen tänds lysdioden
# Ställ in stift som utgång och ingång
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)
# Ställ utlösaren på Falsk (låg)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
DENNA FUNKTION ANVÄNDER ALLA ULTRASONISKA SENSORER SAMLAR AVSTÅNDEN FRÅN OBJEKTEN RUNDOM VÅR BOT
# Låt modulen lösa sig
def ekolod (GPIO_TRIGGER, GPIO_ECHO): start = 0 stopp = 0 # Ställ in stift som utgång och ingång GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Ställ utlösare till False (Låg) GPIO.output (GPIO_TRIGGER, Falsk) #Låt modulen reglera time.sleep (0.01) #medan distans> 5: #Skicka 10us puls för att utlösa GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time () medan GPIO.input (GPIO_ECHO) == 0 och time.time ()
FÅ DC -MOTORERNA ATT ARBETA MED RASPBERRY PI
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINERA FUNKTIONER FÖR ATT ANVÄNDA ROBOTEN OCH GÖRA DEN RÖR DIG I Olika riktningar
def framåt ():
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 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)
LÅT KAMERAMODULEN FUNGERA OCH JUSTERA INSTÄLLNINGARNA
#KAMERA Fånga
#initialisera kameran och ta en referens till kameran för kamerafångning = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, storlek = (160, 120)) # tillåt kameran till uppvärmningstid. sömn (0,001)
NU ATT GENOMFÖRA HUVUDSAKEN VAR BOTEN FÖLJER BOLLEN OCH UNDVIK NOGEN HINDNING PÅ VÄGEN
medan (1 <10): { #avstånd kommer från främre ultraljudsgivaravståndC = ekolod (GPIO_TRIGGER2, GPIO_ECHO2) #avstånd från höger ultraljudsgivaravståndR = ekolod (GPIO_TRIGGER3, GPIO_ECHO3) #avstånd från vänster ultraljudsgivaravstånd L = ekolod (GPIO_TRIGGER1, GPIO_ECHO1) if (distansC = 8: högervrid () time.sleep (0.00625) stop () time.sleep (0.0125) fram () time.sleep (0.00625) stop () time.sleep (0.0125) #medan hittades == 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ögervrid () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #annars går det framåt () time.sleep (0.00625) om (avståndC> 10): #det tar bollens koordinater till mitten av kamerans imaginära axel. om (center_x = 20): if (center_x0): flagga = 1 vänster () time.sleep (0,025) framåt () time.sleep (0,00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)
annan:
#om den hittar bollen och den är för nära tänds lysdioden. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # rensa strömmen som förberedelse för nästa bild}
GÖR DE NÖDVÄNDIGA RENGÖRINGARNA
GPIO.cleanup () #free alla GPIO -pins
Steg 8: Externa länkar
Länk till demonstrationsvideon: klicka här (Youtube)
Länk till koden på Git-hub: klicka här (Git-Hub)
Rekommenderad:
Mandalorian Tracking Fob: 7 steg
Mandalorian Tracking Fob: Efter att jag sett de första avsnitten av Mandalorian var jag ivrig efter att försöka bygga spårningsfoben. Många andra människor hade samma idé och hade lagt ut massor av referensmaterial som jag kunde arbeta med när jag utformade spårningsfoben i Fusion 360.
Head Motion Tracking System för VR: 8 steg
Head Motion Tracking System för VR: Jag heter Sam KODO, i den här handledningen kommer jag att lära dig steg för steg hur du använder Arduino IMU -sensorer för att bygga head tracking system för VR. I detta projekt behöver du: - En LCD -display HDMI : https: //www.amazon.com/Elecrow-Capacitive-interfac…- En
DIY Smart Robot Tracking Car Kit Spårning av bil Fotokänslig: 7 steg
DIY Smart Robot Tracking Car Kit Spårning av bil Fotokänslig: Design av SINONING ROBOT Du kan köpa från spårrobotbilen TheoryLM393 -chip jämför de två fotoresistorerna, när det finns en sidofotoresistor -LED på VIT stannar motorn omedelbart, den andra sidan av motorn snurra upp, så att
Pet Robot Ball: 10 steg (med bilder)
Pet Robot Ball: Min husdjurshund älskar att leka med leksaker, speciellt de han kan jaga! Jag byggde en robotboll som slås på och rullar iväg automatiskt när han interagerar med den, meddelar mig via min mobiltelefon som jag sedan kan använda för att styra den över WiFi och fin
Begging Robot With Facial Tracking and Controll av Xbox Controller - Arduino: 9 steg (med bilder)
Begging Robot With Facial Tracking and Controll av Xbox Controller - Arduino: Vi ska göra en tiggerobot. Denna robot kommer att försöka irritera eller få uppmärksamhet från förbipasserande. Det kommer att upptäcka deras ansikten och försöka skjuta lasrar på dem. Om du ger roboten ett mynt så sjunger han en sång och dansar. Roboten behöver en