Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Panimula
- Hakbang 2: Mga Materyales at Soft-wares na Ginamit sa Project na Ito
- Hakbang 3: Ano ang Dapat Gawin?
- Hakbang 4: Mga Skematika
- Hakbang 5: Paano Gawin?
- Hakbang 6: Pseudo-Code
- Hakbang 7: Code
- Hakbang 8: Mga Panlabas na Link
Video: Robot sa Pagsubaybay ng Bola: 8 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
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
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
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
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
Narito ang pseudo-code para sa bahagi ng pagtuklas gamit ang OpenCV kung saan nakakakita kami ng isang bola.
Hakbang 7: 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:
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay ng Aktibidad at Programming ATtiny85 Sa Arduino Uno: 4 na Hakbang (na may Mga Larawan)
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay sa Aktibidad at Programming ATtiny85 Sa Arduino Uno: Paano gagawin ang relo ng pagsusuot ng aktibidad na maaaring panoorin? Ito ay isang naisusuot na gadget na dinisenyo upang mag-vibrate kapag nakita nito ang pagwawalang-kilos. Ginugugol mo ba ang karamihan ng iyong oras sa computer na tulad ko? Nakaupo ka ba nang maraming oras nang hindi namamalayan? Pagkatapos ang aparatong ito ay f
Pagsubaybay sa Mukha at Ngiti Ng Pagkakita ng Mga Robot sa Halloween: 8 Hakbang (na may Mga Larawan)
Pagsubaybay sa Mukha at Ngiti Ng Pagkakita ng Mga Robot sa Halloween: Darating ang Halloween! Nagpasiya kaming bumuo ng isang bagay na cool. Kilalanin ang mga Ghosty at Skully robot. Maaari nilang sundin ang iyong mukha at alam nila kapag nakangiti kang tumawa kasama ka! Ang proyektong ito ay isa pang halimbawa ng paggamit ng iRobbie App na nagko-convert sa iPhone
Pagsubaybay sa Kalusugan ng Structural ng Mga Infrastruktur na Sibil Gamit ang Mga Wireless Vibration Sensor: 8 Mga Hakbang
Pagsubaybay sa Kalusugan ng Struktural ng Mga Infrastrukturang Sibil Gamit ang Mga Wireless Vibration Sensor: Ang pagkasira ng dating gusali at Sibil na Infrastructure ay maaaring humantong sa nakamamatay at Mapanganib na sitwasyon. Ang patuloy na pagsubaybay sa mga istrukturang ito ay sapilitan. Ang pagsubaybay sa kalusugan ng istruktura ay isang napakahalagang pamamaraan sa pagsusuri ng
Pagsubaybay sa Bola 180 ° Camera: 5 Mga Hakbang (na may Mga Larawan)
Pagsubaybay sa Bola 180 ° Camera: Maligayang pagdating sa aking unang proyekto! Nasasabik akong ibahagi ang ginawa ko at ipakita sa iyo ang mga hakbang upang makabuo ng iyong sariling camera sa pagsubaybay. Ang proyektong ito ay ginawang posible gamit ang OpenCV library kasabay ng Python
Nagmamakaawang Robot na May Pagsubaybay sa Mukha at Pagkontrol ng Xbox Controller - Arduino: 9 Mga Hakbang (na may Mga Larawan)
Nagmamakaawang Robot Sa Pagsubaybay sa Mukha at Pagkontrol ng Xbox Controller - Arduino: Gagawa kami ng isang robot na humihingi. Susubukan ng robot na ito na inisin o makuha ang pansin ng mga dumadaan na tao. Madidiskubre nito ang kanilang mga mukha at susubukan silang kunan ng lasers. Kung bibigyan mo ang robot ng isang barya, kakantahin niya ang isang kanta at sayaw. Mangangailangan ang robot ng isang