Skip to main content

प्रतियोगिता कनेक्शन: टर्निंग पॉइंट - C++

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

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

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

अपनी शिक्षा का विस्तार करें आइकन अपनी शिक्षा का विस्तार करें

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

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

    टेम्पलेट प्रोजेक्ट आइकन में नीचे की ओर क्लॉबोट ड्राइवट्रेन, नो गायरो लिखा है, तथा ऊपर एक रोबोट का ग्रे आरेख है, जो यह बताता है कि किस प्रोजेक्ट का चयन करना है।

     

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

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

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

नीचे नमूना समाधान देखें:

// 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(रिवर्स, 300, डिग्री);
    ClawMotor.spinFor(रिवर्स, 100, डिग्री);
  }
  अन्यथा {
    Brain.Screen.print("कोई लाल ऑब्जेक्ट नहीं")
  }
}

void hasBlueCallback() {
  Brain.Screen.setFont(mono40);
  Brain.Screen.clearLine(3);
  Brain.Screen.setCursor(3, 1);
  Vision5.takeSnapshot(Vision5__BLUEBOX);
  if (Vision5.objectCount > 0) {
    ArmMotor.spinFor(फॉरवर्ड, 90, डिग्री);
    ClawMotor.spinFor(फॉरवर्ड, 90, डिग्री);
    Drivetrain.driveFor(फॉरवर्ड, 12, इंच);
    ArmMotor.spinFor(रिवर्स, 90, डिग्री);
    ClawMotor.spinFor(रिवर्स, 90, डिग्री);
  }
  अन्यथा {
    Brain.Screen.print("कोई नीली वस्तु नहीं")
  }
}

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

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