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

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

विकल्प 1: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना

यह विकल्प तब बहुत अच्छा होता है जब आप स्पीडबोट या क्लॉबोट जैसे मानक बिल्ड का उपयोग कर रहे हों, और उसे शीघ्रता से चलाना चाहते हों।

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

प्रोग्रामिंग के लिए V5 ब्लॉकों को दर्शाने वाला आरेख, ब्लॉक-आधारित कोडिंग ट्यूटोरियल्स को समझने में सहायता के लिए दृश्य प्रारूप में विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करता है।

विकल्प 1 का सारांश: डिवाइस कॉन्फ़िगरेशन में बटन निर्दिष्ट करना

लाभ

सीमाएँ

उदाहरण स्थिति

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

विकल्प 2: फॉरएवर लूप का उपयोग करना

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

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

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

V5 ब्लॉक ट्यूटोरियल को दर्शाने वाला आरेख, VEX रोबोटिक्स प्रोग्रामिंग की बेहतर समझ के लिए स्पष्ट और संगठित लेआउट में विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करता है।

"विकल्प 2" VEXcode V5 प्रोजेक्ट फ़ाइल डाउनलोड करें >

विकल्प 2 कोड का स्पष्टीकरण.

कोड पीस

स्पष्टीकरण

ट्यूटोरियल प्रारूप में V5 ब्लॉक घटकों और उनके कार्यों को दर्शाने वाला आरेख, शैक्षिक उद्देश्यों के लिए विभिन्न ब्लॉक प्रकारों और कनेक्शनों को प्रदर्शित करता है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

V5 ब्लॉक घटकों और उनकी कार्यात्मकताओं को दर्शाने वाला आरेख, जिसका उपयोग VEX ज्ञानकोष के ब्लॉक ट्यूटोरियल अनुभाग में किया गया है, जो शैक्षिक उद्देश्यों के लिए विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करता है। VEX रोबोटिक्स में ब्लॉक प्रोग्रामिंग को समझने के लिए ट्यूटोरियल में उपयोग किए जाने वाले लेबल वाले घटकों और कनेक्शनों के साथ V5 ब्लॉकों को दर्शाने वाला आरेख।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

फॉरएवर लूप का उपयोग यह जांचने के लिए किया जाता है कि नियंत्रक पर कौन से बटन दबाए जा रहे हैं।

[मोटर वेग सेट करें] ब्लॉक का उपयोग 2 और 3 अक्षों के साथ वर्तमान नियंत्रक की स्थिति में मोटर वेग सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है।

प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी।

फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है।

प्रोग्रामिंग ट्यूटोरियल के लिए V5 ब्लॉकों को दर्शाने वाला आरेख, विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करता है, जिसे शैक्षिक संदर्भों में कोडिंग अवधारणाओं की समझ बढ़ाने के लिए डिज़ाइन किया गया है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

[यदि तो अन्यथा यदि तो अन्यथा] ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि यदि ऊपर या नीचे बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना और नीचे करना। इस शर्त का एक और भाग भी है, यदि कोई भी बटन नहीं दबाया जाता है, तो भुजा का हिलना बंद हो जाता है।

ध्यान दें कि क्लॉ के लिए परियोजना में कोड का निम्नलिखित भाग भी इसी स्पष्टीकरण का अनुसरण करता है।

विकल्प 2 का सारांश: फॉरएवर लूप का उपयोग करना

लाभ

सीमाएँ

उदाहरण स्थिति

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

विकल्प 3: ईवेंट का उपयोग करना

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

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

ट्यूटोरियल में प्रयुक्त V5 ब्लॉकों का चित्रण, विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करना, तथा यह प्रदर्शित करना कि VEX V5 रोबोटिक्स के साथ कैसे निर्माण और प्रोग्रामिंग की जाए।

"विकल्प 3" VEXcode V5 प्रोजेक्ट फ़ाइल डाउनलोड करें >

विकल्प 3 कोड का स्पष्टीकरण.

कोड पीस

स्पष्टीकरण

रोबोटिक्स ट्यूटोरियल में प्रयुक्त विभिन्न V5 ब्लॉकों को दर्शाने वाला आरेख, शैक्षिक उद्देश्यों के लिए उनके कार्यों और कनेक्शनों को प्रदर्शित करता है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

रोबोटिक्स ट्यूटोरियल में V5 ब्लॉकों को दर्शाने वाला आरेख, प्रोग्रामिंग कार्यों के लिए विभिन्न ब्लॉक प्रकारों और उनके कनेक्शनों को प्रदर्शित करता है। VEX रोबोटिक्स में ब्लॉक प्रोग्रामिंग को समझने के लिए ट्यूटोरियल में उपयोग किए जाने वाले लेबल वाले घटकों और कनेक्शनों के साथ V5 ब्लॉकों को दर्शाने वाला आरेख।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

{When controller axis} इवेंट ब्लॉक का उपयोग कुछ व्यवहारों को ट्रिगर करने के लिए किया जाता है जब नियंत्रक पर चार अक्षों में से एक को जॉयस्टिक का उपयोग करके बदला जाता है।

[मोटर वेग सेट करें] ब्लॉक का उपयोग मोटर वेग को A और D अक्षों के साथ वर्तमान नियंत्रक की स्थिति पर सेट करने के लिए किया जाता है। यह कार को ड्राइव में सेट करने के बराबर है। इससे कार जरूरी रूप से नहीं चलती, बल्कि यह उसे बस गति प्रदान करती है।

प्रत्येक जॉयस्टिक अक्ष -100 से +100 के बीच मान लौटाता है, तथा केन्द्रित होने पर शून्य मान लौटाता है। इसका अर्थ यह है कि जॉयस्टिक अक्ष को धकेलने पर यह -100% से 100% के बराबर हो जाता है। अक्षों को 100 या -100 की ओर जितना अधिक धकेला जाएगा, मोटर उतनी ही तेजी से घूमेगी।

फिर [स्पिन] ब्लॉक का उपयोग मोटर को वास्तव में चलाने के लिए किया जाता है। यह दिशा निर्धारित हो जाने के बाद कार में गैस दबाने के बराबर है। इससे प्रत्येक मोटर को चार नियंत्रक अक्षों में से एक द्वारा नियंत्रित किया जा सकता है।

प्रोग्रामिंग ट्यूटोरियल में प्रयुक्त V5 ब्लॉकों को दर्शाने वाला आरेख, VEX रोबोटिक्स प्रणाली के अंतर्गत विभिन्न ब्लॉक प्रकारों और उनके कार्यों को प्रदर्शित करता है।

इस कोड उदाहरण के लिए क्लॉबोट का उपयोग किया गया था। जब कंट्रोलर पर लगे बटनों का उपयोग भुजा को ऊपर उठाने और नीचे करने के लिए किया जाता है, तो जैसे ही बटन छोड़ा जाता है, गुरुत्वाकर्षण के कारण भुजा वापस नीचे गिर जाती है। दोनों भुजाओं और पंजों को “होल्ड” पर सेट करने से यह सुनिश्चित होगा कि नियंत्रक पर बटनों को छोड़ने के बाद भी भुजा और पंजा दोनों अपनी जगह पर बने रहेंगे।

{When controller axis} इवेंट ब्लॉक का उपयोग नियंत्रक पर दबाए जाने या छोड़े जाने वाले बटनों के लिए कुछ व्यवहारों को मैप करने के लिए किया जाता है। कोड के इस भाग में, निर्धारित शर्तें यह हैं कि यदि ऊपर या नीचे बटन दबाया जाता है। यदि ऐसा है, तो कुछ निश्चित व्यवहार होंगे, जैसे कि हाथ को ऊपर उठाना, नीचे करना, या रुकना।

ध्यान दें कि क्लॉ के लिए परियोजना में कोड का अंतिम भाग भी इसी स्पष्टीकरण का अनुसरण करता है।

विकल्प 3 का सारांश: ईवेंट का उपयोग करना

लाभ

सीमाएँ

उदाहरण स्थिति

  • कस्टम बिल्ड को समायोजित कर सकता है, विशेष रूप से 4 से अधिक मोटरों वाले ड्राइवट्रेन को
  • एक ही बटन को अनेक व्यवहार निर्दिष्ट कर सकते हैं
  • नियंत्रक पर विभिन्न अक्षों को व्यवहार निर्दिष्ट कर सकते हैं (डिवाइस कॉन्फ़िगरेशन में केवल बाएं आर्केड, दाएं आर्केड, विभाजित आर्केड और टैंक ड्राइव के विकल्पों के विपरीत)
  • तीव्र कोड निष्पादन और इस प्रकार, बटन अनुक्रियाशीलता (क्योंकि प्रत्येक शर्त को अलग से बुलाया जाता है और कोड के एक एकल स्टैक में एम्बेड नहीं किया जाता है)
  • विकल्पों (कंडीशनल, लूप, इवेंट्स, तथा कंट्रोलर पर बटन/जॉयस्टिक्स का ज्ञान) के कोडिंग ज्ञान की सबसे अधिक आवश्यकता होती है।
  • कस्टम निर्मित रोबोट के साथ नियंत्रक का उपयोग करना, विशेष रूप से गैर-मानक ड्राइवट्रेन के साथ
  • जब आप बिना किसी देरी के एक ही बटन को कई व्यवहार सौंपना चाहते हैं। उदाहरण के लिए, जब अप बटन दबाया जाता है, तो पंजा खुल सकता है, आगे बढ़ सकता है, और फिर किसी वस्तु के चारों ओर बंद हो सकता है।

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: