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

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

परियोजना का निर्माण जारी रखें
- Unit8Lesson3परियोजना में काम करना जारी रखें।
-
तीसरी टिप्पणी के बाद turn_to_heading कमांड जोड़ें। पैरामीटर को 180 डिग्री पर सेट करें, ताकि प्रोजेक्ट अब इस तरह दिखे:
def मुख्य(): #1. पहली डिस्क पर ड्राइव करें जब तक down_eye.near_object() न हो: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. पहली डिस्क उठाओ magnet.energize(BOOST) # 3. लक्ष्य की ओर ड्राइव करें drivetrain.turn_to_heading(180, DEGREES) # 4. डिस्क को गोल में गिराएं -
अब जबकि वीआर रोबोट लक्ष्य की ओर उन्मुख हो गया है, वीआर रोबोट को वापस लक्ष्य की ओर जाना होगा। turn_to_heading कमांड के नीचेwhile लूप जोड़ें, ताकि प्रोजेक्ट का तीसरा भाग इस तरह दिखे:
# 3. लक्ष्य की ओर ड्राइव करें drivetrain.turn_to_heading(180, DEGREES) while condition: wait(5, MSEC) - लक्ष्य की ओर वापस जाने के लिए, वीआर रोबोट दूरी सेंसर से प्राप्त डेटा का उपयोग करके यह निर्धारित करेगा कि वीआर रोबोट लक्ष्य के अंदर कब है। जैसा कि पिछले पाठ में चर्चा की गई थी, डिस्क मूवर प्लेग्राउंड पर प्रत्येक ग्रिड वर्ग का माप 200 मिलीमीटर (मिमी) x 200 मिलीमीटर (मिमी) है।

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

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

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