Inhoudsopgave:
- Benodigdheden
- Stap 1: Inleiding
- Stap 2: Materialen en software die in dit project worden gebruikt
- Stap 3: Wat te doen?
- Stap 4: Schema's
- Stap 5: Hoe te doen?
- Stap 6: Pseudo-code
- Stap 7: Coderen
- Stap 8: Externe links
Video: Ball Tracking Robot - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Dus hierin ga ik vertellen hoe je een balvolgrobot maakt die een robot is die een bal identificeert en deze volgt. Het is in feite een geautomatiseerde bewakingstechniek die in de moderne wereld kan worden gebruikt. Dus laten we gewoon instappen en beginnen met bouwen…
OPMERKING: dit is de deelopdracht die is ingediend bij Deakin University, School of IT, SIT-210 Embedded Systems Development
Benodigdheden
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Stap 1: Inleiding
Het huidige toezicht heeft een groot nadeel, namelijk dat het berust op de betrokkenheid van mensen die, zoals we allemaal weten, gemakkelijk kunnen worden afgeleid, dus het was van het grootste belang om een systeem te ontdekken dat regio's autonoom en continu kan bewaken. En ook willen we onaangename of ongewenste dingen en gevaren identificeren en tegelijkertijd beslissingen nemen en dienovereenkomstig reageren. Het volgen van objecten met behulp van intelligente systemen en computers is dus essentieel en cruciaal om geautomatiseerde bewaking te realiseren.
Elk buitenbewakingssysteem moet in staat zijn om bewegende objecten in zijn gezichtsveld te volgen, deze objecten te classificeren en sommige van hun activiteiten te detecteren. Ik heb een methode ontwikkeld om deze objecten te volgen en te classificeren in realistische scenario's. Objecttracking in een enkele camera wordt uitgevoerd met behulp van achtergrondaftrekking, gevolgd door regiocorrespondentie. Dit houdt rekening met meerdere signalen, waaronder snelheden, afmetingen en afstanden van begrenzingsvakken.
Stap 2: Materialen en software die in dit project worden gebruikt
Gebruikte hardwarecomponenten:
- Framboos Pi (x1)
- Raspberry Pi-cameramodule (x1)
- Ultrasone sensor (x3)
- SparkFun Dual H-Bridge motordrivers L298 (x1)
- DC-motor (x1)
- Broodplank (x1)
- Draden aansluiten
Gebruikte software:
OpenCV
Handgereedschap:
Python
Stap 3: Wat te doen?
Elk buitenbewakingssysteem moet in staat zijn om bewegende objecten in het gezichtsveld te volgen, deze objecten te classificeren en sommige van hun activiteiten te detecteren. Ik heb een methode ontwikkeld om deze objecten te volgen en te classificeren in realistische scenario's. Objecttracking in een enkele camera wordt uitgevoerd met behulp van achtergrondaftrekking, gevolgd door regiocorrespondentie. Dit houdt rekening met meerdere signalen, waaronder snelheden, afmetingen en afstanden van begrenzingsvakken.
Cruciaal bij het frame voor frame detecteren van afbeeldingen was om framedrops te voorkomen, omdat de bot dan in een limbo-toestand kan gaan als de bot de bewegingsrichting van de bal niet opmerkt vanwege framedrops. Als de bal buiten het bereik van de camera komt, gaat hij in wat we een limbo-toestand noemen, in dat geval maakt de bot een 360-graden draai om de ruimte eromheen te bekijken totdat de bal terugkomt in het frame van de camera en begin dan in zijn richting te bewegen.
Voor de beeldanalyse neem ik elk frame en maskeer het vervolgens met de benodigde kleur. Dan zoek ik alle contouren en vind de grootste onder hen en bind het in een rechthoek. En toon de rechthoek op de hoofdafbeelding en vind de coördinaten van het midden van de rechthoek.
Ten slotte probeert de bot de coördinaten van de bal naar het midden van zijn coördinatenas te brengen. Dit is hoe de robot werkt. Dit kan verder worden verbeterd door een IoT-apparaat te gebruiken, zoals een fotondeeltje, waarmee u kunt worden geïnformeerd wanneer iets wordt gedetecteerd en dat de robot het volgt of wanneer de robot het spoor kwijt is en nu terugkeert naar de basis.
Voor beeldverwerking moet je OpenCV-software op je Raspberry Pi installeren, wat voor mij best lastig was.
U kunt alle benodigde informatie krijgen om OpenCV te installeren via deze link: klik hier
Stap 4: Schema's
Hierboven heb ik de schema's voor mijn project verstrekt en daarbij is de Printed Circuit Board (PCB).
En hier zijn enkele van de belangrijkste verbindingen die u moet doen:
• Allereerst wordt de Raspberry Pi Camera module direct aangesloten op de Raspberry Pi.
• De ultrasone sensoren VCC zijn verbonden met de gemeenschappelijke terminal, hetzelfde is met de GND (aarde) en de resterende twee poorten van de ultrasone sensor zijn verbonden met de GPIO-pinnen op de Raspberry Pi.
• De motoren worden aangesloten via de H-brug.
• De stroom wordt geleverd met behulp van de batterij.
Ik heb ook de video toegevoegd die kan helpen bij het begrijpen van de werking van de ultrasone sensor en hoe deze werkt.
en je kunt ook deze link volgen als je de video hierboven niet kunt vinden.
Stap 5: Hoe te doen?
Ik heb dit project gemaakt met een basisrobot die een bal kan volgen. De robot gebruikt een camera om beeldverwerking te doen door frames te nemen en de bal te volgen. Om de bal te volgen, worden verschillende kenmerken gebruikt, zoals de kleur, grootte en vorm.
De robot vindt een hardgecodeerde kleur en zoekt vervolgens naar de bal van die kleur en volgt deze. Ik heb Raspberry Pi als microcontroller in dit project gekozen omdat het ons in staat stelt om de cameramodule te gebruiken en een grote flexibiliteit in code biedt omdat het Python-taal gebruikt die zeer gebruiksvriendelijk is en het ons ook de OpenCV-bibliotheek laat gebruiken voor het analyseren van de afbeeldingen.
Een H-brug is gebruikt om de draairichting van motoren te veranderen of te stoppen.
Voor de beeldanalyse neem ik elk frame en maskeer het vervolgens met de benodigde kleur. Dan vind ik alle contouren en vind ik de grootste onder hen en bind het in een rechthoek. En toon de rechthoek op de hoofdafbeelding en vind de coördinaten van het midden van de rechthoek.
Ten slotte probeert de bot de coördinaten van de bal naar het midden van zijn coördinatenas te brengen. Dit is hoe de robot werkt. Dit kan verder worden verbeterd door een IoT-apparaat te gebruiken, zoals een fotondeeltje, waarmee u kunt worden geïnformeerd wanneer iets wordt gedetecteerd en dat de robot het volgt of wanneer de robot het spoor kwijt is en nu terugkeert naar de basis. En om dit te doen, zullen we een online softwareplatform gebruiken dat de apparaten verbindt en hen in staat stelt bepaalde acties uit te voeren op specifieke triggers, namelijk IFTTT-triggers.
Stap 6: Pseudo-code
Hier is de pseudo-code voor het detectiegedeelte met OpenCV waar we een bal detecteren.
Stap 7: Coderen
Hierboven staan de fragmenten van de code en hieronder de gedetailleerde beschrijving van de code.
# importeer de benodigde pakketten
WIJ IMPORTEREN ALLE NODIGE PAKKETTEN
van picamera.array import PiRGBArray #Aangezien er een resolutieprobleem is in raspberry pi, kunnen geen frames worden vastgelegd met VideoCapture
van picamera import PiCamera import RPi. GPIO als GPIO import tijd import numpy als np
NU STELLEN WE DE HARDWARE IN EN WIJZEN DE PINS TOE VERBONDEN OP RASPBERRY PI
GPIO.setmode(GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Linker ultrasone sensor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Voorste ultrasone sensor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Rechter ultrasone sensor
GPIO_ECHO3 = 35
MOTOR1B=18 #Linkermotor
MOTOR1E=22
MOTOR2B=21 #Rechtermotor
MOTOR2E=19
LED_PIN=13 #Als het de bal vindt, dan zal de led oplichten
# Stel pinnen in als uitvoer en invoer
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)
# Zet trigger op False (Laag)
GPIO.output(GPIO_TRIGGER1, False) GPIO.output(GPIO_TRIGGER2, False) GPIO.output(GPIO_TRIGGER3, False)
DEZE FUNCTIE GEBRUIKT ALLE ULTRASONE SENSOREN VERZAMEL DE AFSTAND VAN DE OBJECTEN ROND ONZE BOT
# Laat de module tot rust komen
def sonar (GPIO_TRIGGER, GPIO_ECHO): start=0 stop=0 # Stel pinnen in als uitvoer en invoer GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Activeer GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Stel trigger in op False (Laag) GPIO.output (GPIO_TRIGGER, False) # Laat module time.sleep(0.01) regelen #while distance > 5: #Stuur 10us-puls om GPIO.output (GPIO_TRIGGER, True) time.sleep(0.00001) GPIO te activeren. output(GPIO_TRIGGER, False) begin = time.time() terwijl GPIO.input(GPIO_ECHO)==0 en time.time()
DE DC-MOTOREN MET DE RASPBERRY PI WERKEN
GPIO.setup(MOTOR1B, GPIO. OUT)
GPIO.setup(MOTOR1E, GPIO. OUT)
GPIO.setup(MOTOR2B, GPIO. OUT) GPIO.setup(MOTOR2E, GPIO. OUT)
FUNCTIES DEFINIREN OM DE ROBOT TE BEDIENEN EN IN VERSCHILLENDE RICHTEN TE LATEN BEWEGEN
def vooruit():
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 rechtsaf (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def linksaf (): 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)
DE CAMERAMODULE WERKEN EN DE INSTELLINGEN AANPASSEN
#CAMERA-VASTLEGGEN
#initialiseer de camera en pak een verwijzing naar de raw camera capture camera = PiCamera() camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray(camera, size=(160, 120)) # sta de camera toe naar opwarmtijd.slaap(0.001)
IMPLEMENTEER NU HET BELANGRIJKSTE DAT DE BOT DE BAL VOLGT EN ELKE OBSTAKEL IN DE WEG vermijdt
while(1<10): { #afstand komende van ultrasone sensor vooraan distanceC = sonar(GPIO_TRIGGER2, GPIO_ECHO2) #distance komende van rechter ultrasone sensor distanceR = sonar(GPIO_TRIGGER3, GPIO_ECHO3) #distance komende van linker ultrasone sensor afstandL = 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: linksom() 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) rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) else: stop() time.sleep(0.01) else: #otherwise gaat het vooruit() time.sleep(0.00625) if(distanceC>10): #it brengt de coördinaten van de bal naar het midden van de denkbeeldige as van de camera if(centre_x=20): if(centre_x0): flag=1 leftturn() time.sleep(0.025) forward() time.sleep(0.00003125) stop() time.sleep(0.00625) else: stop() time.sleep(0.01)
anders:
#als het de bal vindt en het is te dichtbij, licht de led op. GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", frame) rawCapture.truncate(0) # wis de stream ter voorbereiding op de volgende frame }
DOE DE NOODZAKELIJKE REINIGINGEN
GPIO.cleanup() #bevrijd alle GPIO-pinnen
Stap 8: Externe links
Link naar de demonstratievideo: klik hier (Youtube)
Link naar de code op Git-hub: klik hier (Git-Hub)
Aanbevolen:
GPS-tracking 3D-kaart: 9 stappen
GPS-tracking 3D-kaart: dit project is een 3D-geprinte 3D-kaart, met wegen, rivieren en steden, met LED-bakens om de locatie van leden van het gezin te tonen. Het kan laten zien of een kind al dan niet op school is, of alleen de locatie van beide ouders. We kunnen het ook gebruiken om te voorspellen w
GEMOTORISEERDE CAMERA SLIDER MET TRACKING SYSTEEM (3D geprint): 7 stappen (met afbeeldingen)
GEMOTORISEERDE CAMERASCHUIF MET TRACKINGSYSTEEM (3D-geprint): In principe zal deze robot een camera/smartphone op een rail verplaatsen en een object "volgen". De locatie van het doelobject is al bekend bij de robot. De wiskunde achter dit volgsysteem is vrij eenvoudig. We hebben een simulatie gemaakt van het volgproces
Realtime GPS-tracking: 3 stappen
Realtime GPS-tracking: in deze tutorial laten we u zien hoe u realtime locatietracking uitvoert met behulp van een BerryGPS-GSM, een Raspberry Pi Zero en Initial State. We sturen lengtegraad, breedtegraad en snelheid via 3G met de BerryGPS-GSM naar Initial State
Trophy Ball Clock met servo: 18 stappen
Trophy Ball Clock Servo gebruiken: Klok is er in alle vormen. Maar ik wil iets doen met een nieuwe bolvormige klok, waarbij de minutenwijzer de onderste helft van de bol is en de urenwijzer de bovenste helft van de bol. Denk er allereerst aan om de normale klok om te bouwen. Maar terwijl de minuten het uur verschuiven
GPS-FIETS- OF AUTO-TRACKING VANAF SMARTPHONE: 9 stappen
GPS-FIETS- OF AUTO-TRACKING VANAF SMARTPHONE: Hallo, welkom bij Creativity Buzz. Hier laat ik je zien hoe je je fiets of auto volgt. Je kunt de live locatie van de fiets volgen met dit apparaat. Je kunt elke fiets volgen met dit apparaat