Skip to main content

മത്സര കണക്ഷൻ: ടേണിംഗ് പോയിന്റ് - സി++

മത്സരത്തിന്റെ തുടക്കത്തിനായി ഗെയിം ഘടകങ്ങളും സ്കോറിംഗ് ഏരിയകളും ഉള്ള ടേണിംഗ് പോയിന്റ് VEX റോബോട്ടിക്സ് മത്സര ഫീൽഡ്. പിൻവശത്തെ ഭിത്തിയിൽ ഒരു വലയുണ്ട്, അതിനു മുന്നിൽ ഫ്ലിപ്പബിൾ പതാകകളുടെ ഒരു പരമ്പരയുണ്ട്.
വിആർസി 2018-2019 ടേണിംഗ് പോയിന്റ് ഫീൽഡ്

റോബോട്ട് കഴിവുകൾ

2018 - 2019 VEX റോബോട്ടിക്സ് മത്സര ഗെയിം ടേണിംഗ് പോയിന്റിൽ കളിക്കാർക്ക് മറ്റ് ഗെയിം ഘടകങ്ങൾക്കൊപ്പം ഫ്ലാഗുകളും മാറ്റേണ്ടി വന്നു. ആകെ ഒമ്പത് പതാകകൾ ഉണ്ടായിരുന്നു: റോബോട്ട് ഉപയോഗിച്ച് മാറ്റാൻ കഴിയുന്ന മൂന്ന് അടിയിലുള്ള പതാകകളും, മത്സര പന്ത് കളി കഷണങ്ങൾ ഉപയോഗിച്ച് മാത്രം അടിച്ചുകൊണ്ട് മാറ്റാൻ കഴിയുന്ന ആറ് ഉയർന്ന പതാകകളും. മത്സര ടീമുകൾക്ക് ഒരു ബോൾ ലോഞ്ചർ ഉപയോഗിച്ച് ഉയർന്ന പതാകകൾ അടിക്കുന്നതിനുള്ള ഒരു മാർഗം കണ്ടെത്തേണ്ടതുണ്ടായിരുന്നു. നിങ്ങൾക്ക് സങ്കൽപ്പിക്കാൻ കഴിയുമെങ്കിൽ, പന്ത് കളിയുടെ കഷണങ്ങൾ ഉപയോഗിച്ച് പതാകകളിൽ അടിക്കാൻ റോബോട്ടിനെ പ്രോഗ്രാം ചെയ്യുന്നത് എല്ലായ്പ്പോഴും കൃത്യമായിരിക്കണമെന്നില്ല. സ്വയംഭരണ കാലയളവിൽ റോബോട്ട് ഒരു തെറ്റായ തിരിവ് നടത്തിയാൽ, കണക്കുകൂട്ടലുകൾ തെറ്റുമെന്നതിനാൽ ഒരു ഫ്ലാഗിലും ഇടിക്കാതിരിക്കാൻ സാധ്യതയുണ്ട്. അതുപോലെ, ഡ്രൈവിംഗ് സ്കിൽസ് ചലഞ്ചിൽ, പന്ത് ശരിയായി വിക്ഷേപിക്കുന്നതിന് റോബോട്ടിനെ സ്വമേധയാ നിരത്തുന്നത് ടീമുകൾക്ക് ബുദ്ധിമുട്ടായിരിക്കും. അങ്ങനെ, വൈദഗ്ധ്യമുള്ള ടീമുകൾ പതാകകൾ കണ്ടെത്തുന്നതിന് വിഷൻ സെൻസർ ഉപയോഗിച്ച് റോബോട്ടിനെ പ്രോഗ്രാം ചെയ്യുകയും കൃത്യമായ ഷോട്ടുകൾ എടുക്കുന്നതിന് റോബോട്ടിനെ ശരിയായി വിന്യസിക്കുകയും ചെയ്യും.

നിങ്ങളുടെ പഠന ഐക്കൺ വികസിപ്പിക്കുക നിങ്ങളുടെ പഠനം വിപുലീകരിക്കുക

ഈ പ്രവർത്തനം വികസിപ്പിക്കുന്നതിന്, ഈ മത്സര ഗെയിമിൽ ഉപയോഗിക്കാൻ സാധ്യതയുള്ള മഞ്ഞ വസ്തുക്കളിലേക്ക് റോബോട്ട് നീങ്ങാൻ സഹായിക്കുന്ന ഒരു പ്രോജക്റ്റ് രൂപകൽപ്പന ചെയ്യാനും രൂപരേഖ തയ്യാറാക്കാനും നിങ്ങളുടെ വിദ്യാർത്ഥികളോട് ആവശ്യപ്പെടുക!
നിങ്ങളുടെ വിദ്യാർത്ഥികളോട് ഇനിപ്പറയുന്നവ ചെയ്യാൻ ആവശ്യപ്പെടുക:

  • Clawbot (Drivetrain, 2-motor, No Gyro) ഉദാഹരണ പ്രോജക്റ്റ് തുറക്കുക.

    ടെംപ്ലേറ്റ് പ്രോജക്റ്റ് ഐക്കണിൽ താഴെ Clawbot Drivetrain, No Gyro എന്ന് എഴുതിയിരിക്കുന്നു, മുകളിൽ ഒരു റോബോട്ടിന്റെ ചാരനിറത്തിലുള്ള ഡയഗ്രം ഉണ്ട്, അത് ഏത് പ്രോജക്റ്റ് തിരഞ്ഞെടുക്കണമെന്ന് സൂചിപ്പിക്കുന്നു.

     

  • വിഷൻ സെൻസർ പ്രോഗ്രാം ചെയ്യുമ്പോൾ റഫറൻസായി ഡിറ്റക്റ്റിംഗ് ഒബ്ജക്റ്റ്സ് (വിഷൻ) ഉദാഹരണ പ്രോജക്റ്റ് ഉപയോഗിക്കുക (ഗൂഗിൾ ഡോക് / .v5cpp).
  • Clawbot (Drivetrain, 2-motor, No Gyro) കോൺഫിഗറേഷനിലേക്ക് വിഷൻ സെൻസർ ചേർക്കുക, തുടർന്ന് ചുവപ്പും നീലയും നിറങ്ങളിലുള്ള വസ്തുക്കൾ കണ്ടെത്തുന്നതിന് വിഷൻ സെൻസർ കോൺഫിഗർ ചെയ്യുക. കൂടുതൽ വിവരങ്ങൾക്ക് ഇവിടെക്ലിക്ക് ചെയ്യുക.

    VEXcode V5 Devices വിൻഡോ തുറന്നിരിക്കുന്നു, Add a Device എന്നതിനുള്ള സെലക്ഷൻ ഇടതുവശത്തുള്ള ഒരു ചുവന്ന ബോക്സിൽ ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്ന വിഷൻ സെൻസർ കാണിക്കുന്നു. കൺട്രോളർ, ഡ്രൈവ്‌ട്രെയിൻ, മോട്ടോർ, 3 വയർ എന്നിവയാണ് മറ്റ് ഓപ്ഷനുകൾ.

  • കണ്ടെത്തിയ വസ്തുവിലേക്ക് നീങ്ങാൻ ക്ലോബോട്ട് പ്രോഗ്രാം ചെയ്യുക. ഒരു പതാക മാറ്റുന്നതുപോലെ ക്ലോബോട്ടിനെ കൈ ഉയർത്താൻ പോലും പ്രോഗ്രാം ചെയ്യാൻ കഴിയും!
  • VRC ടേണിംഗ് പോയിന്റ് ഗെയിമിലെ മഞ്ഞ പന്തുകൾ പോലുള്ള മഞ്ഞ വസ്തുക്കളെ വിഷൻ സെൻസറിന് കണ്ടെത്താൻ കഴിയുമോ എന്ന് നിരീക്ഷിക്കാൻ പ്രോജക്റ്റ് ഡൗൺലോഡ് ചെയ്ത് (C++ൽ) പ്രവർത്തിപ്പിക്കുക. വിഷൻ സെൻസറിന് വസ്തുക്കളെ കണ്ടെത്താൻ കഴിയുമെങ്കിൽ, കണ്ടെത്തിയ ആ വസ്തുക്കളുടെ അടിസ്ഥാനത്തിൽ റോബോട്ട് നീങ്ങുമോ? സഹായത്തിന്, ഒരു പ്രോജക്റ്റ് ഡൗൺലോഡ് ചെയ്ത് പ്രവർത്തിപ്പിക്കുക എന്ന ട്യൂട്ടോറിയൽ വീഡിയോ കാണുക.
  • സമയം അനുവദിക്കുമെങ്കിൽ, ടേണിംഗ് പോയിന്റ് ഫീൽഡിന് സമാനമായ ഒരു ഗെയിം ഫീൽഡ് സജ്ജമാക്കുക. പോയിന്റുകൾ നേടുന്നതിനായി റോബോട്ടിനെ നീക്കാൻ അനുവദിക്കുന്നതിന് വിഷൻ സെൻസർ ഉപയോഗിച്ച് പരിശീലിക്കുക!

താഴെ കൊടുത്തിരിക്കുന്ന സാമ്പിൾ പരിഹാരം കാണുക:

// V5 ലൈബ്രറി
ഉൾപ്പെടുത്തുക #include "vex.h"
  
// നെയിംസ്‌പെയ്‌സ് vex ഉപയോഗിച്ച് VEX ലൈബ്രറി
എളുപ്പത്തിൽ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു;

ഇവന്റ് checkRed = 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);
    ClawMotor.spinFor(reverse, 100, degrees);
  }
  else {
    Brain.Screen.print("Red Object ഇല്ല")
  }
}

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(forward, 90, degrees);
    ClawMotor.spinFor(forward, 90, degrees);
    Drivetrain.driveFor(forward, 12, inches);
    ArmMotor.spinFor(reverse, 90, degrees);
    ClawMotor.spinFor(reverse, 90, degrees);
  }
  else {
    Brain.Screen.print("No Blue Object")
  }
}

int main() {
  // റോബോട്ട് കോൺഫിഗറേഷൻ ആരംഭിക്കുന്നു. നീക്കം ചെയ്യരുത്!
  vexcodeInit();
  // ഇവന്റ് ഹാൻഡ്‌ലറുകൾ രജിസ്റ്റർ ചെയ്യുക
  checkRed(hasRedCallback);
  checkBlue(hasBlueCallback);

  // പുതിയ സെൻസർ ഡാറ്റ പരിശോധിക്കാൻ നിരന്തരം പ്രവർത്തിക്കുന്നു
  അതേസമയം (true) {
    checkRed.broadcastAndWait();
    checkBlue.broadcastAndWait();
    wait(0.2, seconds);
  }
}