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

पाठ 2: नंबर '5' तक ड्राइव करें

इस पाठ में, वीआर रोबोट नंबर ग्रिड मैप प्लेग्राउंड पर नंबर '5' तक जाएगा और वापस नंबर '1' पर आएगा!

नंबर ग्रिड मैप प्लेग्राउंड की ऊपर से ली गई छवि। वीआर रोबोट को नीचे बाईं ओर नंबर 1 पर देखा जा सकता है। सबसे नीचे वाली पंक्ति के केंद्र में, संख्या 5 पर एक विशेष संदेश देखा जा सकता है।

ध्यान दें कि वीआर रोबोट एक्स अक्ष के साथ यात्रा करेगा और एक्स मान बढ़ते हुए नंबर ग्रिड मैप प्लेग्राउंड पर '5' नंबर तक पहुंचेंगे।

प्लेग्राउंड के केंद्र पर x अक्ष को ओवरले करते हुए नंबर ग्रिड मैप प्लेग्राउंड। प्रत्येक वर्ग के केंद्र को X अक्ष के मान से चिह्नित किया गया है, जो बाईं ओर -900 से शुरू होकर प्रत्येक वर्ग में 200 की वृद्धि के साथ दाईं ओर 900 तक जाता है। नीचे बाईं ओर कोने में नंबर 1 पर एक वीआर रोबोट देखा जा सकता है, जिस पर एक तीर नंबर 5 की ओर इशारा कर रहा है।

वीआर रोबोट नंबर ग्रिड मैप प्लेग्राउंड पर '5' नंबर के स्थान पर जाएगा। हालांकि, वीआर रोबोट द्वारा उस संख्या तक पहुंचने से पहले, उसे यह बताना होगा कि वह संख्या कहां स्थित है। खेल के मैदान के केंद्र से शुरू करते हुए, संख्या '5' के निर्देशांक (-100, -900) हैं।

पहले वाले नंबर ग्रिड मैप प्लेग्राउंड के निचले बाएं कोने में x और y अक्षों को एक दूसरे के ऊपर रखा गया है। x अक्ष पर -100 से 5 की ओर और y अक्ष पर -900 से 5 की ओर एक तीर दिखाया गया है। वीआर रोबोट अभी भी नंबर 1 पर है, जिसके निर्देशांक -900 हैं, रोबोट के ठीक नीचे -900।

  • सबसे पहले, वीआर रोबोट का मुख '5' की ओर होना चाहिए। turn_for कमांड को ड्रैग करें या टाइप करें।
# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)
  • कमांडwhile लूप को खींचें आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while condition:
        wait(5, MSEC)
  • डिस्टेंस सेंसर यूनिट की तरह ही, यह प्रोजेक्ट नंबर ग्रिड मैप प्लेग्राउंड को नेविगेट करने के लिए तुलना ऑपरेटर के साथ लोकेशन सेंसर की स्थिति का उपयोग करेगा। while लूप के लिए शर्त को अक्ष में कमांड स्थितिमिलीमीटर (mm) से कम पर सेट करें आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        wait(5, MSEC)
  • नॉन-वेटिंग ड्राइव कमांड को व्हाइल लूप के अंदर ड्रैग या टाइप करें। आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
  • ध्यान दें कि ग्रेटर दैन ऑपरेटर के बजाय लेस दैन ऑपरेटर का उपयोग किया गया है क्योंकि वीआर रोबोट प्लेग्राउंड के बाईं ओर से दाईं ओर जा रहा है। वीआर रोबोट -900 मिलीमीटर (मिमी) के एक्स-मान से शुरू होता है। जैसे-जैसे वीआर रोबोट आगे बढ़ता है, एक्स-मान बढ़ता जाता है, और इस प्रकार रोबोट तब तक आगे बढ़ता रहेगा जब तक एक्स-मान -100 से कम है।

पहले वाले नंबर ग्रिड मैप प्लेग्राउंड के निचले बाएं कोने में x और y अक्षों को एक दूसरे के ऊपर रखा गया है। x अक्ष पर -100 से 5 की ओर और y अक्ष पर -900 से 5 की ओर एक तीर दिखाया गया है। वीआर रोबोट अभी भी नंबर 1 पर है, जिसके निर्देशांक -900 हैं, रोबोट के ठीक नीचे -900।

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

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

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

नंबर ग्रिड मैप प्लेग्राउंड के ऊपर से नीचे के दो दृश्य। पहले चित्र में, वीआर रोबोट को नंबर 51 पर दिखाया गया है और एक तीर यह इंगित करता है कि रोबोट दाईं ओर नंबर 60 की ओर बढ़ने वाला है। ऊपर दिए गए पाठ में लिखा है 'ड्राइव करते समय स्थिति इससे कम होनी चाहिए'। दूसरे चित्र में, वीआर रोबोट को नंबर 6 पर दिखाया गया है और एक तीर यह इंगित करता है कि रोबोट नंबर 96 की ओर बढ़ने वाला है। ऊपर दिए गए पाठ में लिखा है 'ड्राइव करते समय स्थिति इससे कम होनी चाहिए'।

यदि वीआर रोबोट दाएं से बाएं या ऊपर से नीचे (छोटे मान) की ओर बढ़ रहा है, तो ग्रेटर दैन ऑपरेटर का उपयोग तब किया जाता है जब स्थिति लक्ष्य मान से अधिक हो।

नंबर ग्रिड मैप प्लेग्राउंड के ऊपर से नीचे के दो दृश्य। पहले चित्र में, वीआर रोबोट को नंबर 60 पर दिखाया गया है और एक तीर यह इंगित करता है कि रोबोट बाईं ओर नंबर 51 की ओर बढ़ने वाला है। ऊपर दिए गए पाठ में लिखा है 'जब स्थिति इससे अधिक हो तब गाड़ी चलाएं'। दूसरे चित्र में, वीआर रोबोट को नंबर 96 पर दिखाया गया है और एक तीर यह इंगित करता है कि रोबोट नीचे की ओर नंबर 6 की ओर बढ़ने वाला है। ऊपर दिए गए पाठ में लिखा है 'जब स्थिति इससे अधिक हो तब गाड़ी चलाएं'।

तुलना ऑपरेटरों का उपयोग करते हुए, वीआर रोबोट तब यात्रा करेगा जब स्थान सेंसर द्वारा रिपोर्ट किया गया मान थ्रेशोल्ड मान से अधिक (>) या कम (<) होगा। इस उदाहरण में, वीआर रोबोट एक्स-अक्ष पर धनात्मक 500 मिलीमीटर (मिमी) तक नेविगेट करेगा। वीआर रोबोट तब चलेगा जब एक्स-अक्ष पर स्थिति 0 से लेकर +499 तक कहीं भी होगी। जब लोकेशन सेंसर रिपोर्ट करता है किस्थिति 501 या उससे अधिक है, तो वीआर रोबोट चलना बंद कर देगा। 

# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    monitor_sensor(location.position)
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < 500:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

ध्यान दें कि लोकेशन सेंसर द्वारा रिपोर्ट किया गया मान ठीकनहीं बल्कि मिलीमीटर (मिमी) है। डिस्टेंस सेंसर की तरह, तुलना ऑपरेटरों का उपयोग इसलिए किया जाता है क्योंकि वीआर रोबोट को प्रोजेक्ट के माध्यम से पुनरावृति करने और मानों की रिपोर्ट करने में समय लगता है।

  • लूप के बाहर स्टॉप कमांड को ड्रैग करें या टाइप करें जबकि। आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:
# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
  • यदि प्लेग्राउंड विंडोपहले से खुली नहीं है, तो उसे खोलें। सुनिश्चित करें किनंबर ग्रिड मैप प्लेग्राउंडखुल जाए, और प्रोजेक्ट को चलाएं।
  • वीआर रोबोट को नंबर ग्रिड मैप प्लेग्राउंड पर नंबर '5' तक ड्राइव करते हुए देखें।

नंबर ग्रिड मैप प्लेग्राउंड की ऊपर से ली गई छवि। वीआर रोबोट को नीचे नंबर 5 पर देखा जा सकता है।

  • इस प्रोजेक्ट में, वीआर रोबोट नंबर ग्रिड मैप प्लेग्राउंड पर नंबर '5' तक ड्राइव करता है। while लूप का उपयोग इसलिए किया जाता है ताकि वीआर रोबोट तब तक आगे बढ़ता रहे जब तक कि एक्स-वैल्यू उस निर्देशांक के एक्स-वैल्यू से कम न हो जिस पर संकेतित संख्या स्थित है।
  • एक बार जब X का मान -100 से अधिक हो जाता है, तो प्रोजेक्ट लूप के बाहर अगले कमांड पर चला जाता है, जो कि स्टॉप कमांड है। चूंकि संख्या '5' का X-मान -100 है, इसलिए X-मान -100 से अधिक होने पर VR रोबोट चलना बंद कर देगा।

अभी-अभी चलाए गए पायथन प्रोजेक्ट का प्रवाह। एक तीर यह दर्शाता है कि 90 डिग्री का दायां मोड़ पूरा होने के बाद रोबोट व्हाइल लूप में चला जाता है। while लूप के बगल में एक चक्रीय तीर है जिस पर लिखा है 'x का मान -100 से कम होने पर True रिटर्न होता है, VR रोबोट आगे बढ़ता है।' उसके नीचे एक लाल तीर है जिस पर लिखा है 'x का मान -100 से अधिक होने पर, False लौटाता है।' वीआर रोबोट ने गाड़ी चलाना बंद कर दिया।

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

ध्यान दें कि लोकेशन सेंसर द्वारा रिपोर्ट किया गया मानबिल्कुल बराबर नहीं हो सकता है, यहमिलीमीटर (मिमी) के बीच हो सकता है। डिस्टेंस सेंसर की तरह, तुलना ऑपरेटरों का उपयोग इसलिए किया जाता है क्योंकि वीआर रोबोट को प्रोजेक्ट के माध्यम से पुनरावृति करने और मानों की रिपोर्ट करने में समय लगता है।

प्लेग्राउंड विंडो में डैशबोर्ड को ज़ूम करके दिखाया गया है कि लोकेशन सेंसर का रिपोर्ट किया गया x मान -90 मिलीमीटर है।

VEXcode VR Python में, आप अपने प्रोजेक्ट मेंसे बड़ा याके बराबर (>=) या से छोटा याके बराबर (<=) तुलना ऑपरेटर का उपयोग करके अपनी गतिविधियों में अतिरिक्त सटीकता प्राप्त कर सकते हैं।

# प्रोजेक्ट कोड को "main" में जोड़ें
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) <= -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

वीआर रोबोट के वेग और लूप के माध्यम से प्रोजेक्ट कितनी तेज़ी से चलता है, इस पर निर्भर करते हुए, आप देख सकते हैं कि जब ऑपरेटर में या बराबर (<= या >=) जोड़ा जाता है तो वीआर रोबोट थ्रेशोल्ड मान के करीब रुकने में सक्षम होता है।

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