Talaan ng mga Nilalaman:

Robot sa Pagsubaybay ng Bola: 8 Mga Hakbang
Robot sa Pagsubaybay ng Bola: 8 Mga Hakbang

Video: Robot sa Pagsubaybay ng Bola: 8 Mga Hakbang

Video: Robot sa Pagsubaybay ng Bola: 8 Mga Hakbang
Video: How to Level Up With A Robot! 2024, Nobyembre
Anonim
Robot sa Pagsubaybay sa Bola
Robot sa Pagsubaybay sa Bola
Robot sa Pagsubaybay sa Bola
Robot sa Pagsubaybay sa Bola
Robot sa Pagsubaybay sa Bola
Robot sa Pagsubaybay sa Bola

Kaya sa ito, sasabihin ko kung paano gumawa ng isang ball tracking robot na isang robot ay makikilala ang isang bola at susundan ito. Karaniwan ito ay isang automated na diskarteng surveillance na maaaring magamit sa modernong mundo. Kaya, hayaan mo lang kaming sumakay at simulan ang pagbuo …

TANDAAN: Ito ang bahaging pagtatalaga ng bahaging isinumite sa Deakin University, School of IT, SIT-210 Embedded Systems Development

Mga gamit

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

Hakbang 1: Panimula

Panimula
Panimula

Ang pagsubaybay ngayon ay nagbibigay ng isang pangunahing sagabal na kung saan ay nakasalalay ito sa paglahok ng mga tao na alam nating lahat na madaling ma-distract, kaya't sa aming pinakamahalagang kahalagahan upang matuklasan ang isang sistema na maaaring subaybayan ang mga rehiyon nang awtonomiko at tuloy-tuloy. At nais din naming makilala ang mga kasuklam-suklam o hindi ginustong mga bagay at panganib habang sabay na gumagawa ng mga desisyon at tumutugon nang naaayon. Kaya't ang pagsubaybay sa object sa paggamit ng mga intelihente na system at computer ay mahalaga at mahalaga upang makamit ang awtomatikong pagsubaybay.

Ang anumang panlabas na sistema ng surveillance ay dapat na subaybayan ang mga bagay na gumagalaw sa larangan ng pagtingin nito, uriin ang mga bagay na ito at tuklasin ang ilan sa kanilang mga aktibidad. Bumuo ako ng isang pamamaraan upang subaybayan at mauri ang mga bagay na ito sa makatotohanang mga senaryo. Ang pagsubaybay sa object sa isang solong camera ay ginaganap gamit ang pagbabawas sa background, na sinusundan ng pagsusulatan ng rehiyon. Isinasaalang-alang nito ang maraming mga pahiwatig kabilang ang mga bilis, laki at distansya ng mga hangganan na kahon.

Hakbang 2: Mga Materyales at Soft-wares na Ginamit sa Project na Ito

Mga Materyales at Soft-wares na Ginamit sa Project na Ito
Mga Materyales at Soft-wares na Ginamit sa Project na Ito
Mga Materyales at Soft-wares na Ginamit sa Project na Ito
Mga Materyales at Soft-wares na Ginamit sa Project na Ito
Mga Materyales at Soft-wares na Ginamit sa Project na Ito
Mga Materyales at Soft-wares na Ginamit sa Project na Ito

Ginamit ang Mga Component ng Hardware:

  • Raspberry Pi (x1)
  • Raspberry Pi Camera Module (x1)
  • Ultrasonic Sensor (x3)
  • Mga driver ng SparkFun Dual H-Bridge na motor L298 (x1)
  • DC Motor (x1)
  • Breadboard (x1)
  • Mga Koneksyon sa Mga Wires

Ginamit na Software:

OpenCV

Mga Kasangkapan sa Kamay:

Sawa

Hakbang 3: Ano ang Dapat Gawin?

Ang anumang panlabas na sistema ng surveillance ay dapat na subaybayan ang mga bagay na gumagalaw sa larangan ng pagtingin nito, uriin ang mga bagay na ito at tuklasin ang ilan sa kanilang mga aktibidad. Bumuo ako ng isang pamamaraan upang subaybayan at mauri ang mga bagay na ito sa makatotohanang mga senaryo. Ang pagsubaybay sa object sa isang solong camera ay ginaganap gamit ang pagbabawas sa background, na sinusundan ng pagsusulatan ng rehiyon. Isinasaalang-alang nito ang maraming mga pahiwatig kabilang ang mga bilis, laki at distansya ng mga hangganan na kahon.

Ang pangunahing bagay habang nakakakita ng mga frame ng imahe ayon sa frame ay upang maiwasan ang anumang mga patak ng frame habang ang bot ay maaaring mapunta sa isang limbo na estado kung nabigo ang bot na mapansin ang direksyon ng paggalaw ng bola dahil sa mga patak ng frame. Kung ang bola ay napupunta sa labas ng saklaw ng camera, mapupunta ito sa tinatawag nating state ng limbo, sa kasong iyon, ang bot ay gumagawa ng 360-degree turn upang matingnan ang puwang sa paligid nito hanggang sa bumalik ang bola sa frame ng ang camera at pagkatapos ay magsimulang gumalaw sa direksyon nito.

