INHOUDSOPGAWE:
- Voorrade
- Stap 1: Inleiding
- Stap 2: Materiaal en sagteware wat in hierdie projek gebruik word
- Stap 3: Wat om te doen?
- Stap 4: Skema's
- Stap 5: Hoe om te doen?
- Stap 6: Pseudo-kode
- Stap 7: Kode
- Stap 8: Eksterne skakels
Video: Balopsporingsrobot: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
So hierin sal ek vertel hoe om 'n balopsporingsrobot te maak, wat 'n robot is, 'n bal sal identifiseer en dit kan volg. Dit is basies 'n outomatiese toesigstegniek wat in die moderne wêreld gebruik kan word. Dus, laat ons net spring en begin bou …
LET WEL: Dit is die deelopdrag wat by die Deakin-universiteit, IT-skool, SIT-210 Embedded Systems Development ingedien is
Voorrade
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Stap 1: Inleiding
Die toesig van vandag bied 'n groot nadeel: dit berus op die betrokkenheid van mense wat, soos ons almal weet, maklik afgelei kan word. En ons wil ook onaangename of ongewenste dinge en gevare identifiseer, terwyl ons terselfdertyd besluite neem en daarvolgens reageer. Objekopsporing met die gebruik van intelligente stelsels en rekenaars is dus noodsaaklik en noodsaaklik om outomatiese toesig te bereik.
Elke buite -toesigstelsel moet voorwerpe wat in sy gesigsveld beweeg, kan opspoor, hierdie voorwerpe kan klassifiseer en sommige van hul aktiwiteite kan opspoor. Ek het 'n metode ontwikkel om hierdie voorwerpe in realistiese scenario's op te spoor en te klassifiseer. Voorwerpopsporing in 'n enkele kamera word uitgevoer met behulp van agtergrondaftrekking, gevolg deur streekkorrespondensie. Dit neem verskeie leidrade in ag, insluitend snelhede, groottes en afstande van afgrendingsbokse.
Stap 2: Materiaal en sagteware wat in hierdie projek gebruik word
Hardeware -komponente wat gebruik word:
- Framboos Pi (x1)
- Raspberry Pi -kameramodule (x1)
- Ultrasoniese sensor (x3)
- SparkFun Dual H-Bridge motorbestuurders L298 (x1)
- GS -motor (x1)
- Broodbord (x1)
- Verbindingsdrade
Sagteware wat gebruik word:
OpenCV
Hand gereedskap:
Python
Stap 3: Wat om te doen?
Elke buite -toesigstelsel moet voorwerpe wat in sy gesigsveld beweeg, kan opspoor, hierdie voorwerpe kan klassifiseer en sommige van hul aktiwiteite kan opspoor. Ek het 'n metode ontwikkel om hierdie voorwerpe in realistiese scenario's op te spoor en te klassifiseer. Voorwerpopsporing in 'n enkele kamera word uitgevoer met behulp van agtergrondaftrekking, gevolg deur streekkorrespondensie. Dit neem verskeie leidrade in ag, insluitend snelhede, groottes en afstande van afgrendingsbokse.
Die belangrikste ding tydens die opsporing van beelde, raam vir raam, was om raamdruppels te vermy, aangesien die bot in 'n limbo -toestand kan gaan as die bot nie die bewegingsrigting van die bal agterkom as gevolg van raamvalle nie. As die bal buite die reikwydte van die kamera gaan, gaan dit in wat ons 'n limbo-toestand noem, in daardie geval maak die bot 'n draai van 360 grade om die ruimte rondom dit te sien totdat die bal terugkom in die raam van die kamera en begin dan in sy rigting beweeg.
Vir die beeldontleding neem ek elke raam en maskeer dit dan met die benodigde kleur. Dan vind ek al die kontoere en vind die grootste onder hulle en bind dit in 'n reghoek. Toon die reghoek op die hoofbeeld en vind die koördinate van die middel van die reghoek.
Laastens probeer die bot om die koördinate van die bal na die middel van sy koördinaatas te bring. Dit is hoe die robot werk. Dit kan verder verbeter word deur 'n IoT -toestel soos 'n fotondeeltjie te gebruik, waarmee u ingelig kan word wanneer iets opgespoor word en dat die robot dit volg of as die robot die spoor daarvan verloor het en nou terugkeer na die basis.
Met die oog op beeldverwerking moet u OpenCV -sagteware op u framboospi installeer, wat vir my nogal moeilik was.
U kan die nodige inligting kry om OpenCV te installeer via hierdie skakel: klik hier
Stap 4: Skema's
Hierbo het ek die skemas vir my projek verskaf, en saam met dit is die Printed Circuit Board (PCB).
En hier is 'n paar van die belangrikste verbindings wat u moet doen:
• Eerstens is die Raspberry Pi -kamera -module direk gekoppel aan die Raspberry Pi.
• Die ultrasoniese sensors VCC is gekoppel aan die gewone terminaal, dieselfde is met die GND (grond) en die oorblywende twee poorte van die ultrasoniese sensor is gekoppel aan die GPIO -penne op die Raspberry Pi.
• Die motors word met die H-brug verbind.
• Die krag word verskaf met behulp van die battery.
Ek het ook die video bygevoeg wat kan help met die verstaan van die werking van die ultrasoniese sensor en hoe dit werk.
en u kan ook hierdie skakel volg as u nie die video hierbo kan vind nie.
Stap 5: Hoe om te doen?
Ek het hierdie projek gemaak met 'n basiese robot wat 'n bal kan opspoor. Die robot gebruik 'n kamera om beeldverwerking te doen deur rame te neem en die bal op te spoor. Om die bal op te spoor, word verskillende funksies gebruik, soos sy kleur, grootte, vorm.
Die robot vind 'n hardcoded kleur en soek dan na die bal van die kleur en volg dit. Ek het Raspberry Pi gekies as mikrobeheerder in hierdie projek, want dit stel ons in staat om die kameramodule te gebruik en bied baie buigsaamheid in die kode, aangesien dit python-taal gebruik wat baie gebruikersvriendelik is, en dit laat ons ook die OpenCV-biblioteek gebruik om die beelde te ontleed.
'N H-brug is gebruik om die draairigting van motors te skakel of om dit te stop.
Vir die beeldontleding neem ek elke raam en maskeer dit dan met die benodigde kleur. Dan vind ek al die kontoere en vind die grootste onder hulle en bind dit in 'n reghoek. Toon die reghoek op die hoofbeeld en vind die koördinate van die middel van die reghoek.
Laastens probeer die bot om die koördinate van die bal na die middel van sy koördinaatas te bring. Dit is hoe die robot werk. Dit kan verder verbeter word deur 'n IoT -toestel soos 'n fotondeeltjie te gebruik, waarmee u ingelig kan word wanneer iets opgespoor word en dat die robot dit volg of as die robot die spoor daarvan verloor het en nou terugkeer na die basis. En om dit te doen, gebruik ons 'n aanlyn sagtewareplatform wat die toestelle verbind en hulle toelaat om sekere aksies uit te voer op spesifieke snellers wat IFTTT -snellers is.
Stap 6: Pseudo-kode
Hier is die pseudokode vir die opsporingsgedeelte met behulp van OpenCV waar ons 'n bal opspoor.
Stap 7: Kode
Hierbo is die brokkies van die kode en hieronder is die gedetailleerde beskrywing van die kode.
# voer die nodige pakkette in
Ons voer al die nodige pakkette in
vanaf picamera.array invoer PiRGBArray #Omdat daar 'n resolusieprobleem in framboospi is, kan dit nie rame deur VideoCapture opneem nie
vanaf picamera invoer PiCamera invoer RPi. GPIO as GPIO invoer tyd invoer numpy as np
NOU rig ons die toerusting op en ken die spelde toe wat op Raspberry PI gekoppel is
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Links ultrasoniese sensor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Ultrasoniese sensor voor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Regte ultrasoniese sensor
GPIO_ECHO3 = 35
MOTOR1B = 18 #Links motor
MOTOR1E = 22
MOTOR2B = 21 #Regte motor
MOTOR2E = 19
LED_PIN = 13 #As dit die bal vind, sal dit die led verlig
# Stel penne as uitvoer en invoer in
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)
# Stel sneller op Onwaar (laag)
GPIO.output (GPIO_TRIGGER1, Onwaar) GPIO.output (GPIO_TRIGGER2, Onwaar) GPIO.output (GPIO_TRIGGER3, Onwaar)
HIERDIE FUNKSIE GEBRUIK AL DIE ULTRASONIESE SENSORS VERSAMEL DIE AFSTAND VAN DIE VOORWERPE OM ONS BOT
# Laat die module toe om op te los
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Stel penne as uitvoer en voer GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Stel sneller in op Onwaar (Laag) GPIO.output (GPIO_TRIGGER, Onwaar) #Laat die module toe om tyd te bepaal.slaap (0.01) #terwyl afstand> 5: #Stuur 10us pols om GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO te aktiveer. uitvoer (GPIO_TRIGGER, Onwaar) begin = time.time () terwyl GPIO.input (GPIO_ECHO) == 0 en time.time ()
LAAT DIE DC -MOTORS MET DIE Raspberry PI WERK
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
BESKRYWING VAN FUNKSIES OM DIE ROBOT TE BEDIEN EN DIT IN VERSKILLENDE RIGTINGS TE BEWEG
def forward ():
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 stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
DIE KAMERA -MODULE WERK EN DIE INSTELLINGS AANPAS
#KAMERA -VANGST
#inisialiseer die kamera en verwys na die rou kamera -opnamekamera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, grootte = (160, 120)) # laat die kamera toe tot opwarmingstyd. slaap (0,001)
Implementeer nou die belangrikste ding waar die bottel die bal volg en enige hindernis op die pad vermy
terwyl (1 <10): { #afstand vanaf voorste ultrasoniese sensorafstand C = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #afstand vanaf regter ultrasone sensor afstandR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #afstand vanaf linker ultrasone sensor afstand L = sonar (GPIO_TRIGGER1, GPIO_ECHO1) as (afstandC = 8: regs draai () time.sleep (0.00625) stop () time.sleep (0.0125) vorentoe () time.sleep (0.00625) stop () time.sleep (0.0125) #wyl gevind == 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) regs draai () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) anders: #anders beweeg dit vorentoe () time.sleep (0.00625) as (afstandC> 10): #dit bring die koördinate van die bal na die middel van die denkbeeldige as van die kamera. as (sentrum_x = 20): as (sentrum_x0): vlag = 1 linksom () tyd. slaap (0,025) vorentoe () tyd. slaap (0,00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)
anders:
#as dit die bal vind en dit is te naby, dan brand die led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("teken", raam) rawCapture.truncate (0) # maak die stroom skoon as voorbereiding vir die volgende raam}
DOEN DIE NODIGE REINIGINGS
GPIO.cleanup () #free al die GPIO penne
Stap 8: Eksterne skakels
Skakel na die demonstrasievideo: klik hier (Youtube)
Skakel na die kode op Git-hub: klik hier (Git-Hub)
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies