विषयसूची:

बॉल ट्रैकिंग रोबोट: 8 कदम
बॉल ट्रैकिंग रोबोट: 8 कदम

वीडियो: बॉल ट्रैकिंग रोबोट: 8 कदम

वीडियो: बॉल ट्रैकिंग रोबोट: 8 कदम
वीडियो: Amazing arduino project 2024, जुलाई
Anonim
बॉल ट्रैकिंग रोबोट
बॉल ट्रैकिंग रोबोट
बॉल ट्रैकिंग रोबोट
बॉल ट्रैकिंग रोबोट
बॉल ट्रैकिंग रोबोट
बॉल ट्रैकिंग रोबोट

तो इसमें मैं बताने वाला हूँ कि कैसे एक बॉल ट्रैकिंग रोबोट बनाया जाता है जो एक रोबोट है जो एक गेंद की पहचान करता है और उसका अनुसरण करता है। यह मूल रूप से एक स्वचालित निगरानी तकनीक है जिसका उपयोग आधुनिक दुनिया में किया जा सकता है। तो, चलिए बस अंदर आते हैं और निर्माण शुरू करते हैं…

नोट: यह पार्ट असाइनमेंट डीकिन यूनिवर्सिटी, स्कूल ऑफ आईटी, एसआईटी-२१० एंबेडेड सिस्टम्स डेवलपमेंट को प्रस्तुत किया गया है।

आपूर्ति

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

चरण 1: परिचय

परिचय
परिचय

आज की निगरानी एक बड़ी कमी प्रदान करती है जो यह है कि यह मनुष्यों की भागीदारी पर टिकी हुई है जिसे हम सभी जानते हैं कि आसानी से विचलित किया जा सकता है, इसलिए एक ऐसी प्रणाली की खोज करना हमारे लिए अत्यंत महत्वपूर्ण था जो स्वायत्त और निरंतर क्षेत्रों की निगरानी कर सके। और साथ ही हम निर्णय लेते समय अप्रिय या अवांछित चीजों और खतरों की पहचान करना चाहते हैं और उसी के अनुसार प्रतिक्रिया करना चाहते हैं। इसलिए स्वचालित निगरानी प्राप्त करने के लिए बुद्धिमान प्रणालियों और कंप्यूटरों के उपयोग के साथ ऑब्जेक्ट ट्रैकिंग आवश्यक और महत्वपूर्ण है।

किसी भी बाहरी निगरानी प्रणाली को अपने देखने के क्षेत्र में चलती वस्तुओं को ट्रैक करने, इन वस्तुओं को वर्गीकृत करने और उनकी कुछ गतिविधियों का पता लगाने में सक्षम होना चाहिए। मैंने यथार्थवादी परिदृश्यों में इन वस्तुओं को ट्रैक और वर्गीकृत करने के लिए एक विधि विकसित की है। एकल कैमरे में ऑब्जेक्ट ट्रैकिंग पृष्ठभूमि घटाव का उपयोग करके की जाती है, इसके बाद क्षेत्र पत्राचार किया जाता है। यह बाउंडिंग बॉक्स के वेग, आकार और दूरी सहित कई संकेतों को ध्यान में रखता है।

चरण 2: इस परियोजना में प्रयुक्त सामग्री और सॉफ्ट-वेयर्स

इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर
इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर
इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर
इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर
इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर
इस परियोजना में प्रयुक्त सामग्री और साफ्टवेयर

प्रयुक्त हार्डवेयर घटक:

  • रास्पबेरी पाई (X1)
  • रास्पबेरी पाई कैमरा मॉड्यूल (X1)
  • अल्ट्रासोनिक सेंसर (x3)
  • स्पार्कफन डुअल एच-ब्रिज मोटर ड्राइवर L298 (x1)
  • डीसी मोटर (x1)
  • ब्रेडबोर्ड (X1)
  • तारों को जोड़ना

प्रयुक्त सॉफ्टवेयर:

ओपनसीवी

हाथ के उपकरण:

अजगर

चरण 3: क्या करना है?

किसी भी बाहरी निगरानी प्रणाली को अपने देखने के क्षेत्र में चलती वस्तुओं को ट्रैक करने, इन वस्तुओं को वर्गीकृत करने और उनकी कुछ गतिविधियों का पता लगाने में सक्षम होना चाहिए। मैंने यथार्थवादी परिदृश्यों में इन वस्तुओं को ट्रैक और वर्गीकृत करने के लिए एक विधि विकसित की है। एकल कैमरे में ऑब्जेक्ट ट्रैकिंग पृष्ठभूमि घटाव का उपयोग करके की जाती है, इसके बाद क्षेत्र पत्राचार किया जाता है। यह बाउंडिंग बॉक्स के वेग, आकार और दूरी सहित कई संकेतों को ध्यान में रखता है।

फ्रेम दर फ्रेम छवियों का पता लगाते समय महत्वपूर्ण बात यह थी कि किसी भी फ्रेम ड्रॉप से बचें क्योंकि बॉट एक सीमित स्थिति में जा सकता है यदि बॉट फ्रेम बूंदों के कारण गेंद की गति की दिशा को नोटिस करने में विफल रहता है। यदि गेंद कैमरे की सीमा से बाहर जाती है, तो वह उस अवस्था में चली जाएगी जिसे हम लिम्बो अवस्था कहते हैं, उस स्थिति में, बॉट अपने चारों ओर के स्थान को देखने के लिए 360-डिग्री मोड़ लेता है, जब तक कि गेंद वापस फ्रेम में नहीं आ जाती। कैमरा और फिर उसकी दिशा में आगे बढ़ना शुरू करें।

छवि विश्लेषण के लिए, मैं प्रत्येक फ्रेम ले रहा हूं और फिर इसे आवश्यक रंग के साथ मास्क कर रहा हूं। फिर मैं सभी समोच्चों को ढूंढता हूं और उनमें से सबसे बड़ा ढूंढता हूं और इसे एक आयत में बांधता हूं। और मुख्य छवि पर आयत दिखाएँ और आयत के केंद्र के निर्देशांक ज्ञात करें।

अंत में, बॉट गेंद के निर्देशांक को उसके समन्वय अक्ष के केंद्र में लाने की कोशिश करता है। इस तरह रोबोट काम करता है। इसे एक फोटॉन कण की तरह एक IoT डिवाइस का उपयोग करके बढ़ाया जा सकता है जो आपको सूचित कर सकता है कि किसी चीज़ का पता चलने पर और रोबोट उसका पीछा कर रहा है या जब रोबोट ने इसका ट्रैक खो दिया है और अब बेस पर लौट रहा है.

इमेज प्रोसेसिंग के उद्देश्य से, आपको अपने रास्पबेरी पाई पर ओपनसीवी सॉफ्टवेयर स्थापित करने की आवश्यकता है जो मेरे लिए काफी मुश्किल था।

आप इस लिंक के माध्यम से ओपनसीवी स्थापित करने के लिए कोई भी आवश्यक जानकारी प्राप्त कर सकते हैं: यहां क्लिक करें

चरण 4: स्कैमैटिक्स

Image
Image
schematics
schematics
schematics
schematics

ऊपर मैंने अपने प्रोजेक्ट के लिए स्कीमैटिक्स प्रदान किए हैं और इसके साथ ही प्रिंटेड सर्किट बोर्ड (पीसीबी) है।

और यहां कुछ मुख्य कनेक्शन दिए गए हैं जिन्हें आपको करने की आवश्यकता है:

• सबसे पहले रास्पबेरी पाई कैमरा मॉड्यूल सीधे रास्पबेरी पाई से जुड़ा है।

• अल्ट्रासोनिक सेंसर VCC सामान्य टर्मिनल से जुड़े होते हैं जो GND (ग्राउंड) के साथ होते हैं और अल्ट्रासोनिक सेंसर के शेष दो पोर्ट रास्पबेरी पाई पर GPIO पिन से जुड़े होते हैं।

• मोटर्स एच-ब्रिज का उपयोग करके जुड़े हुए हैं।

• बैटरी का उपयोग करके बिजली की आपूर्ति की जाती है।

मैंने वह वीडियो भी जोड़ा है जो अल्ट्रासोनिक सेंसर के काम करने की समझ में मदद कर सकता है और यह कैसे काम करता है।

और यदि आप ऊपर वीडियो नहीं ढूंढ पा रहे हैं तो आप इस लिंक का अनुसरण कर सकते हैं।

चरण 5: कैसे करें?

मैंने इस प्रोजेक्ट को एक बुनियादी रोबोट का चित्रण करते हुए बनाया है जो एक गेंद को ट्रैक कर सकता है। रोबोट फ्रेम लेकर और गेंद को ट्रैक करके इमेज प्रोसेसिंग करने के लिए कैमरे का उपयोग करता है। गेंद को ट्रैक करने के लिए उसके रंग, आकार, आकार जैसी विभिन्न विशेषताओं का उपयोग किया जाता है।

रोबोट एक हार्डकोडेड रंग ढूंढता है और फिर उस रंग की गेंद को खोजता है और उसका अनुसरण करता है। मैंने इस परियोजना में रास्पबेरी पाई को माइक्रो-कंट्रोलर के रूप में चुना है क्योंकि यह हमें इसके कैमरा मॉड्यूल का उपयोग करने की अनुमति देता है और कोड में बहुत लचीलापन देता है क्योंकि यह पायथन भाषा का उपयोग करता है जो बहुत उपयोगकर्ता के अनुकूल है और यह हमें छवियों का विश्लेषण करने के लिए ओपनसीवी लाइब्रेरी का उपयोग करने देता है।

मोटर्स के रोटेशन की दिशा बदलने या उन्हें रोकने के लिए एक एच-ब्रिज का उपयोग किया गया है।

छवि विश्लेषण के लिए, मैं प्रत्येक फ्रेम ले रहा हूं और फिर इसे आवश्यक रंग के साथ मास्क कर रहा हूं। फिर मैं सभी समोच्चों को ढूंढता हूं और उनमें से सबसे बड़ा ढूंढता हूं और इसे एक आयत में बांधता हूं। और मुख्य छवि पर आयत दिखाएँ और आयत के केंद्र के निर्देशांक ज्ञात करें।

अंत में, बॉट गेंद के निर्देशांक को उसके समन्वय अक्ष के केंद्र में लाने की कोशिश करता है। इस तरह रोबोट काम करता है। इसे एक फोटॉन कण की तरह एक IoT डिवाइस का उपयोग करके बढ़ाया जा सकता है जो आपको सूचित कर सकता है कि किसी चीज़ का पता चलने पर और रोबोट उसका पीछा कर रहा है या जब रोबोट ने इसका ट्रैक खो दिया है और अब बेस पर लौट रहा है. और ऐसा करने के लिए हम एक ऑनलाइन सॉफ्टवेयर प्लेटफॉर्म का उपयोग करेंगे जो उपकरणों को जोड़ता है और उन्हें विशिष्ट ट्रिगर्स पर कुछ क्रियाएं करने की अनुमति देता है जो कि IFTTT ट्रिगर हैं।

चरण 6: छद्म कोड

छद्म कोड
छद्म कोड

ओपनसीवी का उपयोग करके पता लगाने वाले हिस्से के लिए छद्म कोड यहां दिया गया है जहां हम एक गेंद का पता लगाते हैं।

चरण 7: कोड

कोड
कोड
कोड
कोड
कोड
कोड
कोड
कोड

ऊपर कोड के स्निपेट हैं और नीचे कोड का विस्तृत विवरण है।

# आवश्यक पैकेज आयात करें

हम सभी आवश्यक पैकेज आयात करते हैं

picamera.array से PiRGBArray आयात करें # क्योंकि रास्पबेरी पाई में एक समाधान समस्या है, VideoCapture द्वारा फ़्रेम कैप्चर करने में सक्षम नहीं होगा

पिकामेरा आयात से पिकैमरा आयात RPi. GPIO GPIO के रूप में आयात समय आयात numpy np के रूप में

अब हम हार्डवेयर सेट करते हैं और रास्पबेरी पीआई से जुड़े पिनों को असाइन करते हैं

GPIO.सेटमोड (GPIO. BOARD)

GPIO_TRIGGER1 = 29 # लेफ्ट अल्ट्रासोनिक सेंसर

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #फ्रंट अल्ट्रासोनिक सेंसर

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #राइट अल्ट्रासोनिक सेंसर

GPIO_ECHO3 = 35

मोटर1बी=18 #बायां मोटर

मोटर 1 ई = 22

MOTOR2B=21 #राइट मोटर

मोटर2ई=19

LED_PIN=13 #अगर उसे गेंद मिल जाती है, तो वह एलईडी को रोशन कर देगी

# पिन को आउटपुट और इनपुट के रूप में सेट करें

GPIO.setup(GPIO_TRIGGER1, GPIO. OUT) # ट्रिगर GPIO.setup(GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup(GPIO_TRIGGER2, GPIO. OUT) # ट्रिगर GPIO.setup(GPIO_ECHO2, GPIO. IN) GPIO.setup(GPIO_TRIGGER3, GPIO. OUT) # ट्रिगर GPIO.setup(GPIO_ECHO3, GPIO. IN) GPIO.setup(LED_PIN, GPIO. OUT)

# ट्रिगर को गलत पर सेट करें (निम्न)

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

यह फ़ंक्शन सभी अल्ट्रासोनिक सेंसर का उपयोग करता है जो हमारे बीओटी के आसपास की वस्तुओं से दूरी एकत्र करता है

# मॉड्यूल को व्यवस्थित होने दें

डीईएफ़ सोनार (GPIO_TRIGGER, GPIO_ECHO): स्टार्ट = 0 स्टॉप = 0 # पिन को आउटपुट और इनपुट के रूप में सेट करें GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # ट्रिगर GPIO.setup (GPIO_ECHO, GPIO. IN) # इको # ट्रिगर को गलत पर सेट करें (निम्न) GPIO.output(GPIO_TRIGGER, False) # मॉड्यूल को समय तय करने की अनुमति दें। नींद (0.01) #जबकि दूरी> 5: # GPIO.output (GPIO_TRIGGER, True) समय को ट्रिगर करने के लिए 10us पल्स भेजें। नींद (0.00001) GPIO। आउटपुट (GPIO_TRIGGER, False) start = time.time() जबकि GPIO.input(GPIO_ECHO)==0 और time.time()

रास्पबेरी पीआई के साथ काम करने के लिए डीसी मोटर्स प्राप्त करना

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

रोबोट को संचालित करने और इसे अलग-अलग दिशाओं में ले जाने के लिए कार्यों को परिभाषित करना

आगे डीईएफ़ ():

GPIO.output(MOTOR1B, GPIO.high) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def रिवर्स (): GPIO.output(MOTOR1B), GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) डेफ राइटटर्न (): 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)

डीईएफ़ स्टॉप ():

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

कैमरा मॉड्यूल काम करना और सेटिंग्स को समायोजित करना

#कैमरा कैप्चर

# कैमरे को प्रारंभ करें और कच्चे कैमरा कैप्चर कैमरे का संदर्भ लें = PiCamera() कैमरा। संकल्प = (160, 120) कैमरा। फ्रेमरेट = 16 कच्चा कैप्चर = PiRGBArray (कैमरा, आकार = (160, 120)) # कैमरे को अनुमति दें समय गर्म करने के लिए सो जाओ (0.001)

अब मुख्य बात को लागू करना जहां बॉट गेंद का अनुसरण करता है और रास्ते में किसी भी बाधा से बचें

जबकि (१ <१०): {# सामने अल्ट्रासोनिक सेंसर से आने वाली दूरी सी = सोनार (GPIO_TRIGGER2, GPIO_ECHO2) # सही अल्ट्रासोनिक सेंसर से आने वाली दूरीR = सोनार (GPIO_TRIGGER3, GPIO_ECHO3) # बाएं अल्ट्रासोनिक सेंसर से आने वाली दूरी L = सोनार (GPIO_TRIGGER1, GPIO_ECHO1) अगर (दूरी C = 8: दाएँ मुड़ना () समय। नींद (0.00625) रुकें () समय। नींद (0.0125) आगे () समय। नींद (0.00625) रुकें () समय। नींद (0.0125) # जबकि मिला == 0: लेफ्टटर्न () टाइम। स्लीप (0.00625) एलिफ डिस्टेंस एल> = 8: लेफ्टटर्न () टाइम। स्लीप (0.00625) स्टॉप () टाइम। स्लीप (0.0125) फॉरवर्ड () टाइम। स्लीप (0.00625) स्टॉप () टाइम। स्लीप (०.१२५) राइटटर्न () टाइम। स्लीप (०.००६२५) स्टॉप () टाइम। स्लीप (०.१२५) और: स्टॉप () टाइम। स्लीप (०.०१) और: दूरीसी>10): # यह कैमरे के काल्पनिक अक्ष के केंद्र में गेंद के निर्देशांक लाता है। अगर (केंद्र_x = 20): अगर (केंद्र_x0): ध्वज = 1 बाएं मुड़ें () समय। नींद (0.025) आगे () समय। नींद (0.00003125)) स्टॉप () टाइम। स्लीप (0.00625) और: स्टॉप () टाइम। स्लीप (0.01)

अन्यथा:

#अगर उसे गेंद मिल जाती है और वह बहुत करीब है तो वह एलईडी को रोशन करती है। GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", फ्रेम) rawCapture.truncate(0) # तैयारी में स्ट्रीम साफ़ करें अगला फ्रेम}

आवश्यक सफाई करें

GPIO.cleanup() #सभी GPIO पिन मुक्त करें

चरण 8: बाहरी लिंक

प्रदर्शन वीडियो का लिंक: यहां क्लिक करें (यूट्यूब)

गिट-हब पर कोड से लिंक करें: यहां क्लिक करें (गिट-हब)

सिफारिश की: