Sadržaj:

Robot za praćenje lopte: 8 koraka
Robot za praćenje lopte: 8 koraka

Video: Robot za praćenje lopte: 8 koraka

Video: Robot za praćenje lopte: 8 koraka
Video: НЕЗАКОННЫЕ Эксперименты c БОКСИ БУ из ПОППИ ПЛЕЙТАЙМ и ХАГИ ВАГИ в VR! 2024, Studeni
Anonim
Robot za praćenje loptica
Robot za praćenje loptica
Robot za praćenje loptica
Robot za praćenje loptica
Robot za praćenje loptica
Robot za praćenje loptica

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

Uvod
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

Materijali i mekani proizvodi korišteni u ovom projektu
Materijali i mekani proizvodi korišteni u ovom projektu
Materijali i mekani proizvodi korišteni u ovom projektu
Materijali i mekani proizvodi korišteni u ovom projektu
Materijali i mekani proizvodi korišteni u ovom projektu
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

Image
Image
Sheme
Sheme
Sheme
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

Pseudokod
Pseudokod

Ovdje je pseudokod za dio za otkrivanje koji koristi OpenCV gdje otkrivamo loptu.

Korak 7: Kodirajte

Kodirati
Kodirati
Kodirati
Kodirati
Kodirati
Kodirati
Kodirati
Kodirati

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: