Sadržaj:
- Pribor
- Korak 1: Uvod
- Korak 2: Materijali i mekani proizvodi korišteni u ovom projektu
- Korak 3: Što učiniti?
- Korak 4: Sheme
- Korak 5: Kako to učiniti?
- Korak 6: Pseudokod
- Korak 7: Kodirajte
- Korak 8: Vanjske veze
Video: Robot za praćenje lopte: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Dakle, u ovome ću vam reći kako napraviti robota za praćenje lopte koji je robot koji će identificirati loptu i slijediti je. To je u osnovi automatizirana tehnika nadzora koja se može koristiti u suvremenom svijetu. Dakle, samo uskočimo i počnimo graditi …
NAPOMENA: Ovo je dio koji je dostavljen Sveučilištu Deakin, IT školi, SIT-210 razvoj ugrađenih sustava
Pribor
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Korak 1: Uvod
Današnji nadzor pruža veliki nedostatak koji počiva na sudjelovanju ljudi koje, kao što svi znamo, možemo lako omesti, pa nam je od najveće važnosti bilo otkriti sustav koji može autonomno i kontinuirano nadzirati regije. Također želimo identificirati neugodne ili neželjene stvari i opasnosti dok istodobno donosimo odluke i u skladu s tim reagiramo. Stoga je praćenje objekata pomoću inteligentnih sustava i računala bitno i ključno za postizanje automatiziranog nadzora.
Svaki vanjski nadzorni sustav mora moći pratiti objekte koji se kreću u njegovu vidnom polju, klasificirati te objekte i otkriti neke njihove aktivnosti. Razvio sam metodu za praćenje i klasifikaciju ovih objekata u realnim scenarijima. Praćenje objekata u jednoj kameri izvodi se pomoću oduzimanja pozadine, nakon čega slijedi korespondencija regije. To uzima u obzir više znakova, uključujući brzine, veličine i udaljenosti graničnih okvira.
Korak 2: Materijali i mekani proizvodi korišteni u ovom projektu
Korištene hardverske komponente:
- Malina Pi (x1)
- Modul kamere Raspberry Pi (x1)
- Ultrazvučni senzor (x3)
- Drajveri SparkFun Dual H-Bridge motora L298 (x1)
- DC motor (x1)
- Oglasna ploča (x1)
- Spajanje žica
Korišteni softver:
OpenCV
Ručni alati:
Piton
Korak 3: Što učiniti?
Svaki vanjski nadzorni sustav mora moći pratiti objekte koji se kreću u njegovu vidnom polju, klasificirati te objekte i otkriti neke njihove aktivnosti. Razvio sam metodu za praćenje i klasifikaciju ovih objekata u realnim scenarijima. Praćenje objekata u jednoj kameri izvodi se pomoću oduzimanja pozadine, nakon čega slijedi korespondencija regije. To uzima u obzir više znakova, uključujući brzine, veličine i udaljenosti graničnih okvira.
Ključna stvar pri otkrivanju slika kadar po kadar bilo je izbjegavanje bilo kakvih padova kadra jer tada bot može prijeći u stanje limba ako bot ne opazi smjer kretanja loptice zbog padova okvira. Ako lopta izađe iz dometa kamere, ući će u ono što nazivamo limbo stanje, u tom slučaju bot se okreće za 360 stupnjeva kako bi promatrao prostor oko sebe sve dok se lopta ne vrati u okvir kameru, a zatim se počnite kretati u njezinom smjeru.
Za analizu slike uzimam svaki kadar, a zatim ga maskiram potrebnom bojom. Zatim pronalazim sve konture i pronalazim najveću među njima i svežem je u pravokutnik. I pokažite pravokutnik na glavnoj slici i pronađite koordinate središta pravokutnika.
Konačno, bot pokušava dovesti koordinate lopte u središte svoje koordinatne osi. Ovako robot radi. To se može dodatno poboljšati korištenjem IoT uređaja poput čestice fotona koji vas može obavijestiti kada se nešto otkrije i da ga robot prati ili kada mu je robot izgubio trag i sada se vraća u bazu.
U svrhu obrade slike, morate instalirati OpenCV softver na svoj maline pi, što je za mene bilo prilično nezgodno.
Sve potrebne informacije za instalaciju OpenCV -a možete dobiti putem ove veze: kliknite ovdje
Korak 4: Sheme
Gore sam dao sheme za svoj projekt, a uz nju je i tiskana ploča (PCB).
A evo nekih glavnih veza koje morate napraviti:
• Prije svega, modul kamere Raspberry Pi izravno je povezan s Raspberry Pi.
• Ultrazvučni senzori VCC spojeni su na zajednički terminal, isto kao i GND (uzemljenje), a preostala dva priključka ultrazvučnog senzora spojena su na GPIO pinove na Raspberry Pi.
• Motori su povezani pomoću H-mosta.
• Napajanje se vrši pomoću baterije.
Dodao sam i video koji bi mogao pomoći u razumijevanju rada ultrazvučnog senzora i njegovog rada.
a također možete slijediti ovu vezu ako ne možete pronaći gornji video.
Korak 5: Kako to učiniti?
Napravio sam ovaj projekt koji prikazuje osnovnog robota koji može pratiti loptu. Robot koristi kameru za obradu slike uzimajući kadrove i prateći loptu. Za praćenje lopte koriste se različite značajke poput boje, veličine i oblika.
Robot pronalazi tvrdo kodiranu boju, zatim traži loptu te boje i slijedi je. Odabrao sam Raspberry Pi kao mikrokontroler u ovom projektu jer nam omogućuje korištenje modula kamere i daje veliku fleksibilnost u kodu jer koristi jezik python koji je vrlo jednostavan za korištenje, a omogućuje nam i korištenje OpenCV biblioteke za analizu slika.
H-most je korišten za promjenu smjera vrtnje motora ili njihovo zaustavljanje.
Za analizu slike uzimam svaki kadar, a zatim ga maskiram potrebnom bojom. Zatim pronalazim sve konture i pronalazim najveću među njima i svežem je u pravokutnik. I pokažite pravokutnik na glavnoj slici i pronađite koordinate središta pravokutnika.
Konačno, bot pokušava dovesti koordinate lopte u središte svoje koordinatne osi. Ovako robot radi. To se može dodatno poboljšati korištenjem IoT uređaja poput čestice fotona koji vas može obavijestiti kada se nešto detektira i da ga robot prati ili kada mu je robot izgubio trag i sada se vraća u bazu. A kako bismo to učinili, koristit ćemo internetsku softversku platformu koja povezuje uređaje i omogućuje im izvođenje određenih radnji na određenim okidačima, odnosno okidačima IFTTT.
Korak 6: Pseudokod
Ovdje je pseudokod za dio za otkrivanje koji koristi OpenCV gdje otkrivamo loptu.
Korak 7: Kodirajte
Gore su isječci koda, a ispod je detaljan opis koda.
# uvoz potrebnih paketa
UVOZIMO SVE POTREBNE PAKETE
from picamera.array import PiRGBArray #Kako postoji problem s rješavanjem u malini pi, neće moći snimati okvire pomoću VideoCapture
s picamera import PiCamera import RPi. GPIO kao GPIO vrijeme uvoza import numpy kao np
SADA POSTAVLJAMO HARDVER I DODJELJUJEMO PINOVE POVEZANE NA POLOVNICI MALINE
Način rada GPIO.set (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Lijevi ultrazvučni senzor
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Prednji ultrazvučni senzor
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Desni ultrazvučni senzor
GPIO_ECHO3 = 35
MOTOR1B = 18 #Lijevi motor
MOTOR1E = 22
MOTOR2B = 21 #Desni motor
MOTOR2E = 19
LED_PIN = 13 #Ako pronađe loptu, tada će zasvijetliti vodstvo
# Postavite pinove kao izlaz i ulaz
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Okidač GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO_TRIGGER3, GPIO. OUT) # Okidač GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Postavite okidač na Netačno (nisko)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
Ova funkcija koristi sve ultrazvučne senzore koji prikupljaju udaljenost od objekata oko naše zemlje.
# Dopustite modulu da se slegne
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Postavite pinove kao izlaz i ulaz GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Okidač GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Okidač postavite na False (Nisko) GPIO.izlaz (GPIO_TRIGGER, Netačno) #Dopustite modulu da podmiri vrijeme.spavanje (0,01) #dok je udaljenost> 5: #Pošaljite 10us impuls za aktiviranje GPIO.izlaza (GPIO_TRIGGER, Istina) vrijeme.spavanje (0,00001) GPIO. izlaz (GPIO_TRIGGER, False) begin = time.time () dok je GPIO.input (GPIO_ECHO) == 0 i time.time ()
USKLAĐIVANJE DC MOTORA NA RAD S PI MALINE
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINIRANJE FUNKCIJA ZA RUKOVANJE ROBOTOM I NJEGOVO POKRETANJE U RAZLIČITIM SMJERIMA
def forward ():
GPIO.izlaz (MOTOR1B, GPIO. HIGH) GPIO.izlaz (MOTOR1E, GPIO. LOW) GPIO.izlaz (MOTOR2B, GPIO. HIGH) GPIO.izlaz (MOTOR2E, GPIO. LOW) def unazad (): GPIO.izlaz (MOTOR1B, GPIO. LOW) GPIO.izlaz (MOTOR1E, GPIO. HIGH) GPIO.izlaz (MOTOR2B, GPIO. LOW) GPIO.izlaz (MOTOR2E, GPIO. HIGH) def desno okret (): GPIO.izlaz (MOTOR1B, GPIO. LOW) GPIO.izlaz (MOTOR1E, GPIO. HIGH) GPIO.izlaz (MOTOR2B, GPIO. HIGH) GPIO.izlaz (MOTOR2E, GPIO. LOW) def lijevo okretanje (): GPIO.izlaz (MOTOR1B, GPIO. HIGH) GPIO.izlaz (MOTOR1E, GPIO. LOW) GPIO.izlaz (MOTOR2B, GPIO. LOW) GPIO.izlaz (MOTOR2E, GPIO. HIGH)
def stop ():
GPIO.izlaz (MOTOR1E, GPIO. LOW) GPIO.izlaz (MOTOR1B, GPIO. LOW) GPIO.izlaz (MOTOR2E, GPIO. LOW) GPIO.izlaz (MOTOR2B, GPIO. LOW)
KAKO RADITI MODUL KAMERE I PRILAGOĐAVANJE POSTAVKI
#KAMERA HVATANJE
#inicijalizirajte kameru i uzmite referencu na sirovu kameru za snimanje = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, veličina = (160, 120)) # dopustite kameru za vrijeme zagrijavanja.spavanje (0,001)
SAD PROVEDITE GLAVNU STVAR GDJE BOT SLEDI LOPTU I IZBJEGAVAJTE BILO KAKVU PREPREKU
dok (1 <10): {#daljenost dolazi s udaljenosti prednjeg ultrazvučnog senzoraC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #daljenost dolazi s desne udaljenosti ultrazvučnog senzoraR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #daljenost dolazi s lijeve udaljenosti ultrazvučnog senzoraL = sonar (GPIO_TRIGER1, 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) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #inače se pomiče naprijed () time.sleep (0.00625) if (distanceC> 10): #it dovodi koordinate lopte u središte imaginarne osi kamere. 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)
drugo:
#ako pronađe loptu i ako je preblizu, osvjetljava vodstvo. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # obrišite tok u pripremi za sljedeći okvir}
UČINITE POTREBNA ČIŠĆENJA
GPIO.cleanup () #oslobodite sve GPIO pinove
Korak 8: Vanjske veze
Link na demonstracijski video: kliknite ovdje (Youtube)
Veza na kôd na Git-hubu: kliknite ovdje (Git-Hub)
Preporučeni:
Robot za praćenje s PICO -om: 5 koraka (sa slikama)
Robot s linijskim sljedbenicima s PICO -om: Prije nego što budete sposobni stvoriti robota koji može okončati civilizaciju kakvu poznajemo i koji je u stanju okončati ljudsku rasu. Prvo morate biti u mogućnosti stvoriti jednostavne robote, one koji mogu slijediti liniju povučenu na tlu, a ovdje ćete
Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)
Track & trace za male trgovine: Ovo je sustav koji je napravljen za male trgovine koje bi se trebale montirati na e-bicikle ili e-skutere za kratke isporuke, na primjer pekara koja želi isporučivati peciva. Track and Trace znači sustav Track and Trace koji koriste ca
DIY pametni robotski alati za praćenje automobila Kompleti za praćenje automobila Fotoosjetljivi: 7 koraka
DIY Pametni roboti za praćenje automobila Kompleti za praćenje Automobil Fotoosjetljivi: Dizajn SINONING ROBOT -a Možete kupiti od robota za praćenje Robotski čip TheoryLM393 usporedite dva fotootpornika, kada LED dioda s jednog bočnog fotootpornika na BIJELOJ strani motora odmah će se zaustaviti, s druge strane motora okreni se pa
Robot za praćenje boja na temelju višesmjernog kotača i OpenCV -a: 6 koraka
Robot za praćenje boja na temelju višesmjernog kotača i OpenCV -a: Za primjenu praćenja boja koristim svesmjerno kućište kotača, a koristim i mobilni softver pod nazivom OpenCVBot. Hvala programerima softvera ovdje, hvala vam. OpenCV Bot zapravo otkriva ili prati bilo koji objekt u stvarnom vremenu kroz obradu slike u
Popravak lopte za helikopter: 6 koraka
Popravak lopte za helikopter: Bok svima, Ovo je igračka za helikopter mog sina koja se nije htjela početi puniti. U ovom Instructableu ćemo pogledati korake koje sam poduzeo kako bih istražio grešku i kako sam je uspio popraviti