विषयसूची:

लेगो EV3 भूलभुलैया-ड्राइविंग रोबोट में AI: 13 कदम
लेगो EV3 भूलभुलैया-ड्राइविंग रोबोट में AI: 13 कदम

वीडियो: लेगो EV3 भूलभुलैया-ड्राइविंग रोबोट में AI: 13 कदम

वीडियो: लेगो EV3 भूलभुलैया-ड्राइविंग रोबोट में AI: 13 कदम
वीडियो: LEGO Robot Drives Thru a Maze 2024, नवंबर
Anonim
Image
Image
कैसे एक भूलभुलैया हल है
कैसे एक भूलभुलैया हल है

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

मेरा पिछला रोबोट यहाँ वर्णित है:

रोबोट को लेगो माइंडस्टॉर्म EV3 का उपयोग करके बनाया गया है। EV3 सॉफ्टवेयर एक कंप्यूटर पर चलता है और एक प्रोग्राम तैयार करता है, जिसे बाद में EV3 ब्रिक नामक एक माइक्रोकंट्रोलर में डाउनलोड किया जाता है। प्रोग्रामिंग विधि आइकन-आधारित और उच्च-स्तरीय है। यह बहुत आसान और बहुमुखी है।

आपूर्ति

पार्ट्स

  1. लेगो माइंडस्टॉर्म EV3 सेट
  2. लेगो माइंडस्टॉर्म EV3 अल्ट्रासोनिक सेंसर। यह EV3 सेट में शामिल नहीं है।
  3. भूलभुलैया के लिए नालीदार कार्डबोर्ड। दो डिब्बे पर्याप्त होने चाहिए।
  4. कुछ कोनों और दीवारों को स्थिर करने में मदद करने के लिए पतले कार्डबोर्ड का एक छोटा टुकड़ा।
  5. कार्डबोर्ड के टुकड़ों को एक साथ जोड़ने के लिए गोंद और टेप।
  6. भूलभुलैया से बाहर निकलने की पहचान करने के लिए एक लाल ग्रीटिंग-कार्ड लिफाफा।

उपकरण

  1. कार्डबोर्ड काटने के लिए उपयोगिता चाकू।
  2. काटने की प्रक्रिया में सहायता के लिए स्टील शासक।

सॉफ्टवेयर

कार्यक्रम यहाँ है:

चरण 1: कैसे एक भूलभुलैया हल किया जाता है

भूलभुलैया-ड्राइविंग विधि

भूलभुलैया नेविगेट करने के कई तरीके हैं। यदि आप उनका अध्ययन करने में रुचि रखते हैं, तो उनका वर्णन निम्नलिखित विकिपीडिया लेख में बहुत अच्छी तरह से किया गया है:

मैंने बाएं हाथ की दीवार-निम्नलिखित विधि को चुना। विचार यह है कि रोबोट निम्नलिखित निर्णय लेकर अपनी बाईं ओर एक दीवार रखेगा क्योंकि यह भूलभुलैया के माध्यम से जाता है:

  1. यदि बाएं मुड़ना संभव है, तो ऐसा करें।
  2. नहीं तो हो सके तो सीधे जाएं।
  3. यदि यह बाएं या सीधे नहीं जा सकता, तो संभव हो तो दाएं मुड़ें।
  4. यदि उपरोक्त में से कोई भी संभव नहीं है, तो यह एक मृत अंत होना चाहिए। मुड़ो।

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

एक सीधा रास्ता खोजने के लिए भूलभुलैया को हल करना

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

संभावित मोड़ हैं: बाएँ, दाएँ, पीछे (मृत-छोर पर), और सीधा (जो एक चौराहा है)।

संयोजनों को निम्नानुसार प्रतिस्थापित किया जाता है:

  • "लेफ्ट, बैक, लेफ्ट" "स्ट्रेट" बन जाता है।
  • "बाएं, पीछे, दाएं" "वापस" बन जाता है।
  • "बाएं, पीछे, सीधे" "दाएं" बन जाता है।
  • "राइट, बैक, लेफ्ट" "बैक" बन जाता है।
  • "स्ट्रेट, बैक, लेफ्ट" "राइट" बन जाता है।
  • "स्ट्रेट, बैक, स्ट्रेट" "बैक" बन जाता है।

रोबोट मेरी भूलभुलैया को कैसे संभालता है

  1. जब रोबोट गाड़ी चलाना शुरू करता है तो वह दाईं ओर एक स्थान देखता है और सीधे सरणी में सूची में संग्रहीत करता है।
  2. फिर यह बाएँ मुड़ता है और सूची में बाएँ जोड़ता है। सूची में अब शामिल हैं: सीधे, बाएं।
  3. एक मृत अंत के साथ, यह घूमता है और सूची में वापस जोड़ता है। सूची में अब शामिल हैं: सीधे, बाएं, पीछे।
  4. प्रवेश द्वार से उपयोग की जाने वाली गली को पार करते हुए, यह सीधे सूची में जुड़ जाता है। सूची में अब शामिल हैं: सीधे, बाएं, पीछे, सीधे। यह एक संयोजन को पहचानता है और लेफ्ट, बैक, स्ट्रेट टू राइट को बदलता है। सूची में अब स्ट्रेट, राइट शामिल है।
  5. एक मृत अंत के साथ, यह घूमता है और सूची में वापस जोड़ता है। सूची में अब शामिल हैं: सीधे, दाएं, पीछे।
  6. लेफ्ट टर्न के बाद लिस्ट में स्ट्रेट, राइट, बैक, लेफ्ट होता है। यह एक संयोजन को पहचानता है और दाएं, पीछे, बाएं से पीछे बदलता है। सूची में अब स्ट्रेट, बैक शामिल है।
  7. अगले बाएँ मोड़ के बाद सूची में स्ट्रेट, बैक, लेफ्ट शामिल हैं। यह उस संयोजन को दाएं में बदल देता है। सूची में अब केवल अधिकार है।
  8. यह एक स्थान पास करता है और सीधे सूची में जोड़ता है। सूची में अब राइट, स्ट्रेट शामिल है।
  9. राइट टर्न के बाद लिस्ट में राइट, स्ट्रेट, राइट होता है जो कि सीधा रास्ता है।

चरण 2: रोबोट की प्रोग्रामिंग करते समय विचार

किसी भी माइक्रोकंट्रोलर के लिए विचार

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

जब रोबोट को दायीं ओर एक चौराहे का आभास होता है, लेकिन यह सही मोड़ नहीं है, तो मैंने पाया है कि रोबोट को अपने सेंसरों की जाँच किए बिना लगभग 10 इंच (25 सेमी) आगे बढ़ाना अच्छा है।

लेगो माइंडस्टॉर्म EV3. के लिए विशिष्ट विचार

हालांकि लेगो माइंडस्टॉर्म EV3 बहुत बहुमुखी है, यह एक ईंट से जुड़े प्रत्येक प्रकार के सेंसर में से एक से अधिक की अनुमति नहीं देता है। दो या दो से अधिक ईंटें डेज़ी-जंजीर हो सकती हैं, लेकिन मैं एक और ईंट नहीं खरीदना चाहता था, और इसलिए मैंने निम्नलिखित सेंसर (तीन अल्ट्रासोनिक सेंसर के बजाय) का उपयोग किया: इन्फ्रारेड सेंसर, रंग सेंसर, और अल्ट्रासोनिक सेंसर। यह अच्छी तरह से काम किया।

लेकिन रंग संवेदक की एक बहुत ही छोटी सीमा होती है, जो लगभग 2 इंच (5 सेमी) की होती है, जो नीचे वर्णित कुछ विशेष बातों की ओर ले जाती है:

  1. जब रंग सेंसर सामने की दीवार का पता लगाता है और रोबोट दाएं मुड़ने या घूमने का फैसला करता है, तो उसे पहले बैक अप लेना चाहिए, ताकि दीवार से टकराए बिना खुद को मुड़ने के लिए पर्याप्त जगह मिल सके।
  2. कुछ "सीधे" चौराहों के साथ एक जटिल समस्या उत्पन्न होती है। रंग सेंसर की कम रेंज के कारण, रोबोट यह निर्धारित नहीं कर सकता है कि क्या यह एक उचित "सीधे" चौराहे या दाएं मोड़ के लिए लीड-अप को महसूस करता है। मैंने हर बार जब रोबोट को होश आता है, तो सूची में "स्ट्रेट" स्टोर करने के लिए प्रोग्राम सेट करके इस समस्या को ठीक करने का प्रयास किया है, और फिर सूची में एक से अधिक "स्ट्रेट" को समाप्त कर दिया है। यह उस स्थिति को ठीक करता है जहां एक सही मोड़ भूलभुलैया में "सीधे" का अनुसरण करता है, लेकिन उस स्थिति को नहीं जहां इसके पहले "सीधे" के बिना सही मोड़ होता है। मैंने "स्ट्रेट" को खत्म करने के लिए प्रोग्राम को सेट करने की भी कोशिश की, अगर यह "राइट" से ठीक पहले है, लेकिन अगर राइट टर्न "स्ट्रेट" का अनुसरण करता है तो यह काम नहीं करता है। मुझे ऐसा कोई समाधान नहीं मिला है जो सभी मामलों में फिट बैठता हो, हालांकि मुझे लगता है कि रोबोट के लिए यात्रा की गई दूरी (मोटर रोटेशन सेंसर को पढ़कर) को देखना संभव होगा और यह तय करना होगा कि यह "सीधा" है या सही है मोड़। मुझे नहीं लगता था कि इस परियोजना में एआई अवधारणा को प्रदर्शित करने के प्रयोजनों के लिए यह जटिलता करने योग्य थी।
  3. रंग संवेदक का एक लाभ यह है कि यह एक दीवार के भूरे रंग और बाहर निकलने पर मेरे द्वारा उपयोग किए गए अवरोध के लाल रंग के बीच अंतर करता है, और रोबोट को यह तय करने का एक आसान तरीका प्रदान करता है कि उसने भूलभुलैया कब समाप्त की है।

चरण 3: मुख्य कार्यक्रम

मुख्य कार्यक्रम
मुख्य कार्यक्रम

लेगो माइंडस्टॉर्म EV3 में एक बहुत ही सुविधाजनक आइकन-आधारित प्रोग्रामिंग विधि है। कंप्यूटर पर डिस्प्ले स्क्रीन के नीचे ब्लॉक दिखाए जाते हैं और प्रोग्राम बनाने के लिए प्रोग्रामिंग विंडो में ड्रैग-एंड-ड्रॉप किया जा सकता है। EV3 ब्रिक को USB केबल, वाई-फाई या ब्लूटूथ द्वारा कंप्यूटर से जोड़ा जा सकता है, और फिर प्रोग्राम को कंप्यूटर से ब्रिक पर डाउनलोड किया जा सकता है।

कार्यक्रम में एक मुख्य कार्यक्रम और कई "माई ब्लॉक्स" शामिल हैं जो सबरूटीन हैं। अपलोड की गई फ़ाइल में संपूर्ण कार्यक्रम है, जो यहाँ है:

मुख्य कार्यक्रम के चरण इस प्रकार हैं:

  1. टर्न-काउंटिंग वैरिएबल और एरे को परिभाषित और इनिशियलाइज़ करें।
  2. 5 सेकंड प्रतीक्षा करें और कहें "जाओ।"
  3. एक लूप शुरू करें।
  4. भूलभुलैया के माध्यम से ड्राइव करें। जब बाहर निकल जाता है, तो लूप बाहर निकल जाता है।
  5. अब तक भूलभुलैया में मिले चौराहों को ईंट की स्क्रीन पर प्रदर्शित करें।
  6. जांचें कि क्या पथ छोटा किया जाना चाहिए।
  7. छोटे पथ में चौराहों को प्रदर्शित करें।
  8. चरण 4 पर वापस लूप करें।
  9. लूप के बाद, सीधा रास्ता चलाएं।

स्क्रीन शॉट इस मुख्य कार्यक्रम को दिखाता है।

चरण 4: माई ब्लॉक्स (सबरूटीन्स)

माई ब्लॉक्स (सबरूटीन्स)
माई ब्लॉक्स (सबरूटीन्स)

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

  1. तीर # 1 एक स्विच को इंगित करता है जो जांचता है कि इन्फ्रारेड सेंसर किसी वस्तु को एक विशिष्ट दूरी से अधिक दूर देखता है या नहीं। यदि ऐसा है, तो ब्लॉक की शीर्ष श्रृंखला निष्पादित की जाती है। यदि नहीं, तो नियंत्रण को ब्लॉकों की बड़ी, निचली श्रृंखला में स्थानांतरित कर दिया जाता है, जहां तीर #2 स्थित होता है।
  2. तीर # 2 एक स्विच को इंगित करता है जो जांचता है कि रंग सेंसर किस रंग को देखता है। 3 मामले हैं: शीर्ष पर कोई रंग नहीं, बीच में लाल और नीचे भूरा।
  3. दो तीर #3 स्विच को इंगित करते हैं जो जांचते हैं कि अल्ट्रासोनिक सेंसर किसी वस्तु को एक विशिष्ट दूरी से अधिक दूर देखता है या नहीं। यदि ऐसा है, तो ब्लॉक की शीर्ष श्रृंखला निष्पादित की जाती है। यदि नहीं, तो नियंत्रण को ब्लॉक की निचली श्रृंखला में स्थानांतरित कर दिया जाता है।

पथ को छोटा करने और सीधे पथ को चलाने के लिए माई ब्लॉक्स अधिक जटिल हैं और पूरी तरह से पढ़ने योग्य नहीं होंगे, और इसलिए वे इस दस्तावेज़ में शामिल नहीं हैं।

चरण 5: रोबोट बनाना शुरू करना: आधार

रोबोट बनाना शुरू करना: आधार
रोबोट बनाना शुरू करना: आधार
रोबोट बनाना शुरू करना: आधार
रोबोट बनाना शुरू करना: आधार

जैसा कि पहले उल्लेख किया गया है, लेगो माइंडस्टॉर्म EV3 एक ईंट से जुड़े प्रत्येक प्रकार के सेंसर में से एक से अधिक की अनुमति नहीं देता है। मैंने निम्नलिखित सेंसर (तीन अल्ट्रासोनिक सेंसर के बजाय) का उपयोग किया: इन्फ्रारेड सेंसर, कलर सेंसर और अल्ट्रासोनिक सेंसर।

नीचे दी गई तस्वीरों के जोड़े दिखाते हैं कि रोबोट कैसे बनाया जाता है। प्रत्येक जोड़ी की पहली तस्वीर आवश्यक भागों को दिखाती है, और दूसरी तस्वीर समान भागों को एक साथ जोड़कर दिखाती है।

पहला कदम दिखाए गए भागों का उपयोग करके रोबोट का आधार बनाना है। रोबोट बेस को उल्टा दिखाया गया है। रोबोट के पीछे छोटा एल-आकार का हिस्सा पीठ के लिए एक सहारा है। जैसे ही रोबोट चलता है यह स्लाइड करता है। यह ठीक काम करता है। EV3 किट में रोलिंग-बॉल-टाइप पार्ट नहीं है।

चरण 6: आधार के ऊपर, 1

आधार के ऊपर, 1
आधार के ऊपर, 1
आधार के ऊपर, 1
आधार के ऊपर, 1

यह चरण और अगले 2 चरण रोबोट के आधार के शीर्ष, रंग सेंसर और केबल के लिए हैं, जो सभी 10 इंच (26 सेमी) केबल हैं।

चरण 7: आधार के ऊपर, 2

आधार के ऊपर, 2
आधार के ऊपर, 2
आधार के ऊपर, 2
आधार के ऊपर, 2

चरण 8: आधार के ऊपर, 3

आधार के ऊपर, 3
आधार के ऊपर, 3
आधार के ऊपर, 3
आधार के ऊपर, 3

चरण 9: इन्फ्रारेड और अल्ट्रासोनिक सेंसर

इन्फ्रारेड और अल्ट्रासोनिक सेंसर
इन्फ्रारेड और अल्ट्रासोनिक सेंसर
इन्फ्रारेड और अल्ट्रासोनिक सेंसर
इन्फ्रारेड और अल्ट्रासोनिक सेंसर

अगला, इन्फ्रारेड सेंसर (रोबोट के बाईं ओर) और अल्ट्रासोनिक सेंसर (दाईं ओर) हैं। इसके अलावा, शीर्ष पर ईंट लगाने के लिए 4 पिन।

इन्फ्रारेड और अल्ट्रासोनिक सेंसर सामान्य क्षैतिज के बजाय लंबवत स्थित होते हैं। यह दीवारों के कोनों या सिरों की बेहतर पहचान प्रदान करता है।

चरण 10: केबल्स

केबल
केबल

केबल इस प्रकार ईंट से जुड़ते हैं:

  • पोर्ट बी: बड़ी मोटर छोड़ दी।
  • पोर्ट सी: सही बड़ी मोटर।
  • पोर्ट 2: अल्ट्रासोनिक सेंसर।
  • पोर्ट 3: रंग सेंसर।
  • पोर्ट 4: इन्फ्रारेड सेंसर।

चरण 11: रोबोट बनाने का अंतिम चरण: सजावट

रोबोट बनाने का अंतिम चरण: सजावट
रोबोट बनाने का अंतिम चरण: सजावट
रोबोट बनाने का अंतिम चरण: सजावट
रोबोट बनाने का अंतिम चरण: सजावट

पंख और पंख केवल सजावट के लिए हैं।

चरण 12: एक भूलभुलैया बनाएँ

एक भूलभुलैया बनाएँ
एक भूलभुलैया बनाएँ
एक भूलभुलैया बनाएँ
एक भूलभुलैया बनाएँ

भूलभुलैया के लिए दो नालीदार गत्ते के डिब्बे पर्याप्त होने चाहिए। मैंने भूलभुलैया की दीवारों को 5 इंच (12.5 सेमी) ऊंचा बनाया, लेकिन 4 इंच (10 सेमी) को ठीक उसी तरह काम करना चाहिए, जब आपके पास नालीदार कार्डबोर्ड की कमी हो।

सबसे पहले, मैंने डिब्बों की दीवारों के चारों ओर नीचे से 10 इंच (25 सेमी) काटा। फिर मैंने दीवारों के चारों ओर नीचे से 5 इंच काटा। यह कई 5 इंच की दीवारें प्रदान करता है। इसके अलावा, मैंने डिब्बों की बोतलों के चारों ओर काट दिया, स्थिरता के लिए दीवारों से लगभग 1 इंच (2.5 सेमी) जुड़ा हुआ छोड़ दिया।

भूलभुलैया बनाने के लिए जहां कहीं भी आवश्यक हो, विभिन्न टुकड़ों को काटा और चिपकाया या टेप किया जा सकता है। डेड एंड वाले किसी भी रास्ते में साइड की दीवारों के बीच 11 या 12 इंच (30 सेंटीमीटर) जगह होनी चाहिए। लंबाई 10 इंच (25 सेमी) से कम नहीं होनी चाहिए। रोबोट को घूमने के लिए इन दूरियों की आवश्यकता होती है।

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

निकास में एक लाल अवरोध है जिसमें आधा लाल ग्रीटिंग-कार्ड लिफाफा होता है और पतले कार्डबोर्ड के 2 टुकड़ों से बना आधार होता है, जैसा कि दिखाया गया है।

चरण 13: भूलभुलैया

उलझन
उलझन

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

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

समापन टिप्पणी

यह एक मजेदार प्रोजेक्ट और सीखने का एक बेहतरीन अनुभव था। मुझे उम्मीद है कि आपको भी यह दिलचस्प लगा होगा।

सिफारिश की: