Përmbajtje:

Roboti i Ndjekjes së Topit: 8 Hapa
Roboti i Ndjekjes së Topit: 8 Hapa

Video: Roboti i Ndjekjes së Topit: 8 Hapa

Video: Roboti i Ndjekjes së Topit: 8 Hapa
Video: 5 Gjera qe deri sot i keni bere gabim 2024, Nëntor
Anonim
Robot për përcjelljen e topit
Robot për përcjelljen e topit
Robot për përcjelljen e topit
Robot për përcjelljen e topit
Robot për përcjelljen e topit
Robot për përcjelljen e topit

Pra, në këtë, unë do të tregoj se si të krijoj një robot për përcjelljen e topit që është një robot që identifikon një top dhe e ndjek atë. Në thelb është një teknikë mbikëqyrjeje e automatizuar që mund të përdoret në botën moderne. Pra, thjesht le të hyjmë dhe të fillojmë të ndërtojmë…

SHENIM: Kjo është detyra e pjesës e dorëzuar në Deakin University, School of IT, SIT-210 Embedded Systems Development

Furnizimet

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

Hapi 1: Hyrje

Prezantimi
Prezantimi

Mbikëqyrja e sotme siguron një pengesë të madhe, e cila është se mbështetet në përfshirjen e njerëzve, e cila siç e dimë të gjithë mund të shpërqendrohet lehtë, kështu që ishte me rëndësi të madhe për të zbuluar një sistem i cili mund të monitorojë rajonet në mënyrë autonome dhe të vazhdueshme. Dhe gjithashtu ne duam të identifikojmë gjëra dhe rreziqe të pakëndshme ose të padëshiruara ndërsa marrim vendime njëkohësisht dhe përgjigjemi në përputhje me rrethanat. Pra, përcjellja e objekteve me përdorimin e sistemeve inteligjente dhe kompjuterëve është thelbësore dhe vendimtare për të arritur mbikëqyrje të automatizuar.

Çdo sistem mbikqyrjeje në natyrë duhet të jetë në gjendje të gjurmojë objektet që lëvizin në fushën e tij të shikimit, të klasifikojë këto objekte dhe të zbulojë disa nga aktivitetet e tyre. Unë kam zhvilluar një metodë për të gjurmuar dhe klasifikuar këto objekte në skenarë realistë. Ndjekja e objekteve në një aparat fotografik të vetëm kryhet duke përdorur zbritjen e sfondit, e ndjekur nga korrespondenca e rajonit. Kjo merr parasysh sugjerime të shumta duke përfshirë shpejtësitë, madhësitë dhe distancat e kutive kufizuese.

Hapi 2: Materialet dhe produktet e buta të përdorura në këtë projekt

Materialet dhe produktet e buta të përdorura në këtë projekt
Materialet dhe produktet e buta të përdorura në këtë projekt
Materialet dhe produktet e buta të përdorura në këtë projekt
Materialet dhe produktet e buta të përdorura në këtë projekt
Materialet dhe produktet e buta të përdorura në këtë projekt
Materialet dhe produktet e buta të përdorura në këtë projekt

Komponentët e harduerit të përdorur:

  • Raspberry Pi (x1)
  • Moduli i kamerës Raspberry Pi (x1)
  • Sensor tejzanor (x3)
  • Drejtuesit e motorëve SparkFun Dual H-Bridge L298 (x1)
  • Motor DC (x1)
  • Breadboard (x1)
  • Lidhja e telave

Softueri i përdorur:

OpenCV

Mjetet e dorës:

Python

Hapi 3: Çfarë duhet të bëni?

Çdo sistem mbikqyrjeje në natyrë duhet të jetë në gjendje të gjurmojë objektet që lëvizin në fushën e tij të shikimit, të klasifikojë këto objekte dhe të zbulojë disa nga aktivitetet e tyre. Unë kam zhvilluar një metodë për të gjurmuar dhe klasifikuar këto objekte në skenarë realistë. Ndjekja e objekteve në një aparat fotografik të vetëm kryhet duke përdorur zbritjen e sfondit, e ndjekur nga korrespondenca e rajonit. Kjo merr parasysh sugjerime të shumta duke përfshirë shpejtësitë, madhësitë dhe distancat e kutive kufizuese.

Gjëja kryesore gjatë zbulimit të imazheve kuadër për kuadër ishte shmangia e çdo rënie të kornizës pasi boti mund të kalojë në gjendje limbo nëse boti nuk vëren drejtimin e lëvizjes së topit për shkak të rënies së kornizës. Nëse topi del jashtë rrezes së kamerës, do të hyjë në atë që ne e quajmë gjendje limbo, në atë rast, boti bën një kthesë 360 gradë për të parë hapësirën rreth tij derisa topi të kthehet në kuadrin e kamerën dhe pastaj filloni të lëvizni në drejtimin e saj.

Për analizën e imazhit, unë jam duke marrë çdo kornizë dhe më pas e maskoj me ngjyrën e nevojshme. Pastaj gjej të gjitha konturet dhe gjej më të madhen në mesin e tyre dhe e lidh atë në një drejtkëndësh. Dhe tregoni drejtkëndëshin në imazhin kryesor dhe gjeni koordinatat e qendrës së drejtkëndëshit.

Së fundi, boti përpiqet të sjellë koordinatat e topit në qendër të boshtit të tij koordinativ. Kështu funksionon roboti. Kjo mund të përmirësohet më tej duke përdorur një pajisje IoT si një grimcë fotoni e cila mund t'ju informojë kur zbulohet një gjë dhe se roboti po e ndjek atë ose kur roboti ka humbur gjurmët e tij dhe tani po kthehet në bazë Me

Me qëllim të përpunimit të imazhit, ju duhet të instaloni softuer OpenCV në pi tuaj të mjedrës, i cili ishte mjaft i ndërlikuar për mua.

Ju mund të merrni çdo informacion të kërkuar për të instaluar OpenCV përmes kësaj lidhjeje: klikoni këtu

Hapi 4: Skemat

Image
Image
Skematike
Skematike
Skematike
Skematike

Më sipër kam siguruar skemat për projektin tim dhe së bashku me të është Bordi i Qarkut të Shtypur (PCB).

Dhe këtu janë disa nga lidhjet kryesore që duhet të bëni:

• Para së gjithash moduli Kamera Raspberry Pi lidhet drejtpërdrejt me Raspberry Pi.

• Sensorët tejzanor VCC janë të lidhur me terminalin e përbashkët njëjtë me GND (tokë) dhe dy portet e mbetura të sensorit tejzanor janë të lidhura me kunjat GPIO në Raspberry Pi.

• Motorët janë të lidhur duke përdorur H-Bridge.

• Energjia furnizohet duke përdorur Baterinë.

Unë gjithashtu kam shtuar videon që mund të ndihmojë në kuptimin e punës së sensorit tejzanor dhe si funksionon.

dhe gjithashtu mund të ndiqni këtë lidhje nëse nuk mund ta gjeni videon e mësipërme.

Hapi 5: Si të veproni?

Unë e bëra këtë projekt që përshkruan një robot bazë i cili mund të gjurmojë një top. Roboti përdor një aparat fotografik për të bërë përpunimin e imazhit duke marrë korniza dhe gjurmuar topin. Për të gjurmuar topin përdoren karakteristika të ndryshme si ngjyra, madhësia, forma e tij.

Roboti gjen një ngjyrë të koduar dhe pastaj kërkon topin e asaj ngjyre dhe e ndjek atë. Unë kam zgjedhur Raspberry Pi si mikrokontrollues në këtë projekt sepse na lejon të përdorim modulin e tij të kamerës dhe jep fleksibilitet të madh në kod pasi përdor gjuhën python e cila është shumë miqësore për përdoruesit dhe gjithashtu na lejon të përdorim bibliotekën OpenCV për analizimin e imazheve.

Një urë H është përdorur për të ndërruar drejtimin e rrotullimit të motorëve ose për t'i ndaluar ato.

Për analizën e imazhit, unë jam duke marrë çdo kornizë dhe më pas e maskoj me ngjyrën e nevojshme. Pastaj gjej të gjitha konturet dhe gjej më të madhen në mesin e tyre dhe e lidh atë në një drejtkëndësh. Dhe tregoni drejtkëndëshin në imazhin kryesor dhe gjeni koordinatat e qendrës së drejtkëndëshit.

Së fundi, boti përpiqet të sjellë koordinatat e topit në qendër të boshtit të tij koordinativ. Kështu funksionon roboti. Kjo mund të përmirësohet më tej duke përdorur një pajisje IoT si një grimcë fotoni e cila mund t'ju informojë kur zbulohet një gjë dhe se roboti po e ndjek atë ose kur roboti ka humbur gjurmët e tij dhe tani po kthehet në bazë Me Dhe për ta bërë këtë ne do të përdorim një platformë softuerike në internet që lidh pajisjet dhe u lejon atyre të kryejnë veprime të caktuara në shkaktarë të veçantë që janë shkaktarët IFTTT.

Hapi 6: Pseudo-Kodi

Pseudo-Kodi
Pseudo-Kodi

Këtu është pseudokodi për pjesën e zbulimit duke përdorur OpenCV ku zbulojmë një top.

Hapi 7: Kodi

Kodi
Kodi
Kodi
Kodi
Kodi
Kodi
Kodi
Kodi

Më sipër janë copëzat e kodit dhe më poshtë është përshkrimi i detajuar i kodit.

# importoni paketat e nevojshme

Ne IMPORTOJM ALL T ALL GJITHA PAKETAT E NEVOJSHME

nga picamera.array import PiRGBArray #Pasi ka një problem zgjidhjeje në mjedër pi, nuk do të jetë në gjendje të kapë korniza nga VideoCapture

nga picamera import PiCamera import RPi. GPIO si GPIO import import time numpy si np

TANI ND SRMBLEJM HARDWARE DHE CAKTOJM KINJET E LIDHURA ME PI MJEDRS

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Sensori tejzanor i majtë

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Sensori tejzanor para

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Sensor tejzanor i drejtë

GPIO_ECHO3 = 35

MOTOR1B = 18 #Motor i majtë

MOTOR1E = 22

MOTOR2B = 21 #Motor i drejtë

MOTOR2E = 19

LED_PIN = 13 #Nëse e gjen topin, atëherë do të ndriçojë led -in

# Vendosni kunjat si dalje dhe hyrje

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Shkaktoj GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHOIN (GPIO_ECHO2) GPIO_TRIGGER3, GPIO. OUT) # Shkaktoni GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Vendosni shkasin në False (E ulët)

GPIO.putput (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)

KY FUNKSION P USRDOR T ALL GJITH SENSORT ULTRASONIK CO Mbledhni distancën nga objektet rreth bots sonë

# Lejo që moduli të vendoset

def sonar (GPIO_TRIGGER, GPIO_ECHO): fillimi = 0 ndalim = 0 # Vendosni kunjat si dalje dhe hyrje GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Shkaktoni GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Vendosni shkas në False (E ulët) GPIO.output (GPIO_TRIGGER, False) #Lejo që moduli të rregullojë kohën. Gjumë (0.01) #ndërkohë distancë> 5: #Dërgo pulsin 10us për të shkaktuar GPIO. Dalje (GPIO_TRIGGER, E vërtetë) kohë. Fjetje (0.00001) GPIO. dalja (GPIO_TRIGGER, False) filloj = koha.kohë () ndërsa GPIO.input (GPIO_ECHO) == 0 dhe koha.kohë ()

P GRFSHITJA E MOTORSVE DC P TOR T W PUN ME PI MJEDRS

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

P DRCAKTIMI I FUNKSIONEVE P TOR T VEPRUAR ROBOTIN DHE LAKVIZJEN E TIJ N IN DREJTIMET E NDRYSHME

def përpara ():

GPIO.putput (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.putput (MOTOR1, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.putput (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1), GPIO. LOW) GPIO.putput (MOTOR2B, GPIO. LOW) GPIO.putput (MOTOR2E, GPIO. HIGHT)

def stop ():

GPIO.putput (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)

B MRJA E PUNKS S MODULIT TAM KAMERAS DHE RREGULLIMI I PETRGJITHSHME

#KAPTURA E KAMERS

# inicializoni kamerën dhe merrni një referencë për kamerën e parë të kapjes së kamerës = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (kamera, madhësia = (160, 120)) # lejoni kamerën për kohën e ngrohjes. gjumi (0.001)

TANI ZBATIMI I GJITH GJERS KU BOT P FRSHKRON topin dhe shmangni çdo pengesë në rrugën

ndërsa (1 <10): { #distanca që vjen nga distanca e sensorit tejzanor para C = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distanca që vjen nga distanca e djathtë e sensorit tejzanor, GPIO_ECHO1) nëse (distancaC = 8: kthimi djathtas () koha. Gjumi (0.00625) ndale () koha. Gjumi (0.0125) përpara () koha. Gjumi (0.00625) ndalesa () koha. Gjumi (0.0125) #ndërkohë që gjenden == 0: leftturn () time.sleep (0.00625) elif distance L> = 8: leftturn () time.sleep (0.00625) stop () time. Sleep (0.0125) përpara () time.sleep (0.00625) stop () time.sleep. distanceC> 10): #sjell koordinatat e topit në qendër të boshtit imagjinar të kamerës. nëse (centre_x = 20): if (centre_x0): flag = 1 majtas () kohë. fle (0.025) përpara () kohë. fle (0.00003125) ndale () koha. gjumi (0.00625) tjetër: ndale () koha. gjumi (0.01)

tjeter:

#nëse e gjen topin dhe është shumë afër ndriçon led -in. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("barazim", kornizë) rawCapture.truncate (0) # pastroni rrjedhën në përgatitje për kuadri tjetër}

BONI PASTRIMET E NEVOJSHME

GPIO.cleanup () #pa pagesë të gjitha kunjat e GPIO

Hapi 8: Lidhjet e jashtme

Lidhje me videon demonstruese: kliko këtu (Youtube)

Lidhja me Kodin në Git-hub: klikoni këtu (Git-Hub)

Recommended: