पैकेज डैश चैलेंज - पायथन
पैकेज डैश चैलेंज
इस चुनौती में, आपको अपने रोबोट को इस तरह से प्रोग्राम करना होगा कि वह पैकेजों को जितनी जल्दी हो सके उठा ले और उन्हें लोडिंग डॉक तक पहुंचा दे!
चुनौती के नियम:
- रोबोट को स्टार्ट ज़ोन से ही चुनौती शुरू करनी होगी।
- ये पैकेज (एल्यूमीनियम के डिब्बे) केवल किताबों, क्लॉबॉट के पंजे और लोडिंग डॉक के संपर्क में आ सकते हैं।
- यदि कोई पैकेज गोदाम के फर्श पर गिर जाता है, तो आपको फ़ील्ड को रीसेट करना होगा और फिर से शुरू करना होगा।
- रोबोट के हिलते ही प्रत्येक दौड़ का समय शुरू हो जाता है।
- जैसे ही आखिरी पैकेज लोडिंग डॉक में डाला जाता है, समय रुक जाता है।
- फ़ील्ड को रीसेट करते समय, सब कुछ ठीक उसी स्थान पर वापस आ जाना चाहिए जहाँ से यह शुरू हुआ था।
- मस्ती करो!
शिक्षक सुझाव
- वेयरहाउस के लिए एक पृष्ठभूमि या उद्देश्य बनाकर ग्राहकों की भागीदारी बढ़ाएं! यह किस प्रकार का गोदाम है? गोदाम में किस प्रकार के पैकेज पाए जाते हैं? इस गोदाम का मालिक कौन है?
- छात्रों को ऐसे अलग-अलग रास्ते या रणनीतियाँ बनाने की अनुमति दें जिनसे वे डिब्बों को अधिक कुशलता से परिवहन कर सकें।
- इस चुनौती के विजेता का फैसला करने के लिए न केवल पूरा करने में लगने वाले समय की तुलना करें (यदि आप इसे प्रतिस्पर्धी बनाने के लिए आयोजित कर रहे हैं) बल्कि उपयोग की गई नेविगेशन तकनीकों की भी तुलना करें ताकि छात्र अन्य टीमों के समाधानों पर विचार कर सकें।
शिक्षक टूलबॉक्स
-
समाधान
छात्रों के मूल्यांकन के लिए प्रोग्रामिंग रूब्रिक यहां पाया जा सकता है ।
इस समस्या का एक संभावित समाधान निम्नलिखित है। रोबोट की प्रारंभिक स्थिति और चुने गए पथ के आधार पर समाधान भिन्न हो सकते हैं। सभी पैकेजों को स्थानांतरित करने के कई रास्ते हैं।
# प्रोजेक्ट कोड प्रारंभ करें
# क्लॉ मोटर को सुरक्षित रूप से चलाएं और पहला पैकेज उठाएं
claw_motor.set_timeout(2, सेकंड)
drivetrain.drive_for(FORWARD, 900, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
arm_motor.spin_for(FORWARD, 315, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.drive_for(FORWARD, 215, MM)
claw_motor.spin_for(FORWARD, 120, DEGREES)
# पहला पैकेज उतारने के लिए लोडिंग डॉक तक ड्राइव करें
drivetrain.drive_for(REVERSE, 110, MM)
drivetrain.turn_for(RIGHT, 90, DEGREES)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 920, एमएम)
ड्राइवट्रेन.टर्न_फॉर(लेफ्ट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 2300, एमएम)
ड्राइवट्रेन.टर्न_फॉर(लेफ्ट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 750, एमएम)
आर्म_मोटर.स्पिन_फॉर(रिवर्स, 315, डिग्री)
क्लॉ_मोटर.स्पिन_फॉर(रिवर्स, 120, डिग्री)
# दूसरा पैकेज उठाएं
ड्राइवट्रेन.ड्राइव_फॉर(रिवर्स, 200, एमएम)
ड्राइवट्रेन.टर्न_फॉर(लेफ्ट, 170, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 900, एमएम)
ड्राइवट्रेन.टर्न_फॉर(राइट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 2300, मिमी)
आर्म_मोटर.स्पिन_फॉर(फॉरवर्ड, 315, डिग्री)
क्लॉ_मोटर.स्पिन_फॉर(फॉरवर्ड, 120, डिग्री)
# दूसरा पैकेज उतारने के लिए लोडिंग डॉक तक ड्राइव करें
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 900, मिमी)
ड्राइवट्रेन.टर्न_फॉर(राइट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 960, मिमी)
आर्म_मोटर.स्पिन_फॉर(रिवर्स, 315, डिग्री)
क्लॉ_मोटर.स्पिन_फॉर(रिवर्स, 120, डिग्री)
# पैकेज उठाएँ तीसरा पैकेज
ड्राइवट्रेन.ड्राइव_फॉर(रिवर्स, 150, एमएम)
ड्राइवट्रेन.टर्न_फॉर(लेफ्ट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 490, एमएम)
आर्म_मोटर.स्पिन_फॉर(फॉरवर्ड, 315, डिग्री)
क्लॉ_मोटर.स्पिन_फॉर(फॉरवर्ड, 120, डिग्री)
# तीसरे पैकेज को उतारने के लिए लोडिंग डॉक तक ड्राइव करें
ड्राइवट्रेन.ड्राइव_फॉर(रिवर्स, 490, एमएम)
ड्राइवट्रेन.टर्न_फॉर(राइट, 90, डिग्री)
ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 150, एमएम)
आर्म_मोटर.स्पिन_फॉर(रिवर्स, 315, डिग्री)
क्लॉ_मोटर.स्पिन_फॉर(रिवर्स, 120, डिग्री)