Skip to main content

প্রতিযোগিতা সংযোগ: টার্নিং পয়েন্ট - C++

ম্যাচের শুরুতে শুরুর অবস্থানে খেলার উপাদান এবং স্কোরিং এরিয়া সহ টার্নিং পয়েন্ট VEX রোবোটিক্স প্রতিযোগিতার ক্ষেত্র। পিছনের দেয়াল বরাবর একটি জাল রয়েছে যার সামনে উল্টানো যায় এমন পতাকার একটি সিরিজ রয়েছে।
ভিআরসি ২০১৮-২০১৯ টার্নিং পয়েন্ট ফিল্ড

রোবট ক্ষমতা

২০১৮-২০১৯ সালের VEX রোবোটিক্স প্রতিযোগিতার খেলা টার্নিং পয়েন্টে খেলোয়াড়দের অন্যান্য খেলার উপাদানগুলির মধ্যে পতাকা টগল করতে হত। মোট নয়টি পতাকা ছিল: তিনটি নীচের পতাকা যা রোবট দ্বারা টগল করা যেত, এবং ছয়টি উঁচু পতাকা যা কেবল প্রতিযোগিতার বলের খেলার টুকরো দিয়ে আঘাত করে টগল করা যেত। প্রতিযোগী দলগুলিকে বল লঞ্চার ব্যবহার করে উঁচু পতাকায় আঘাত করার একটি উপায় খুঁজে বের করতে হবে। যদি আপনি কল্পনা করতে পারেন, বল খেলার টুকরো ব্যবহার করে পতাকা আঘাত করার জন্য রোবটটিকে প্রোগ্রামিং করা সবসময় সঠিক নাও হতে পারে। স্বায়ত্তশাসিত সময়ের মধ্যে যদি রোবটটি একটি ভুল মোড় নেয়, তাহলে গণনা বন্ধ হয়ে যাওয়ার কারণে কোনও পতাকাই আঘাত না করার সম্ভাবনা রয়েছে। একইভাবে, ড্রাইভিং স্কিলস চ্যালেঞ্জের ক্ষেত্রে, দলগুলির পক্ষে রোবটটিকে সঠিকভাবে বল লঞ্চ করার জন্য ম্যানুয়ালি লাইন আপ করা কঠিন হতে পারে। সুতরাং, দক্ষ দলগুলি পতাকা সনাক্ত করার জন্য ভিশন সেন্সর ব্যবহার করে রোবটটিকে প্রোগ্রাম করবে এবং তারপর সঠিক শট নেওয়ার জন্য রোবটটিকে সঠিকভাবে সারিবদ্ধ করবে।

আপনার শিক্ষার আইকন প্রসারিত করুন তোমার শেখার পরিধি বাড়াও

এই কার্যকলাপটি সম্প্রসারিত করার জন্য, আপনার শিক্ষার্থীদের এমন একটি প্রকল্প ডিজাইন এবং রূপরেখা তৈরি করতে বলুন যাতে রোবটটি সনাক্ত করা হলুদ বস্তুর দিকে এগিয়ে যাবে যা তারা এই প্রতিযোগিতামূলক খেলার জন্য সম্ভাব্যভাবে ব্যবহার করতে পারে!
আপনার শিক্ষার্থীদের নিম্নলিখিতগুলি করতে বলুন:

  • Clawbot (ড্রাইভট্রেন, 2-মোটর, কোন গাইরো নেই) উদাহরণ প্রকল্পটি খুলুন।

    টেমপ্লেট প্রজেক্ট আইকনের নীচে Clawbot Drivetrain, No Gyro লেখা আছে এবং উপরে একটি রোবটের ধূসর চিত্র রয়েছে, যা নির্দেশ করে যে কোন প্রজেক্টটি নির্বাচন করতে হবে।

     

  • ভিশন সেন্সর প্রোগ্রাম করার সময় ডিটেকিং অবজেক্টস (ভিশন) উদাহরণ প্রকল্পটি রেফারেন্স হিসেবে ব্যবহার করুন (গুগল ডক / .v5cpp)।
  • Clawbot (Drivetrain, 2-motor, No Gyro) কনফিগারেশনে ভিশন সেন্সর যোগ করুন এবং তারপর লাল এবং নীল বস্তু সনাক্ত করার জন্য ভিশন সেন্সর কনফিগার করুন। আরও তথ্যের জন্যএখানেক্লিক করুন।

    VEXcode V5 Devices উইন্ডোটি খোলা আছে এবং "Add a Device" নির্বাচন করলে বাম দিকে একটি লাল বাক্সে হাইলাইট করা ভিশন সেন্সরটি দেখাবে। অন্যান্য বিকল্পগুলির মধ্যে রয়েছে কন্ট্রোলার, ড্রাইভট্রেন, মোটর এবং 3টি তার।

  • সনাক্তকৃত বস্তুর দিকে যাওয়ার জন্য ক্লবটটিকে প্রোগ্রাম করুন। ক্লবটকে এমনভাবে প্রোগ্রাম করা যেতে পারে যেন এটি একটি পতাকা টগল করার জন্য তার হাত উঁচু করে!
  • ভিশন সেন্সর ভিআরসি টার্নিং পয়েন্ট গেমের হলুদ বলের মতো হলুদ বস্তু সনাক্ত করতে পারে কিনা তা পর্যবেক্ষণ করার জন্য প্রকল্পটি ডাউনলোড করে চালান (C++তে)। যদি ভিশন সেন্সর বস্তু সনাক্ত করতে পারে, তাহলে কি রোবটটি সেই সনাক্তকৃত বস্তুর উপর ভিত্তি করে চলাচল করবে? সাহায্যের জন্য, "প্রকল্প ডাউনলোড এবং চালান" টিউটোরিয়াল ভিডিওটি দেখুন।
  • যদি সময় থাকে, তাহলে টার্নিং পয়েন্ট মাঠের মতো একটি খেলার মাঠ তৈরি করুন। রোবটটিকে পয়েন্ট অর্জনের জন্য সরানোর অনুমতি দেওয়ার জন্য ভিশন সেন্সর ব্যবহার করে অনুশীলন করুন!

নীচের নমুনা সমাধানটি দেখুন:

// V5 লাইব্রেরি অন্তর্ভুক্ত করুন
#include "vex.h"
  
// নেমস্পেস ব্যবহার করে VEX লাইব্রেরি
এর সহজ ব্যবহারের অনুমতি দেয় vex;

ইভেন্ট চেকরেড = ইভেন্ট();
ইভেন্ট চেকব্লু = ইভেন্ট();

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(বিপরীত, ১০০, ডিগ্রি);
  }
  অন্য {
    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(ফরোয়ার্ড, ৯০, ডিগ্রি);
    ClawMotor.spinFor(ফরোয়ার্ড, ৯০, ডিগ্রি);
    Drivetrain.driveFor(ফরোয়ার্ড, ১২, ইঞ্চি);
    ArmMotor.spinFor(বিপরীত, ৯০, ডিগ্রি);
    ClawMotor.spinFor(বিপরীত, 90, ডিগ্রি);
  }
  else {
    Brain.Screen.print("কোন নীল বস্তু নেই")
  }
}

int main() {
  // রোবট কনফিগারেশন শুরু করা হচ্ছে। সরাবেন না!
  vexcodeInit();
  // ইভেন্ট হ্যান্ডলার নিবন্ধন করুন
  checkRed(hasRedCallback);
  checkBlue(hasBlueCallback);

  // নতুন সেন্সর ডেটা পরীক্ষা করার জন্য ক্রমাগত রান করে
  while (true) {
    checkRed.broadcastAndWait();
    checkBlue.broadcastAndWait();
    wait(0.2, seconds);
  }
}