Sisukord:

Pallijälgimisrobot: 8 sammu
Pallijälgimisrobot: 8 sammu

Video: Pallijälgimisrobot: 8 sammu

Video: Pallijälgimisrobot: 8 sammu
Video: Одуванчик / The Dandelion. Фильм. StarMedia. Фильмы о Любви. Мелодрама 2024, Juuli
Anonim
Pallijälgimisrobot
Pallijälgimisrobot
Pallijälgimisrobot
Pallijälgimisrobot
Pallijälgimisrobot
Pallijälgimisrobot

Niisiis, ma räägin sellest, kuidas teha pallijälgimisrobot, mis on robot, tuvastab palli ja järgib seda. Põhimõtteliselt on see automatiseeritud jälgimismeetod, mida saab tänapäeva maailmas kasutada. Niisiis, laseme lihtsalt sisse ja hakkame ehitama…

MÄRKUS. See osaülesanne esitati Deakini ülikoolile, IT-koolile, SIT-210 sisseehitatud süsteemide arendamisele

Tarvikud

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Samm 1: Sissejuhatus

Sissejuhatus
Sissejuhatus

Tänane järelevalve toob olulise puuduse, kuna see põhineb inimeste kaasamisel, keda, nagu me kõik teame, saab kergesti hajutada, seega oli meie ülimalt oluline avastada süsteem, mis suudab piirkondi iseseisvalt ja pidevalt jälgida. Samuti tahame otsuste tegemisel tuvastada ebameeldivaid või soovimatuid asju ja ohte ning sellele vastavalt reageerida. Seega on objektide jälgimine arukate süsteemide ja arvutite abil automaatse jälgimise saavutamiseks hädavajalik ja ülioluline.

Iga õues jälgimissüsteem peab suutma jälgida oma vaateväljas liikuvaid objekte, neid objekte klassifitseerida ja mõnda nende tegevust tuvastada. Olen välja töötanud meetodi nende objektide jälgimiseks ja klassifitseerimiseks realistlike stsenaariumide korral. Objekti jälgimine ühes kaameras toimub tausta lahutamise abil, millele järgneb piirkonna vastavus. See võtab arvesse mitmeid näpunäiteid, sealhulgas piirdebokside kiirusi, suurusi ja kaugusi.

2. samm: selles projektis kasutatavad materjalid ja tarkvara

Selles projektis kasutatud materjalid ja tarkvara
Selles projektis kasutatud materjalid ja tarkvara
Selles projektis kasutatud materjalid ja tarkvara
Selles projektis kasutatud materjalid ja tarkvara
Selles projektis kasutatud materjalid ja tarkvara
Selles projektis kasutatud materjalid ja tarkvara

Kasutatud riistvarakomponendid:

  • Vaarika Pi (x1)
  • Vaarika Pi kaamera moodul (x1)
  • Ultraheli andur (x3)
  • SparkFun Dual H-Bridge mootoridraiverid L298 (x1)
  • Alalisvoolumootor (x1)
  • Leivalaud (x1)
  • Juhtmete ühendamine

Kasutatud tarkvara:

OpenCV

Käsitööriistad:

Python

3. samm: mida teha?

Iga õues jälgimissüsteem peab suutma jälgida oma vaateväljas liikuvaid objekte, neid objekte klassifitseerida ja mõnda nende tegevust tuvastada. Olen välja töötanud meetodi nende objektide jälgimiseks ja klassifitseerimiseks realistlike stsenaariumide korral. Objekti jälgimine ühes kaameras toimub tausta lahutamise abil, millele järgneb piirkonna vastavus. See võtab arvesse mitmeid näpunäiteid, sealhulgas piirdebokside kiirusi, suurusi ja kaugusi.

Kaaderhaaval piltide tuvastamisel oli ülioluline vältida kaadrite kukkumist, kuna siis võib bot minna hämardunud olekusse, kui robot ei märka palli liikumissuunda kaadri kukkumise tõttu. Kui pall väljub kaamera ulatusest, läheb see nn hämardusseisundisse, sel juhul pöörab robot 360-kraadise pöörde, et vaadata ümbritsevat ruumi, kuni pall tuleb tagasi kaadrisse. kaamera ja seejärel liikuma selle suunas.

Pildianalüüsi jaoks võtan iga kaadri ja maskeerin selle vajaliku värviga. Siis leian kõik kontuurid ja leian nende hulgast suurima ning seon selle ristkülikusse. Ja näidake põhipildil ristkülikut ja leidke ristküliku keskpunkti koordinaadid.

Lõpuks proovib bot viia palli koordinaadid oma koordinaattelje keskele. Robot töötab nii. Seda saab veelgi täiustada, kasutades IoT -seadet, nagu footoniosake, mis võimaldab teil teavitada asja avastamisest ja sellest, et robot seda jälgib või kui robot on selle jälje kaotanud ja naaseb nüüd baasi.

Pilditöötluse eesmärgil peate oma vaarika pi piirkonda installima OpenCV tarkvara, mis oli minu jaoks üsna keeruline.

OpenCV installimiseks vajaliku teabe saate selle lingi kaudu: klõpsake siin

4. samm: skeemid

Image
Image
Skeemid
Skeemid
Skeemid
Skeemid

Eespool olen esitanud oma projekti skeemid ja koos sellega on trükkplaat (PCB).

Ja siin on mõned peamised ühendused, mida peate tegema:

• Esiteks on Raspberry Pi kaamera moodul otse ühendatud Raspberry Pi -ga.

• Ultraheli andurid VCC on ühendatud ühise klemmiga sama, mis GND (maa) ja ülejäänud kaks ultraheli anduri porti on ühendatud Raspberry Pi GPIO kontaktidega.

• Mootorid ühendatakse H-silla abil.

• Toiteallikaks on aku.

Lisasin ka video, mis võib aidata mõista ultraheli anduri tööd ja selle toimimist.

samuti võite järgida seda linki, kui te ei leia ülaltoodud videot.

5. samm: kuidas seda teha?

Tegin selle projekti, milles kujutati põhirobotit, mis suudab palli jälgida. Robot kasutab kaamerat pilditöötluseks, võttes raame ja jälgides palli. Palli jälgimiseks kasutatakse erinevaid funktsioone, nagu selle värv, suurus, kuju.

Robot leiab kõvakodeeritud värvi ja otsib seejärel seda värvi palli ning järgib seda. Olen selles projektis valinud Raspberry Pi mikrokontrolleriks, kuna see võimaldab meil kasutada selle kaameramoodulit ja annab koodides suure paindlikkuse, kuna see kasutab väga kasutajasõbralikku pythoni keelt ning võimaldab piltide analüüsimisel kasutada ka OpenCV raamatukogu.

Mootorite pöörlemissuuna vahetamiseks või nende peatamiseks on kasutatud H-silda.

Pildianalüüsi jaoks võtan iga kaadri ja maskeerin selle vajaliku värviga. Siis leian kõik kontuurid ja leian nende hulgast suurima ning seon selle ristkülikusse. Ja näidake põhipildil ristkülikut ja leidke ristküliku keskpunkti koordinaadid.

Lõpuks proovib bot viia palli koordinaadid oma koordinaattelje keskele. Robot töötab nii. Seda saab veelgi täiustada, kasutades IoT -seadet, nagu footoniosake, mis võimaldab teil teavitada asja avastamisest ja sellest, et robot seda jälgib või kui robot on selle jälje kaotanud ja naaseb nüüd baasi. Ja selleks kasutame veebipõhist tarkvaraplatvormi, mis ühendab seadmed ja võimaldab neil teatud toimingutega teatud toiminguid sooritada, mis on IFTTT -päästikud.

6. samm: pseudokood

Pseudokood
Pseudokood

Siin on OpenCV-d kasutava tuvastusosa pseudokood, kus tuvastame palli.

Samm: kood

Kood
Kood
Kood
Kood
Kood
Kood
Kood
Kood

Eespool on koodijupid ja allpool koodi üksikasjalik kirjeldus.

# impordi vajalikud paketid

IMPORTIME KÕIK VAJALIKUD PAKETID

alates picamera.array import PiRGBArray #Kuna raspberry pi -s on eraldusvõime probleem, ei saa VideoCapture abil kaadreid jäädvustada

alates picamera import PiCamera import RPi. GPIO kui GPIO impordi aeg import numpy kui np

Nüüd seadistame riistvara ja määrame vaarika PI -ga ühendatud PIN -koodid

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Vasak ultraheliandur

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Eesmine ultraheliandur

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Õige ultraheliandur

GPIO_ECHO3 = 35

MOTOR1B = 18 #Vasak mootor

MOTOR1E = 22

MOTOR2B = 21 #Õige mootor

MOTOR2E = 19

LED_PIN = 13 #Kui ta palli leiab, süttib see led

# Määrake tihvtid väljundiks ja sisendiks

GPIO.seadistus (GPIO_TRIGGER1, GPIO. OUT) # Käivitab GPIO.seadistus (GPIO_ECHO1, GPIO. IN) # Kaja GPIO.seadistus (GPIO_TRIGGER2, GPIO. OUT) # Käivitab GPIO.seadistus (GPIO_ECHO2, GPIO. IN) GPIO.seadistus (GPIO_TRIGGER3, GPIO. OUT) # Käivitage GPIO.seadistus (GPIO_ECHO3, GPIO. IN) GPIO.seadistus (LED_PIN, GPIO. OUT)

# Määra päästik väärtusele vale (madal)

GPIO.väljund (GPIO_TRIGGER1, vale) GPIO.väljund (GPIO_TRIGGER2, vale) GPIO.väljund (GPIO_TRIGGER3, vale)

SEE FUNKTSIOON KASUTAB KÕIK ULTRASOONILISED ANDURID KOGUDA KAUGUSE MEIE BOTI ÜMBER OBJEKTIDEST

# Laske moodulil settida

def sonar (GPIO_TRIGGER, GPIO_ECHO): algus = 0 stopp = 0 # Määrake tihvtid väljundiks ja sisendiks GPIO.seadistus (GPIO_TRIGGER, GPIO. OUT) # Käivita GPIO.seadistus (GPIO_ECHO, GPIO. IN) # Echo # Määra päästik väärtusele Väär (Madal) GPIO.väljund (GPIO_TRIGGER, False) #Luba moodulil määrata aeg. Uni (0,01) #vahemaa> 5: #Saate 10us impulss GPIO.output (GPIO_TRIGGER, True) time.sleep (0,00001) GPIO käivitamiseks. väljund (GPIO_TRIGGER, False) begin = time.time () samas GPIO.input (GPIO_ECHO) == 0 ja time.time ()

DC -MOOTORITE KASUTAMINE VAARIKAPIIRIGA

GPIO.seadistus (MOTOR1B, GPIO. OUT)

GPIO.seadistus (MOTOR1E, GPIO. OUT)

GPIO.seadistus (MOTOR2B, GPIO. OUT) GPIO.seadistus (MOTOR2E, GPIO. OUT)

ROBOTI KASUTAMISEKS JA ERINEVAS SUUNAS LIIKUMISEKS FUNKTSIOONIDE MÄÄRATLEMINE

edasi ():

GPIO väljund (MOTOR1B, GPIO. HIGH) GPIO väljund (MOTOR1E, GPIO. LOW) GPIO väljund (MOTOR2B, GPIO. HIGH) GPIO väljund (MOTOR2E, GPIO. LOW) def vastupidine (): GPIO väljund (MOTOR1B, GPIO. LOW) GPIO.väljund (MOTOR1E, GPIO. HIGH) GPIO.väljund (MOTOR2B, GPIO. LOW) GPIO.väljund (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.väljund (MOTOR1E, GPIO. HIGH) GPIO.väljund (MOTOR2B, GPIO. HIGH) GPIO.väljund (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.väljund (MOTOR1B, GPIO. HIGH) GPIO.väljund (MOTOR1E, GPIO. LOW) GPIO.väljund (MOTOR2B, GPIO. LOW) GPIO.väljund (MOTOR2E, GPIO. HIGH)

def stop ():

GPIO väljund (MOTOR1E, GPIO. LOW) GPIO väljund (MOTOR1B, GPIO. LOW) GPIO väljund (MOTOR2E, GPIO. LOW) GPIO väljund (MOTOR2B, GPIO. LOW)

KAAMERAMODULI TÖÖTAMINE JA SEADISTUSTE REGULEERIMINE

#KAAMERA PILT

# initsialiseeri kaamera ja haara viide toores kaamera jäädvustuskaamerale = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kaamera, suurus = (160, 120)) # lubab kaamera soojenemisajani. magama (0,001)

NÜÜD RAKENDAMA PÕHIASJAT, KUIDAS BOT PALLILE JÄRGIB JA VÄLTIB TEEL TAKISTUSI

samas (1 <10): { #kaugus eesmisest ultrahelianduri kaugusestC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #kaugus paremast ultrahelisensorist, GPIO_ECHO1) kui (kaugus C = 8: paremale pööramine 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) edasi () time.sleep (0.00625) stop () time.sleep (0.0125) paremale pööramine () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #muidu liigub see edasi () time.sleep (0.00625) kui (kaugus C> 10): #see toob kuuli koordinaadid kaamera kujuteldava telje keskpunkti. if (center_x = 20): if (center_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

muidu:

#kui see palli leiab ja see on liiga lähedal, süttib LED. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # tühjendab voo järgmine kaader}

TEE VAJALIKUD PUHASTUSED

GPIO.cleanup () #vaba kõik GPIO tihvtid

8. samm: välised lingid

Link demonstratsioonvideole: klõpsake siin (Youtube)

Link Git-hub'i koodile: klõpsake siin (Git-Hub)

Soovitan: