মূল বিষয়বস্তুতে যান

GPS নেভিগেশন

হিরো বটকে মাঠের একটি নির্দিষ্ট অবস্থানে নিয়ে যাওয়ার জন্য একটি অ্যালগরিদম তৈরি করুন। লাল রঙে চিহ্নিত ট্রাইবলটি সংগ্রহ করতে, [Drive for] ও [Turn to heading] ব্লক, GPS সেন্সর, আর্ম মোটর এবং ইনটেক মোটর ব্যবহার করে হিরো বটটিকে (1380,-1380) স্থানাঙ্কে অবস্থিত অবস্থানে নিয়ে যান। এরপর রোবটটিকে (600,-300) স্থানাঙ্কে নিয়ে যান এবং রেড অ্যালায়েন্স গোলে ট্রাইবলটি স্কোর করুন।

  • VRC ভার্চুয়াল স্কিলস - ওভার আন্ডার প্লেগ্রাউন্ড নির্বাচন করুন।
  • রোবটের জন্য প্রারম্ভিক অবস্থান “H”, Sপ্রারম্ভিক দিক “উত্তর”, এবং রোবট প্রিলোড “না” নির্বাচন করতে প্রি-ম্যাচ চেকলিস্টটি ব্যবহার করুন।
  • রোবটটিকে একটি নির্দিষ্ট অবস্থানে চালনা করার জন্য একটি অ্যালগরিদম তৈরি করুন।
  • মাঠ থেকে একটি ট্রাইবল তোলার জন্য রোবটটিকে এমনভাবে কোড করতে হবে, যাতে এটি আর্ম মোটর ঘুরিয়ে আর্মটিকে পুরোপুরি নিচে নামাতে পারে।
  • অ্যালগরিদম ব্যবহার করে রোবটটিকে (1380, -1380) স্থানাঙ্কে নিয়ে যান এবং রোবটটিকে 135 ডিগ্রি দিকে ঘোরান।
  • লাল রঙে চিহ্নিত সবুজ ট্রাইবলটি তুলে নেওয়ার জন্য রোবটটিকে ইনটেক মোটরটি ঘোরানোর কোড দিন।
  • অ্যালগরিদম ব্যবহার করে রোবটটিকে (600, -300) স্থানাঙ্কে নিয়ে যান এবং রোবটটিকে 90 ডিগ্রি দিকে ঘোরান।
  • ট্রাইবলটিকে রেড অ্যালায়েন্সের গোলের দিকে উৎক্ষেপণ করার জন্য রোবটটিকে ইনটেক মোটর ঘোরানোর কোড দিন 

সহায়ক ইঙ্গিত

  • মাঠে থাকা হিরো বটের এক্স এবং ওয়াই স্থানাঙ্ক শনাক্ত করতে জিপিএস সেন্সরটি ব্যবহার করুন। ভিআরসি ওভার আন্ডার প্লেগ্রাউন্ডে জিপিএস সেন্সর ব্যবহার সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে এখানে ক্লিক করুন।
  • জিপিএস সেন্সর থেকে অবস্থানগত মান পেতে সেন্সিং ক্যাটাগরির রিপোর্টার ব্লকগুলো ব্যবহার করুন।

    VEXcode GPS পজিশন ব্লক যা 'GPS পজিশন X (মিমি-তে)' রিড করে।

    VEXcode GPS পজিশন ব্লক যা 'GPS পজিশন Y (মিমি-তে)' রিড করে।

    • পাইথন কমান্ডের মিল:

      জিপিএস.এক্স_অবস্থান(মিমি)
      জিপিএস.ওয়াই_অবস্থান(মিমি)
  • হিরো বটের আসল X এবং Y স্থানাঙ্ক সংরক্ষণ করার জন্য দুটি ভেরিয়েবল ঘোষণা করতে ভেরিয়েবলস ক্যাটাগরির সেট ব্লকগুলো ব্যবহার করুন।

    VEXcode সেট ভেরিয়েবল ব্লকের স্ট্যাক। প্রথম ব্লকটি 'সেট X1 কে GPS অবস্থান X (মিমি-তে' হিসেবে পড়ে। দ্বিতীয় ব্লকটি 'সেট Y1 কে GPS অবস্থান Y (মিমি-তে' হিসেবে পড়ে।

    • পাইথন কমান্ডের মিল:

      X1 = জিপিএস.x_অবস্থান(মিমি)
      Y1 = জিপিএস.y_অবস্থান(মিমি)
  • প্রজেক্টে ভেরিয়েবল ডিক্লেয়ার করা এবং ডেটা স্টোর করার বিষয়ে সাহায্যের জন্য, অনুগ্রহ করে VEXcode VR -এ “TUTORIALS” বাটনটি সিলেক্ট করুন এবং Storing Data টিউটোরিয়ালটি বেছে নিন।

    VEXcode VR টুলবার থেকে টিউটোরিয়াল আইকন।

    VEXcode VR ডেটা সংরক্ষণ টিউটোরিয়াল আইকন।

  • VEXcode VR-এ ভেরিয়েবলের নামকরণের নিয়মাবলী সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ এই নিবন্ধটি দেখুন
  • রোবটের স্থানাঙ্ক (x1,y1), লক্ষ্যস্থানের স্থানাঙ্ক (x2,y2) এবং atan ফাংশন ব্যবহার করে ড্রাইভ হেডিং নির্ণয় করুন।
    • এই দুটি বিন্দুকে সংযোগকারী রেখার কোণ θ নির্ণয় করুন।

      দুটি গাণিতিক রাশির চিত্র। প্রথম রাশিটি হলো 'θ সমান atan((y2 - y1) / (x2 - x1))'। দ্বিতীয় রাশিটি হলো: '- পাই/২, থিটার চেয়ে ছোট, যা আবার পাই/' এর চেয়ে ছোট।

      উপর থেকে নিচের গাণিতিক ডায়াগ্রামটি দেখাচ্ছে যে রোবটটি (X1, Y1) স্থানাঙ্কে রয়েছে এবং একটি রেখা (X2, Y2) স্থানাঙ্কের দিকে নির্দেশ করছে। দূরত্বকে d চলক দ্বারা এবং কোণকে θ চলক দ্বারা চিহ্নিত করা হয়। বিন্দু দুটির মধ্যবর্তী আনুভূমিক দূরত্বকে 'x2 - x1'এবং উল্লম্ব দূরত্বকে '= y2 - y1' দ্বারা প্রকাশ করা হয়।

    • কোণ থিটা (θ)-কে ড্রাইভ হেডিং-এ রূপান্তর করুন।

      গাণিতিক রাশি এর জন্য উদাহরণ (শুরুর দিক: উত্তর):

      যদি X1, X2-এর সমান হয়:
      	যদি Y2 > Y1 হয়:
      		হেডিং = 0
      	অন্যথায়:
      		হেডিং = 180
      অন্যথায়:
      	যদি X2 > X1 হয়:
      		হেডিং = 90 - atan((Y2 - Y1) / (X2 - X1))
      	অন্যথায়:
      		হেডিং = 270 - atan((Y2 - Y1) / (X2 - X1))
    • উপর থেকে নিচের দিকে আঁকা ডায়াগ্রামটিতে রোবটটিকে একটি বৃত্তের মধ্যে দেখানো হয়েছে, যেটিতে'থেকে ৩৬০ ডিগ্রি পর্যন্ত লেবেল দিয়ে বৃত্তটিকে চিহ্নিত করা হয়েছে।
  • অপারেটরস ক্যাটাগরি থেকে ফাংশন ব্লক ব্যবহার করুন এবং atan ফাংশন নির্বাচন করে থিটা (θ) কোণটি গণনা করুন।

    একটি খালি VEXcode ফাংশন ব্লক যা 'atan of blank' পড়ে।

    • পাইথন কমান্ডের মিল:

      math.atan( ) / math.pi * 180
  • রোবটের স্থানাঙ্ক (x1,y1), লক্ষ্যস্থানের স্থানাঙ্ক (x2,y2) এবং পিথাগোরাসের উপপাদ্য ব্যবহার করে গমনের দূরত্ব নির্ণয় করুন।

    গাণিতিক রাশিটি হলো 'd = sqrt((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2)'

    আগের মতোই উপর থেকে নিচের দিকে দেখানো ডায়াগ্রাম, যা দুটি স্থানাঙ্কের মধ্যে পার্থক্য প্রদর্শন করছে। রোবটটি (X1, Y1) স্থানাঙ্কে রয়েছে এবং একটি রেখা (X2, Y2) স্থানাঙ্কের দিকে নির্দেশ করছে। দূরত্বকে d চলক দ্বারা এবং কোণকে θ চলক দ্বারা চিহ্নিত করা হয়। বিন্দু দুটির মধ্যবর্তী আনুভূমিক দূরত্বকে 'x2 - x1'এবং উল্লম্ব দূরত্বকে '= y2 - y1' দ্বারা প্রকাশ করা হয়।

  • ড্রাইভ দূরত্ব গণনা করতে অপারেটরস ক্যাটাগরি থেকে ফাংশন ব্লকটি ব্যবহার করুন এবং sqrt ফাংশনটি নির্বাচন করুন।

    একটি খালি VEXcode ফাংশন ব্লক যা ফাঁকা' এর 'বর্গমূল পড়ে।

    • পাইথন কমান্ডের মিল:

      math.sqrt( )