मुख्य सामग्री पर जाएं

पाठ 2: अगली डिस्क की ओर बढ़ें

ब्लू डिस्क की ओर ड्राइव करें

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

हरे डिस्क पर दाईं ओर मुड़ने के बाद वीआर रोबोट जिस दिशा में मुंह किए हुए है, उसे देखकर हम समझ सकते हैं कि अगले तीन नीले डिस्क तक पहुंचने के लिए वीआर रोबोट को आगे बढ़ना चाहिए और प्रत्येक नीले डिस्क पर बाईं ओर मुड़ना चाहिए। हमwhileलूप के समान तर्क का उपयोगnotशर्त के साथ कर सकते हैं ताकि वीआर रोबोट भूलभुलैया से आगे बढ़ता रहे, और जब वह एक नीली डिस्क का पता लगाए तो बाईं ओर मुड़ जाए।डिस्क मेज़ प्लेग्राउंड का ऊपर से नीचे का दृश्य। पहला रोबोट हरे रंग की पहली डिस्क पर स्थित है और दाहिनी ओर नीले रंग की पहली डिस्क की ओर मुंह किए हुए है। रोबोट को किस दिशा में चलना होगा, यह दर्शाने के लिए काले तीरों का उपयोग किया गया है। इसका मतलब यह है कि रोबोट नीले डिस्क की ओर जाएगा, बाएं मुड़ेगा, दूसरे नीले डिस्क की ओर जाएगा, बाएं मुड़ेगा और तीसरे नीले डिस्क पर रुक जाएगा।

  • मौजूदा प्रोजेक्ट में turn_for के नीचे एक और टिप्पणी जोड़ें ताकि VR रोबोट के अगले व्यवहारों का वर्णन किया जा सके। आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main():
    # पहली डिस्क (हरी) तक ड्राइव करें, दाईं ओर मुड़ें
    while not front_eye.detect(GREEN):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(RIGHT, 90, DEGREES)

    # दूसरी डिस्क (नीली) तक ड्राइव करें, बाईं ओर मुड़ें
  • नई टिप्पणी के नीचे, एक और जबकि लूप जोड़ें जिसमें नॉट कंडीशन। स्थिति को पता लगानेकमांड पर सेट करें और पैरामीटर को "नीला" पर सेट करें, क्योंकि वीआर रोबोट को मिलने वाली अगली डिस्क नीली होगी।
    # दूसरी डिस्क (नीली) पर ड्राइव करें, बाईं ओर मुड़ें
    जबकि फ्रंट_आई.डिटेक्ट (नीला) नहीं है:
        प्रतीक्षा करें (5, एमएसईसी)
  • while लूप के अंदर, गैर-प्रतीक्षा ड्राइव कमांड को खींचें या टाइप करें। 
    # दूसरी डिस्क (नीली) की ओर ड्राइव करें, बाईं ओर मुड़ें
    जबकि फ्रंट_आई.डिटेक्ट (नीला) नहीं है:
        ड्राइवट्रेन.ड्राइव (फॉरवर्ड)
        प्रतीक्षा करें (5, एमएसईसी)
  • turn_for कमांड को ड्रैग करके डालें या टाइप करें, और पैरामीटर को 90 डिग्री बाएँ मुड़ने के लिए सेट करें।
    # दूसरी डिस्क (नीली) की ओर ड्राइव करें, बाएँ मुड़ें
    जबकि फ्रंट_आई.डिटेक्ट (नीला) नहीं है:
        ड्राइवट्रेन.ड्राइव (आगे)
        प्रतीक्षा करें (5, मिलीसेकंड)

    ड्राइवट्रेन.टर्न_फॉर (बाएँ, 90, डिग्री)
  • प्रोजेक्ट चलाकर देखें कि वीआर रोबोट डिस्क मेज़ प्लेग्राउंड. में कैसे चलता है।डिस्क मेज़ प्लेग्राउंड पर वीआर रोबोट का ऊपर से नीचे का दृश्य, जिसमें एक काला तीर इंगित करता है कि रोबोट शुरुआती स्थान के ठीक सामने स्थित हरे डिस्क की ओर जाएगा, फिर दाईं ओर मुड़ेगा, नीले डिस्क की ओर आगे बढ़ेगा, बाईं ओर मुड़ेगा और फिर चलना बंद कर देगा।
    • ध्यान दें कि जब फ्रंट आई सेंसर हरे रंग की डिस्क का पता लगाता है तो वीआर रोबोट दाईं ओर मुड़ जाता है, और जब फ्रंट आई सेंसर नीले रंग की डिस्क का पता लगाता है तो वह बाईं ओर मुड़ जाता है।
  • फ्रंट आई सेंसर का उपयोग करके वीआर रोबोट को डिस्क मेज़ प्लेग्राउंड पर दो और नीली डिस्क तक ले जाने के लिए इस प्रोजेक्ट को आगे बढ़ाएं। प्रोजेक्ट में ऐसे कमांड जोड़ें जो वीआर रोबोट को अगले दो डिस्क पर ले जाएं और फिर रोक दें। अब आपका पूरा प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
def main():
    # पहले डिस्क (हरे रंग) तक ड्राइव करें, दाएं मुड़ें
    while not front_eye.detect(GREEN):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(RIGHT, 90, DEGREES)

    # दूसरे डिस्क (नीले रंग) तक ड्राइव करें, बाएं मुड़ें
    while not front_eye.detect(BLUE):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(LEFT, 90, DEGREES)

    # तीसरे डिस्क (नीले रंग) तक ड्राइव करें, बाएं मुड़ें
    while not front_eye.detect(BLUE):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(LEFT, 90, DEGREES)

    # चौथे डिस्क (नीले रंग) तक ड्राइव करें, बाएं मुड़ें
    while not front_eye.detect(BLUE):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(LEFT, 90, DEGREES)

वीआर रोबोट की गतिविधियों में एक पैटर्न की पहचान करना

फ्रंट आई सेंसर की मदद से डिस्क मेज़ में सफलतापूर्वक नेविगेट करने का लक्ष्य एक ऐसा सुसंगत पैटर्न बनाना है जिसमें वीआर रोबोट फ्रंट आई सेंसर द्वारा हरी डिस्क का पता लगाने पर दाईं ओर मुड़ता है, और फ्रंट आई सेंसर द्वारा नीली डिस्क का पता लगाने पर बाईं ओर मुड़ता है। इस तरह के पैटर्न की पहचान करने से आपको अपनी परियोजनाओं को सरल बनाने में मदद मिल सकती है क्योंकि वे जटिलता में बढ़ती जाती हैं।

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

आपकी जानकारी के लिए

ध्यान दें कि प्रोजेक्ट में कमांड के क्रम में भी एक पैटर्न मौजूद है। इस प्रोजेक्ट में (नीली डिस्क के लिए) आदेशों की एक श्रृंखला है जिसे तीन बार दोहराया गया है। कोड के इस भाग को लूप का उपयोग करके संक्षिप्त किया जा सकता है। यहां प्रदर्शित परियोजना नीली डिस्क से संबंधित उन तीन जबकि लूपों को एक एकल के लिए लूप में संयोजित करती है।

def main():
    # पहली डिस्क (हरी) तक ड्राइव करें, दाईं ओर मुड़ें
    while not front_eye.detect(GREEN):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(RIGHT, 90, DEGREES)

    # अगली 3 डिस्क (नीली) तक ड्राइव करें, बाईं ओर मुड़ें
    for value in range(3): 
        while not front_eye.detect(BLUE):
            drivetrain.drive(FORWARD)
            wait(5, MSEC)

        drivetrain.turn_for(LEFT, 90, DEGREES)

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

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

    डिस्क मेज़ प्लेग्राउंड का ऊपर से नीचे का दृश्य। रोबोट अपने शुरुआती स्थान पर है। तीर उस रास्ते को दर्शाते हैं जिस पर वीआर रोबोट चलेगा, जिसमें पहले हरे डिस्क की ओर आगे बढ़ना, दाएं मुड़ना, नीले डिस्क की ओर जाना, बाएं मुड़ना, दूसरे नीले डिस्क की ओर जाना, बाएं मुड़ना और तीसरे नीले डिस्क पर रुकना शामिल है। अंतिम नीली डिस्क पर एक लाल बॉक्स बना हुआ है जो अंतिम स्थान को दर्शाता है।
  • इस प्रोजेक्ट में, वीआर रोबोट तब तक आगे बढ़ता है जब तक कि फ्रंट आई सेंसर हरे रंग का पता नहीं लगा लेता।
    • वीआर रोबोट 90 डिग्री दाईं ओर मुड़ता है और नीले रंग का पता चलने तक फिर से आगे बढ़ता है।
    • इसके बाद वीआर रोबोट बाईं ओर मुड़ता है और तब तक आगे बढ़ता है जब तक कि फ्रंट आई सेंसर नीले रंग का पता नहीं लगा लेता। जैसे ही नीले रंग का पता चलता है, वीआर रोबोट फिर से बाईं ओर मुड़ जाता है।
    • अंत में, वीआर रोबोट तब तक आगे बढ़ता है जब तक कि फ्रंट आई सेंसर नीले रंग का पता नहीं लगा लेता, फिर वह रुक जाता है।
  • ध्यान दें कि जब फ्रंट आई सेंसर हरे रंग का पता लगाता है, तो वीआर रोबोट दाईं ओर मुड़ जाता है। इस प्रोजेक्ट में, जब फ्रंट आई सेंसर नीले रंग का पता लगाता है, तो वीआर रोबोट बाईं ओर मुड़ जाता है।

इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन चुनें।