Sisukord:
- Tarvikud
- Samm 1: Sissejuhatus
- 2. samm: selles projektis kasutatavad materjalid ja tarkvara
- 3. samm: mida teha?
- 4. samm: skeemid
- 5. samm: kuidas seda teha?
- 6. samm: pseudokood
- Samm: kood
- 8. samm: välised lingid
Video: Pallijälgimisrobot: 8 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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
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
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
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
Siin on OpenCV-d kasutava tuvastusosa pseudokood, kus tuvastame palli.
Samm: 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:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust