पाठ 3: सेंसर और विद्युतचुंबक का उपयोग करके डिस्क को लक्ष्य स्थान पर रखना
प्रोजेक्ट में डिस्टेंस सेंसर जोड़ना
पाठ 2 में, वीआर रोबोट डिस्क को छोड़ने के लिए वापस आरंभिक बिंदु पर जाने के लिए विपरीत दिशा में चला। इसके लिए उपयोगकर्ता को वीआर रोबोट द्वारा तय की जाने वाली सटीक दूरी की गणना करनी आवश्यक थी। यह हमेशा संभव नहीं हो सकता है। इसके बजाय, वीआर रोबोट रिपोर्ट किए गए सेंसर मूल्यों का उपयोग करके लगातार सटीकता के साथ डिस्क को उठा और गिरा सकता है।
इस पाठ में, डिस्टेंस सेंसर का उपयोग यह निर्धारित करने के लिए किया जाएगा कि लक्ष्य पर लौटते समय वीआर रोबोट को कहां रुकना चाहिए। यह सेंसरget_distance कमांड का उपयोग करके वीआर रोबोट के सामने से निकटतम वस्तु तक की दूरी की रिपोर्ट करता है। वीआर रोबोट को लक्ष्य तक वापस ले जाने के लिए डिस्टेंस सेंसर का उपयोग करने के लिए निम्नलिखित कार्य होने चाहिए:
- वीआर रोबोट को 180 डिग्री घूमना होगा ताकि डिस्टेंस सेंसर लक्ष्य की ओर हो। turn_to_heading कमांड का उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि VR रोबोट सही दिशा में मुड़े।
- वीआर रोबोट डिस्क को कहाँ गिराना है, यह निर्धारित करने के लिए खेल के मैदान की पिछली दीवार के साथ दूरी सेंसर का उपयोग करेगा।
- वीआर रोबोट लक्ष्य तक पहुंचेगा।

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

परियोजना का निर्माण जारी रखें
- Unit8Lesson3प्रोजेक्ट में काम करना जारी रखें।
-
तीसरे कमेंट के बाद turn_to_heading कमांड जोड़ें। पैरामीटर को 180 डिग्री पर सेट करें, जिससे प्रोजेक्ट अब इस तरह दिखेगा:
def main(): #1. पहली डिस्क पर ड्राइव करें जबकि डाउन_आई.नियर_ऑब्जेक्ट() नहीं है: ड्राइवट्रेन.ड्राइव(फॉरवर्ड) प्रतीक्षा करें(5, एमएसईसी) ड्राइवट्रेन.स्टॉप() # 2. पहला डिस्क उठाएँ मैग्नेट.एनर्जाइज़ (बूस्ट) # 3. लक्ष्य की ओर ड्राइव करें ड्राइवट्रेन.टर्न_टू_हेडिंग(180, डिग्री) # 4. डिस्क को गोल में डालें -
अब जबकि वीआर रोबोट लक्ष्य की ओर उन्मुख है, वीआर रोबोट को लक्ष्य तक वापस जाने की आवश्यकता होगी। जोड़ें, ताकि प्रोजेक्ट का तीसराइस तरह दिखे:
# 3. लक्ष्य की ओर ड्राइव करें ड्राइवट्रेन.टर्न_टू_हेडिंग(180, डिग्री) जबकि शर्त: प्रतीक्षा करें(5, एमएसईसी) - लक्ष्य तक वापस जाने के लिए, वीआर रोबोट दूरी सेंसर से प्राप्त डेटा का उपयोग यह निर्धारित करने के लिए करेगा कि वीआर रोबोट लक्ष्य के अंदर कब है। जैसा कि पिछले पाठ में चर्चा की गई है, डिस्क मूवर प्लेग्राउंड पर प्रत्येक ग्रिड वर्ग 200 मिलीमीटर (मिमी) x 200 मिलीमीटर (मिमी) मापता है।

-
इन मापों का उपयोग करके, गोल का केंद्र खेल के मैदान की दीवार से लगभग 200 मिलीमीटर (मिमी) की दूरी पर निर्धारित किया जा सकता है।

-
वीआर रोबोट को गति से चलना चाहिएदूरी सेंसर यह रिपोर्ट करता है कि वीआर रोबोट खेल के मैदान की दीवार से 200 मिलीमीटर (मिमी) से अधिक दूर है। while लूप की स्थिति को get_distance कमांड पर मिलीमीटर (mm) पैरामीटर के साथ सेट करें। फिर तुलना ऑपरेटर को ग्रेटर देन (>) 200 में जोड़ें। परियोजना का तीसरा भाग अब इस प्रकार दिखना चाहिए:
# 3. लक्ष्य की ओर ड्राइव करें ड्राइवट्रेन.टर्न_टू_हेडिंग(180, डिग्री) जबकि फ्रंट_डिस्टेंस.गेट_डिस्टेंस(एमएम) > 200: प्रतीक्षा करें(5, एमएसईसी) -
इस while लूप में ड्राइवकमांड जोड़ें, ताकि प्रोजेक्ट का तीसरा भाग इस तरह दिखे। यह वीआर रोबोट को तब आगे बढ़ने का निर्देश देगा जब डिस्टेंस सेंसर 200 मिलीमीटर (मिमी) से अधिक की दूरी की रिपोर्ट करेगा।
# 3. लक्ष्य की ओर ड्राइव करें ड्राइवट्रेन.टर्न_टू_हेडिंग(180, डिग्री) जबकि फ्रंट_डिस्टेंस.गेट_डिस्टेंस(एमएम) > 200: ड्राइवट्रेन.ड्राइव(फॉरवर्ड) प्रतीक्षा करें(5, एमएसईसी) -
एक बार जब वीआर रोबोट लक्ष्य तक पहुंच जाता है (दीवार से 200 मिमी की दूरी), तो वीआर रोबोट को चलना बंद करना होगा। स्टॉपकमांड को व्हाइल लूप के बाहर जोड़ें, ताकि प्रोजेक्ट का तीसरा भाग इस तरह दिखे:
# 3. लक्ष्य की ओर ड्राइव करें ड्राइवट्रेन.टर्न_टू_हेडिंग(180, डिग्री) जबकि फ्रंट_डिस्टेंस.गेट_डिस्टेंस(एमएम) > 200: ड्राइवट्रेन.ड्राइव(फॉरवर्ड) प्रतीक्षा करें(5, एमएसईसी) ड्राइवट्रेन.स्टॉप() -
अब जबकि वीआर रोबोट लक्ष्य तक पहुँचकर रुक गया है, तो वह डिस्क को गिरा सकता है। चौथे कमेंट के नीचे एनर्जाइज़ कमांड जोड़ें और पैरामीटर को 'DROP' पर सेट करें। परियोजना का चौथा भाग अब इस प्रकार दिखना चाहिए:
# 4. डिस्क को लक्ष्य चुंबक.एनर्जाइज़(DROP) में गिराएँ -
वीआर रोबोट को किसी भी डिस्क को गिराने या उससे टकराने से बचने के लिए थोड़ी दूरी तक पीछे की ओर ड्राइव करने की आवश्यकता होगी। किसी डिस्क से टकराने पर वीआर रोबोट अपने मार्ग से भटक सकता है। इसके बाद वीआर रोबोट को घूमना होगा ताकि वह एक बार फिर डिस्क की ओर उन्मुख हो जाए। दिखाए गए अनुसार अंतिम एनर्जाइज़ कमांड के बाद निम्नलिखित कमांड जोड़ें, ताकि वीआर रोबोट को 100 मिलीमीटर (मिमी) पीछे की ओर ड्राइव करने और 0 डिग्री की दिशा में वापस मुड़ने का निर्देश दिया जा सके। सुनिश्चित करें कि आपके प्रोजेक्ट में कमांड सही ढंग से इंडेंट किए गए हैं।
# 4. डिस्क को लक्ष्य में गिराएँ magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) drivetrain.turn_to_heading(0, DEGREES) - यदि डिस्क मूवर प्लेग्राउंड पहले से खुला नहीं है, तो उसे खोलें और प्रोजेक्ट चलाएं।
-
वीआर रोबोट आगे बढ़ता है, पहली डिस्क उठाता है, फिर लक्ष्य की ओर 180 डिग्री का मोड़ लेता है। इसके बाद वीआर रोबोट डिस्टेंस सेंसर से प्राप्त मानों का उपयोग करके यह निर्धारित करता है कि कब चलना बंद करना है और डिस्क को कब गिराना है।

लक्ष्य में पहली डिस्क डालने के लिए प्रोजेक्ट प्रवाह
ध्यान दें कि इस प्रोजेक्ट के इस भाग में while लूप डिस्टेंस सेंसर के साथ कैसे काम करता है।
- वीआर रोबोट बढ़ेगा जब दूरी सेंसर दीवार से 200 मिलीमीटर से अधिक दूर
- जब दूरी सेंसर पता लगाता है कि खेल के मैदान की दीवार 200 मिलीमीटर (मिमी) से कम दूरी पर है, तो प्रोजेक्ट जबकिलूप के बाहर अगले कमांड पर चला जाएगा, और वीआर रोबोट चलना बंद कर देगा।
- परियोजना जारी रहेगी, इलेक्ट्रोमैग्नेट को सक्रिय किया जाडिस्क को लक्ष्य में गिराया जा सके
- इसके बाद वीआर रोबोट पीछे की ओर घूमेगा और 180 डिग्री मुड़ जाएगा ताकि वह अगली डिस्क का सामना करने के लिए तैयार हो सके।
इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन चुनें।