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

प्रतियोगिता संबंध: निर्णायक मोड़ - सी++

टर्निंग पॉइंट वीईएक्स रोबोटिक्स प्रतियोगिता का मैदान, जिसमें खेल के तत्व और स्कोरिंग क्षेत्र मैच की शुरुआत के लिए प्रारंभिक स्थानों पर स्थित हैं। पीछे की दीवार के साथ-साथ एक जाल लगा हुआ है जिसके सामने कई पलटने योग्य झंडे लगे हुए हैं।
वीआरसी 2018-2019 टर्निंग पॉइंट फील्ड

रोबोट क्षमताएँ

2018-2019 VEX रोबोटिक्स प्रतियोगिता के गेम टर्निंग पॉइंट में खिलाड़ियों को अन्य गेम तत्वों के साथ-साथ झंडे को चालू/बंद करने की आवश्यकता थी। कुल मिलाकर नौ झंडे थे: तीन निचले झंडे जिन्हें रोबोट द्वारा हिलाया जा सकता था, और छह ऊंचे झंडे जिन्हें केवल प्रतियोगिता के बॉल गेम के टुकड़ों से मारकर ही हिलाया जा सकता था। प्रतियोगिता में भाग लेने वाली टीमों को बॉल लॉन्चर का उपयोग करके ऊंचे झंडों को निशाना बनाने का तरीका ढूंढना था। अगर आप कल्पना कर सकते हैं, तो गेंद के टुकड़ों का उपयोग करके झंडों को हिट करने के लिए रोबोट को प्रोग्राम करना, माप के आधार पर, हमेशा सटीक नहीं हो सकता है। यदि रोबोट स्वायत्त अवधि के दौरान एक गलत मोड़ लेता है, तो संभावना है कि गणना गलत होने के कारण कोई भी झंडा नहीं टकराएगा। इसी तरह, ड्राइविंग स्किल्स चैलेंज के लिए, टीमों के लिए रोबोट को मैन्युअल रूप से इतनी अच्छी तरह से संरेखित करना मुश्किल हो सकता है कि गेंद को ठीक से लॉन्च किया जा सके। इस प्रकार, कुशल टीमें विजन सेंसर का उपयोग करके रोबोट को प्रोग्राम करेंगी ताकि वह झंडों का पता लगा सके और फिर सटीक निशाने लगाने के लिए रोबोट को ठीक से संरेखित कर सके।

अपने सीखने का विस्तार करें आइकन अपने ज्ञान का विस्तार करें

इस गतिविधि को आगे बढ़ाने के लिए, अपने छात्रों से एक ऐसा प्रोजेक्ट डिज़ाइन और रूपरेखा तैयार करने के लिए कहें जिसमें रोबोट पीले रंग की वस्तुओं की ओर बढ़े, जिनका उपयोग वे संभावित रूप से इस प्रतियोगिता खेल के लिए कर सकते हैं! अपने छात्रों से निम्नलिखित करने के लिए
:

  • क्लॉबॉट (ड्राइवट्रेन, 2-मोटर, नो जाइरो) उदाहरण प्रोजेक्ट खोलें।

    टेम्प्लेट प्रोजेक्ट आइकन के निचले भाग में क्लॉबॉट ड्राइवट्रेन, नो जाइरो लिखा है और उसके ऊपर एक रोबोट का ग्रे रंग का आरेख बना है, जो यह दर्शाता है कि कौन सा प्रोजेक्ट चुनना है।

     

  • विज़न सेंसर को प्रोग्राम करते समय डिटेक्टिंग ऑब्जेक्ट्स (विज़न) उदाहरण प्रोजेक्ट को संदर्भ के रूप में उपयोग करें (Google Doc / .v5cpp)।
  • क्लॉबॉट (ड्राइवट्रेन, 2-मोटर, बिना जाइरो) कॉन्फ़िगरेशन में विज़न सेंसर जोड़ें और फिर विज़न सेंसर को लाल और नीली वस्तुओं का पता लगाने के लिए कॉन्फ़िगर करें। अधिक जानकारी के लिए यहांकरें

    VEXcode V5 डिवाइसेस विंडो खुली हुई है और 'ऐड ए डिवाइस' के चयन में बाईं ओर एक लाल बॉक्स में विज़न सेंसर हाइलाइट किया हुआ दिखाई दे रहा है। अन्य विकल्पों में कंट्रोलर, ड्राइवट्रेन, मोटर और 3 वायर शामिल हैं।

  • क्लॉबॉट को पहचाने गए ऑब्जेक्ट की ओर बढ़ने के लिए प्रोग्राम करें। क्लॉबॉट को इस तरह से प्रोग्राम किया जा सकता है कि वह अपना हाथ इस तरह उठाए जैसे कि वह कोई झंडा फहरा रहा हो!
  • प्रोजेक्ट को डाउनलोड करें और चलाएंC++में) यह देखने के लिए कि क्या विज़न सेंसर VRC टर्निंग पॉइंट गेम में पीली गेंदों जैसी पीली वस्तुओं का पता लगा सकता है। यदि विज़न सेंसर वस्तुओं का पता लगा सकता है, तो क्या रोबोट उन पहचानी गई वस्तुओं के आधार पर चलता है? सहायता के लिए, प्रोजेक्ट डाउनलोड करने और चलाने से संबंधित ट्यूटोरियल वीडियो देखें।
  • यदि समय मिले, तो टर्निंग पॉइंट के मैदान के समान एक खेल का मैदान तैयार करें। रोबोट को गति देने और अंक अर्जित करने के लिए विज़न सेंसर का उपयोग करने का अभ्यास करें!

नीचे दिए गए नमूना समाधान को देखें:

// V5 लाइब्रेरी शामिल करें
#include "vex.h"
  
// VEX लाइब्रेरी का आसान उपयोग करने की अनुमति देता है
using namespace vex;

event checkRed = event();
event checkBlue = event();

void hasRedCallback() {
  Brain.Screen.setFont(mono40);
  Brain.Screen.clearLine(1);
  Brain.Screen.setCursor(1, 1);
  Vision5.takeSnapshot(Vision5__REDBOX);
  if (Vision5.objectCount > 0) {
    ArmMotor.spinFor(forward, 300, degrees);
    ClawMotor.spinFor(forward, 100, degrees);
    Drivetrain.driveFor(forward, 12, inches);
    ArmMotor.spinFor(reverse, 300, degrees);
    क्लॉमोटर.स्पिनफॉर(रिवर्स, 100, डिग्री);
  }
  अन्यथा {
    ब्रेन.स्क्रीन.प्रिंट("कोई लाल वस्तु नहीं")
  }
}

शून्य हैसब्लूकॉलबैक() {
  ब्रेन.स्क्रीन.सेटफॉन्ट(मोनो40);
  ब्रेन.स्क्रीन.क्लियरलाइन(3);
  ब्रेन.स्क्रीन.सेटकर्सर(3, 1);
  विजन5.टेकस्नैपशॉट(विजन5__ब्लूबॉक्स);
  यदि (विजन5.ऑब्जेक्टकाउंट > 0) {
    आर्ममोटर.स्पिनफॉर(फॉरवर्ड, 90, डिग्री);
    क्लॉमोटर.स्पिनफॉर(फॉरवर्ड, 90, डिग्री);
    ड्राइवट्रेन.ड्राइवफॉर(फॉरवर्ड, 12, इंच);
    आर्ममोटर.स्पिनफॉर(रिवर्स, 90, डिग्री);
    क्लॉमोटर.स्पिनफॉर(रिवर्स, 90, डिग्री);
  }
  अन्यथा {
    ब्रेन.स्क्रीन.प्रिंट("कोई नीली वस्तु नहीं")
  }
}

इंट मेन() {
  // रोबोट कॉन्फ़िगरेशन आरंभ करना। दूर नहीं करते!
  vexcodeInit();
  // इवेंट हैंडलर पंजीकृत करें
  checkRed(hasRedCallback);
  checkBlue(hasBlueCallback);

  // नए सेंसर डेटा की जाँच के लिए लगातार चलता है
  while (true) {
    checkRed.broadcastAndWait();
    checkBlue.broadcastAndWait();
    wait(0.2, seconds);
  }
}