Para sa pagtatasa ng imahe, kumukuha ako ng bawat frame at pagkatapos ay masking ito sa kinakailangang kulay. Pagkatapos hanapin ko ang lahat ng mga contour at hanapin ang pinakamalaki sa kanila at itinali ito sa isang rektanggulo. At ipakita ang rektanggulo sa pangunahing imahe at hanapin ang mga coordinate ng gitna ng rektanggulo.

Sa wakas, sinusubukan ng bot na dalhin ang mga coordinate ng bola sa gitna ng coordinate axis nito. Ganito gumagana ang robot. Maaari itong karagdagang mapahusay sa pamamagitan ng paggamit ng isang aparato ng IoT tulad ng isang maliit na butil ng photon na maaaring ipaalam sa iyo kapag may napansin na bagay at sinusundan ito ng robot o kapag nawala ang track ng robot at ngayon ay babalik sa base.

Para sa layunin ng pagproseso ng imahe, kailangan mong mag-install ng OpenCV software sa iyong raspberry pi na medyo nakakalito sa akin.

Maaari kang makakuha ng anumang kinakailangang impormasyon upang mai-install ang OpenCV sa pamamagitan ng link na ito: mag-click dito

Hakbang 4: Mga Skematika

Image
Image
Mga Skema
Mga Skema
Mga Skema
Mga Skema

Sa itaas ay ibinigay ko ang mga iskema para sa aking proyekto at kasama nito ang Printed Circuit Board (PCB).

At narito ang ilan sa mga pangunahing koneksyon na kailangan mong gawin:

• Una sa lahat ang module ng Raspberry Pi Camera ay direktang konektado sa Raspberry Pi.

• Ang mga sensor ng Ultrasonic VCC ay konektado sa karaniwang terminal na pareho ay kasama ang GND (ground) at ang natitirang dalawang port ng ultrasonic sensor ay konektado sa mga GPIO pin sa Raspberry Pi.

• Ang mga Motors ay konektado gamit ang H-Bridge.

• Ang Lakas ay ibinibigay gamit ang Baterya.

Naidagdag ko rin ang video na maaaring makatulong sa pag-unawa sa pagtatrabaho ng ultrasonic sensor at kung paano ito gumagana.

at maaari mo ring sundin ang link na ito kung hindi mo mahahanap ang video sa itaas.

Hakbang 5: Paano Gawin?

Ginawa ko ang proyektong ito na naglalarawan ng isang pangunahing robot na maaaring subaybayan ang isang bola. Gumagamit ang robot ng camera upang magproseso ng imahe sa pamamagitan ng pagkuha ng mga frame at subaybayan ang bola. Upang subaybayan ang bola ng iba't ibang mga tampok tulad ng kulay, laki, hugis ay ginagamit.

Nakahanap ang Robot ng isang hardcoded na kulay at pagkatapos ay hanapin ang bola ng kulay na iyon at sundin ito. Pinili ko ang Raspberry Pi bilang micro-controller sa proyektong ito dahil pinapayagan kaming gamitin ang module ng camera nito at nagbibigay ng mahusay na kakayahang umangkop sa code dahil gumagamit ito ng wika ng sawa na napaka-friendly ng gumagamit at pinapayagan din kaming gumamit ng OpenCV library para sa pagsusuri ng mga imahe.

Ginamit ang isang H-Bridge upang ilipat ang direksyon ng pag-ikot ng mga motor o upang ihinto ang mga ito.

Para sa pagtatasa ng imahe, kumukuha ako ng bawat frame at pagkatapos ay masking ito sa kinakailangang kulay. Pagkatapos hanapin ko ang lahat ng mga contour at hanapin ang pinakamalaki sa kanila at itinali ito sa isang rektanggulo. At ipakita ang rektanggulo sa pangunahing imahe at hanapin ang mga coordinate ng gitna ng rektanggulo.

Sa wakas, sinusubukan ng bot na dalhin ang mga coordinate ng bola sa gitna ng coordinate axis nito. Ganito gumagana ang robot. Maaari itong karagdagang mapahusay sa pamamagitan ng paggamit ng isang aparato ng IoT tulad ng isang maliit na butil ng photon na maaaring ipaalam sa iyo kapag may napansin na bagay at sinusundan ito ng robot o kapag nawala ang track ng robot at ngayon ay babalik sa base. At upang magawa ito ay gumagamit kami ng isang online software platform na kumokonekta sa mga aparato at pinapayagan silang magsagawa ng ilang mga pagkilos sa mga tukoy na pag-trigger na mga pag-trigger ng IFTTT.

Hakbang 6: Pseudo-Code

Pseudo-Code
Pseudo-Code

Narito ang pseudo-code para sa bahagi ng pagtuklas gamit ang OpenCV kung saan nakakakita kami ng isang bola.

Hakbang 7: Code

Code
Code
Code
Code
Code
Code
Code
Code

Sa itaas ay ang mga snippet ng code at sa ibaba ay ang detalyadong paglalarawan ng code.

# i-import ang kinakailangang mga pakete

MAHALAGA NAMIN ANG LAHAT NG KAILANGANG mga pakete

mula sa picamera.array import PiRGBArray # Tulad ng isang problema sa paglutas sa raspberry pi, hindi makakakuha ng mga frame ng VideoCapture

mula sa picamera import PiCamera import RPi. GPIO bilang GPIO import time import numpy bilang np

NGAYON NAG-SET up Kami ng HARDWARE AT INTANSYA ANG PINS NA NAKakonekta SA RASPBERRY PI

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Kaliwang ultrasonic sensor

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 # Pangunahing ultrasonic sensor

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Tama na ultrasonic sensor

GPIO_ECHO3 = 35

MOTOR1B = 18 #Kaliwang Motor

MOTOR1E = 22

MOTOR2B = 21 # Tamang Motor

MOTOR2E = 19

LED_PIN = 13 # Kung mahahanap nito ang bola, pagkatapos ay sindihan nito ang humantong

# Itakda ang mga pin bilang output at input

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

# Itakda ang gatilyo sa Maling (Mababang)

GPIO.output (GPIO_TRIGGER1, Mali) GPIO.output (GPIO_TRIGGER2, Mali) GPIO.output (GPIO_TRIGGER3, Mali)

ANG FUNCTION NA ITO AY GINAGAMIT ANG LAHAT NG ULTRASONIC SENSORS NA KOLEKTA ANG Distansya MULA SA MGA LAYUNIN SA PANAHON NG ATING BOT

# Payagan ang module na mag-ayos

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Itakda ang mga pin bilang output at input ng GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Set trigger to False (Mababa) GPIO.output (GPIO_TRIGGER, Mali) # Payagan ang module na mag-ayos ng oras. Tulog (0.01) # habang distansya> 5: # Magpadala ng 10us pulse upang ma-trigger ang GPIO.output (GPIO_TRIGGER, True) time.sulog (0.00001) GPIO. output (GPIO_TRIGGER, False) magsimula = time.time () habang GPIO.input (GPIO_ECHO) == 0 at time.time ()

KUMUHA SA DC MOTORS NA MAGING TRABAHO SA RASPBERRY PI

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

NAGTUTURO NG MGA FUNCTIONS UPANG GUSTO ANG ROBOT AT GAWIN ITO SA IBA’T IBANG DIREKSYON

def forward ():

GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.output (MOTOR1B, 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.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)

def stop ():

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

GUMAGAWA NG MODULE NG CAMERA MODULE AT INAADWAY ANG MGA SETTING

# CAMERA CAPTURE

#initialize ang camera at kumuha ng isang sanggunian sa raw camera capture camera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # payagan ang camera sa oras ng pag-init. pagtulog (0.001)

NGAYON NA NAPAPATUNAY ANG PANGUNAHING bagay NA SAAN ANG SUSUNOD ANG BOLA AT IWASAN ANG ANUMANG sagabal sa PARAAN

habang (1 <10): {#distansya na nagmumula sa harap na distansya ng ultrasonic sensorC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distansya na nagmumula sa kanang ultrasonic sensor distanceR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distansya na nagmumula sa kaliwang ultrasonic sensor distansyaL = sonar (GPIO_TRIGGER1, GPIO_ECHO1) kung (distansyaC = 8: kumanan () oras. Makatulog (0.00625) huminto () oras. Matulog (0.0125) pasulong () oras. Matulog (0.00625) huminto () oras. Matulog (0.0125) # samantalang nahanap == 0: kaliwa () oras. Tulog (0.00625) distansya ng elifL> = 8: kaliwa () oras. Tulog (0.00625) huminto () oras. Matulog (0.0125) pasulong () oras. Matulog (0.00625) huminto () oras. Matulog (0.0125) kanan distansyaC> 10): #dala nito ang mga koordinasyon ng bola sa gitna ng haka-haka na axis ng camera. kung (centre_x = 20): kung (centre_x0): flag = 1 leftturn () time. sleep (0.025) pasulong () time.sulog (0.00003125) huminto () oras. matulog (0.00625) iba pa: huminto () oras. matulog (0.01)

iba pa:

#kung natagpuan nito ang bola at napakalapit nito ay sinisindi nito ang pinangunahan. GPIO.output (LED_PIN, GPIO. HIGH) oras. Tulog (0.1) itigil () time.s Sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # limasin ang stream bilang paghahanda sa susunod na frame}

GAWIN ANG KAILANGAN SA PAGLILINIS

GPIO.cleanup () #free lahat ng mga GPIO pin

Hakbang 8: Mga Panlabas na Link

Link sa video ng demonstrasyon: mag-click dito (Youtube)

Link sa Code sa Git-hub: mag-click dito (Git-Hub)

Inirerekumendang: