Sadržaj:
- Supplies
- Korak 1: Uvod
- Korak 2: Materijali i mekani proizvodi korišteni u ovom projektu
- Korak 3: Šta učiniti?
- Korak 4: Sheme
- Korak 5: Kako to učiniti?
- Korak 6: Pseudo-kod
- Korak 7: Kodirajte
- Korak 8: Vanjske veze
Video: Robot za praćenje lopte: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
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 modernom svijetu. Dakle, samo uskočimo i počnimo graditi …
NAPOMENA: Ovaj dio posla dostavljen Univerzitetu Deakin, IT školi, SIT-210 razvoj ugrađenih sistema
Supplies
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Korak 1: Uvod
Današnji nadzor pruža veliki nedostatak koji počiva na uključivanju ljudi koje, kao što svi znamo, možemo lako omesti, pa nam je od najveće važnosti bilo otkriti sistem koji može autonomno i kontinuirano nadzirati regije. Također želimo identificirati neugodne ili neželjene stvari i opasnosti dok istovremeno donosimo odluke i u skladu s tim reagiramo. Stoga je praćenje objekata uz upotrebu inteligentnih sistema i računara ključno i ključno za postizanje automatiziranog nadzora.
Svaki vanjski nadzorni sistem mora biti u mogućnosti pratiti objekte koji se kreću u njegovom vidnom polju, klasificirati te objekte i otkriti neke od njihovih aktivnosti. Razvio sam metodu za praćenje i klasifikaciju ovih objekata u realnim scenarijima. Praćenje objekata u jednoj kameri vrši se oduzimanjem pozadine, nakon čega slijedi korespondencija regije. Ovo uzima u obzir više znakova, uključujući brzine, veličine i udaljenosti ograničavajućih kutija.
Korak 2: Materijali i mekani proizvodi korišteni u ovom projektu
Korištene hardverske komponente:
- Raspberry Pi (x1)
- Modul kamere Raspberry Pi (x1)
- Ultrazvučni senzor (x3)
- Drajveri motora SparkFun Dual H-Bridge L298 (x1)
- DC motor (x1)
- Oglasna ploča (x1)
- Spajanje žica
Korišteni softver:
OpenCV
Ručni alati:
Python
Korak 3: Šta učiniti?
Svaki vanjski nadzorni sistem mora biti u mogućnosti pratiti objekte koji se kreću u njegovom vidnom polju, klasificirati te objekte i otkriti neke od njihovih aktivnosti. Razvio sam metodu za praćenje i klasifikaciju ovih objekata u realnim scenarijima. Praćenje objekata u jednoj kameri vrši se oduzimanjem pozadine, nakon čega slijedi korespondencija regije. Ovo uzima u obzir više znakova, uključujući brzine, veličine i udaljenosti ograničavajućih kutija.
Ključna stvar pri otkrivanju slika okvir po kadar bilo je izbjegavanje bilo kakvih padova kadra, jer tada bot može ući u stanje limba ako bot ne opazi smjer kretanja loptice zbog pada karata. Ako lopta izađe iz dometa kamere, ona će ući u ono što nazivamo limbo stanje, u tom slučaju bot se okreće za 360 stepeni kako bi vidio prostor oko sebe sve dok se lopta ne vrati u okvir kameru, a zatim počnite da se krećete u njenom smeru.
Za analizu slike uzimam svaki kadar i zatim ga maskiram potrebnom bojom. Zatim pronalazim sve konture i pronalazim najveću među njima i povezujem 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 funkcionira. 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 instaliranje 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 štampana ploča (PCB).
A evo nekih glavnih veza koje trebate uspostaviti:
• Pre svega, modul Raspberry Pi kamere je direktno povezan sa 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 možete i slijediti ovu vezu ako ne možete pronaći gornji video zapis.
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 upotrebu, 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 i zatim ga maskiram potrebnom bojom. Zatim pronalazim sve konture i pronalazim najveću među njima i povezujem 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 funkcionira. 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. A da bismo to učinili, koristit ćemo internetsku softversku platformu koja povezuje uređaje i omogućava im da izvode određene radnje na određenim okidačima, a to su IFTTT okidači.
Korak 6: Pseudo-kod
Evo pseudo koda za dio za otkrivanje koji koristi OpenCV gdje otkrivamo loptu.
Korak 7: Kodirajte
Gore su isječci koda, a ispod je detaljan opis koda.
# uvezite potrebne pakete
UVOZIMO SVE POTREBNE PAKETE
from picamera.array import PiRGBArray #Budući da postoji problem s rješavanjem u malini pi, neće moći snimati kadrove pomoću VideoCapture -a
sa picamera uvoza PiCamera uvoza RPi. GPIO kao GPIO vreme uvoza uvoza numpy kao np
SADA POSTAVLJAMO HARDVER I DODJELUJEMO PINOVE POVEZANE NA POLOVNICI MALINE
GPIO.setmode (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) # Okidač 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 skupljaju 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, Tačno) 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 UPRAVLJANJE 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)
KORIŠTENJE MODULA KAMERE I PODEŠAVANJE POSTAVKI
#CAMERA CAPTURE
#inicijalizirajte kameru i uzmite referencu na sirovu kameru za snimanje kamere = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, veličina = (160, 120)) # dopustite kameru za zagrijavanje time.sleep (0.001)
SAD PROVEDITE GLAVNU STVAR GDJE BOT SLEDI LOPTU I IZBEGLITE BILO KAKVU PREPREKU
dok (1 <10): {#daljenost dolazi s udaljenosti prednjeg ultrazvučnog senzoraC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #udaljenost dolazi s udaljenosti desnog ultrazvučnog senzoraR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #daljenost dolazi s udaljenosti lijevog 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 zamišljene 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 kadar}
UČINITE POTREBNA ČIŠĆENJA
GPIO.cleanup () #oslobodi sve GPIO pinove
Korak 8: Vanjske veze
Link na demonstracijski video: kliknite ovdje (Youtube)
Link do koda na Git-hubu: kliknite ovdje (Git-Hub)
Preporučuje se:
Robot za praćenje s linijom s PICO: 5 koraka (sa slikama)
Robot za praćenje 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 sistem koji je napravljen za male trgovine koje bi trebalo montirati na e-bicikle ili e-skutere za kratke isporuke, na primjer pekara koja želi isporučivati peciva. Track and Trace je sistem koji koriste ca
DIY Pametni robotski alati za praćenje Auto kompleti za praćenje Auto 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 Roboti TheoryLM393 čip uporedite dva fotootpornika, kada LED dioda sa jedne strane na BELOJ strani LED motora zaustavi se, s druge strane motora okreni se pa
Popravak lopte za helikopter: 6 koraka
Popravak lopte za helikopter: Zdravo svima, ovo je igračka helikoptera mog sina koja se nije htjela početi puniti. U ovom Instructableu ćemo pogledati korake koje sam poduzeo da istražim grešku i kako sam je uspio popraviti
Kamera za praćenje lopte od 180 °: 5 koraka (sa slikama)
Kamera za praćenje kugle od 180 °: Dobro došli u moj prvi projekt! Uzbuđen sam što mogu podijeliti ono što sam napravio i pokazati vam korake za izradu vlastite kamere za praćenje. Ovaj projekat je omogućen korišćenjem biblioteke OpenCV zajedno sa Pythonom