নিশ্চিত করুন যে আপনার AI ভিশন সেন্সরের সাথে কালার সিগনেচার এবং কালার কোড কনফিগার করা আছে যাতে সেগুলি আপনার ব্লকের সাথে ব্যবহার করা যায়। এগুলি কীভাবে কনফিগার করবেন সে সম্পর্কে আরও জানতে, আপনি নীচের নিবন্ধগুলি পড়তে পারেন:

এআই ভিশন সেন্সর এআই ক্লাসিফিকেশন এবং এপ্রিলট্যাগও সনাক্ত করতে পারে। এই সনাক্তকরণ মোডগুলি কীভাবে সক্ষম করবেন তা জানতে, এখানে যান:

এই পৃথক কমান্ডগুলি সম্পর্কে আরও বিস্তারিত জানতে এবং VEXcode-এ কীভাবে সেগুলি ব্যবহার করবেন তা জানতে, API সাইটে যান।


এআই ভিশন সেন্সর দিয়ে ভিজ্যুয়াল ডেটা সংগ্রহ করুন

প্রতিটি AI Vision Sensor কমান্ড কনফিগার করা AI Vision Sensor এর নাম দিয়ে শুরু হবে। এই প্রবন্ধের সকল উদাহরণের জন্য, ব্যবহৃত AI ভিশন সেন্সরের নাম হবে AIVision

স্ন্যাপশট নিন

takeSnapshot পদ্ধতিটি AI ভিশন সেন্সর বর্তমানে যা দেখছে তার একটি ছবি তোলে এবং সেই স্ন্যাপশট থেকে ডেটা সংগ্রহ করে যা পরে একটি প্রকল্পে ব্যবহার করা যেতে পারে। যখন একটি স্ন্যাপশট নেওয়া হয়, তখন আপনাকে নির্দিষ্ট করতে হবে যে AI ভিশন সেন্সর কোন ধরণের বস্তুর তথ্য সংগ্রহ করবে:

  • Aরঙের স্বাক্ষর অথবারঙের কোড
    • এই ভিজ্যুয়াল স্বাক্ষরগুলি AI ভিশন সেন্সরের নাম, ডাবল আন্ডারস্কোর এবং তারপর ভিজ্যুয়াল স্বাক্ষরের নাম দিয়ে শুরু হয়, উদাহরণস্বরূপ: AIVision1__Blue
  • এআই শ্রেণীবিভাগ - এভিশন::ALL_AIOBJS
  • এপ্রিলট্যাগ- বিমানচালনা::ALL_TAGS

একটি স্ন্যাপশট নিলে আপনার নির্দিষ্ট করা সমস্ত সনাক্ত করা বস্তুর একটি অ্যারে তৈরি হবে। উদাহরণস্বরূপ, যদি আপনি একটি "নীল" রঙের স্বাক্ষরসনাক্ত করতে চান, এবং AI ভিশন সেন্সর 3টি ভিন্ন নীল বস্তু সনাক্ত করে, তাহলে তিনটিরই ডেটা অ্যারেতে রাখা হবে।

এই উদাহরণে, AIVision1নামক AI ভিশন সেন্সর থেকে "নীল" রঙের স্বাক্ষরএর একটি স্ন্যাপশট নেওয়া হয়েছে। এটি অ্যারেতে সনাক্ত করা বস্তুর সংখ্যা প্রদর্শন করে এবং প্রতি 0.5 সেকেন্ডে একটি নতুন স্ন্যাপশট ক্যাপচার করে।

while (true) {
// সমস্ত নীল রঙের বস্তুর একটি স্ন্যাপশট পান।
AIVision.takeSnapshot(AIVision1__Blue);

// ডেটা টানার আগে স্ন্যাপশটে কোনও বস্তু সনাক্ত করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
যদি (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, msec);
}

বস্তু

স্ন্যাপশটের প্রতিটি বস্তুর আলাদা আলাদা বৈশিষ্ট্য রয়েছে যা সেই বস্তু সম্পর্কে তথ্য রিপোর্ট করতে ব্যবহার করা যেতে পারে। অবজেক্টস পদ্ধতি আপনাকে এই বৈশিষ্ট্যগুলি অ্যাক্সেস করতে দেয়।

উপলব্ধ সম্পত্তিগুলি নিম্নরূপ:

  • আইডি
  • সেন্টারএক্স এবং সেন্টারওয়াই
  • অরিজিনএক্স এবং অরিজিনওয়াই
  • প্রস্থ
  • উচ্চতা
  • কোণ
  • বিদ্যমান
  • স্কোর

কোনও বস্তুর সম্পত্তি অ্যাক্সেস করতে, AI ভিশন সেন্সরের নাম ব্যবহার করুন, তারপরে অবজেক্ট পদ্ধতি এবং তারপরে অবজেক্টের সূচক ব্যবহার করুন।

অবজেক্ট ইনডেক্সটি নির্দেশ করে যে আপনি কোন নির্দিষ্ট অবজেক্টের সম্পত্তি পুনরুদ্ধার করতে চান। স্ন্যাপশট নেওয়ার পর, এআই ভিশন সেন্সর স্বয়ংক্রিয়ভাবে আকার অনুসারে বস্তু বাছাই করে। সবচেয়ে বড় বস্তুটিকে সূচক ০ দেওয়া হয়, যেখানে ছোট বস্তুগুলিকে উচ্চতর সূচক সংখ্যা দেওয়া হয়।

উদাহরণস্বরূপ, বৃহত্তম বস্তুর প্রস্থকে কল করলে AIVision1.objects[0].widthহবে।

আইডি

id সম্পত্তিটি শুধুমাত্র এপ্রিল ট্যাগ এবং AI শ্রেণীবিভাগের জন্য উপলব্ধ।

তিনটি বর্গাকার শনাক্তকরণ মার্কার যাদের আইডি ০, ৯ এবং ৩ লেবেল করা আছে, প্রতিটিতে সাদা টেক্সটে সংশ্লিষ্ট স্থানাঙ্ক এবং আকার পরিমাপ প্রদর্শিত আছে। আইডি ০ বাম দিকে, আইডি ৯ ডানদিকে এবং আইডি ৩ নীচের কেন্দ্রে রয়েছে। প্রতিটি মার্কারের একটি বর্গক্ষেত্রের ভিতরে একটি অনন্য কালো-সাদা প্যাটার্ন রয়েছে।

একটিAprilTagএর জন্য, id বৈশিষ্ট্যটি সনাক্ত করাAprilTag(গুলি) আইডি নম্বরটি উপস্থাপন করে।

নির্দিষ্ট এপ্রিলট্যাগ সনাক্ত করলে নির্বাচনী নেভিগেশনের সুযোগ তৈরি হয়। আপনি আপনার রোবটকে নির্দিষ্ট ট্যাগের দিকে এগিয়ে যাওয়ার জন্য প্রোগ্রাম করতে পারেন, অন্যগুলিকে উপেক্ষা করে, কার্যকরভাবে স্বয়ংক্রিয় নেভিগেশনের জন্য সাইনপোস্ট হিসাবে ব্যবহার করতে পারেন।

ছবিতে দুটি বল এবং দুটি রিং চিহ্নিত করা হয়েছে, যার লেবেলগুলি তাদের অবস্থান, আকার এবং স্কোর নির্দেশ করে। লাল বলটি বাম দিকে, নীল বলটি ডান দিকে, সবুজ বলটি নীচে বাম দিকে এবং লাল বলটি নীচে ডানদিকে। প্রতিটি বস্তুর রূপরেখা একটি সাদা বাক্স দিয়ে তৈরি করা হয়েছে, এবং X, Y স্থানাঙ্ক, প্রস্থ, উচ্চতা এবং 99% স্কোরের মতো বিবরণ সাদা টেক্সটে প্রদর্শিত হয়েছে।

AI শ্রেণীবিভাগএর জন্য, id বৈশিষ্ট্যটি সনাক্ত করা নির্দিষ্ট ধরণের AI শ্রেণীবিভাগকে প্রতিনিধিত্ব করে।

নির্দিষ্ট এআই শ্রেণীবিভাগসনাক্তকরণ রোবটকে শুধুমাত্র নির্দিষ্ট বস্তুর উপর ফোকাস করতে দেয়, যেমন শুধুমাত্র একটি লাল বাকিবলের দিকে নেভিগেট করতে চাওয়া, নীল রঙের দিকে নয়।

এপ্রিলট্যাগ এবং এআই ক্লাসিফিকেশন এবং এআই ভিশন ইউটিলিটিতে কীভাবে তাদের সনাক্তকরণ সক্ষম করবেন সে সম্পর্কে আরও তথ্যের জন্য এই নিবন্ধগুলি দেখুন।

কেন্দ্রX এবং কেন্দ্রY

এটি পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর কেন্দ্র স্থানাঙ্ক।

একটি নীল বাকিবলকে কম্পিউটার ভিশন সিস্টেম দ্বারা ট্র্যাক করা হচ্ছে। বস্তুটি একটি সাদা বর্গক্ষেত্র দিয়ে রূপরেখাযুক্ত, এবং রূপরেখার ভিতরে একটি ছোট লাল বর্গক্ষেত্র রয়েছে যা একটি কেন্দ্রীভূত সাদা ক্রসকে ঘিরে রয়েছে। ছবির উপরের বাম কোণে, একটি লেবেল নির্দেশ করে যে বস্তুটি নীল, স্থানাঙ্ক X:176, Y:117, এবং মাত্রা W:80, H:78 সহ।

CenterX এবং CenterY স্থানাঙ্কগুলি নেভিগেশন এবং অবস্থান নির্ধারণে সহায়তা করে। এআই ভিশন সেন্সরটির রেজোলিউশন ৩২০ x ২৪০ পিক্সেল।

একটি দৃষ্টি ব্যবস্থা দ্বারা ট্র্যাক করা দুটি নীল ঘন বস্তু। উপরের বস্তুটি স্থানাঙ্ক X:215, Y:70, এবং মাত্রা W:73, H:84 দিয়ে লেবেল করা হয়েছে, একটি সাদা রূপরেখা এবং একটি কেন্দ্রীভূত সাদা ক্রস সহ। নিচের বস্তুটি স্থানাঙ্ক X:188, Y:184, এবং মাত্রা W:144, H:113 দিয়ে লেবেল করা হয়েছে, এবং সাদা রঙে একটি কেন্দ্রীভূত সাদা ক্রস দিয়েও রূপরেখা দেওয়া হয়েছে।

আপনি দেখতে পাচ্ছেন যে AI ভিশন সেন্সরের কাছাকাছি থাকা কোনও বস্তুর CenterY স্থানাঙ্ক দূরবর্তী কোনও বস্তুর তুলনায় কম থাকবে।

এই উদাহরণে, যেহেতু AI ভিশন সেন্সরের ভিউয়ের কেন্দ্র (160, 120), রোবটটি ডানদিকে ঘুরবে যতক্ষণ না সনাক্ত করা বস্তুর সেন্টারএক্স স্থানাঙ্ক 150 পিক্সেলের বেশি কিন্তু 170 পিক্সেলের কম হয়।

while (true) {
  // সমস্ত নীল রঙের বস্তুর একটি স্ন্যাপশট পান।
  AIVision.takeSnapshot(AIVision__Blue);

  // ডেটা টানার আগে স্ন্যাপশটে কোনও বস্তু সনাক্ত হয়েছে কিনা তা পরীক্ষা করে দেখুন।
  যদি (AIVision.objectCount > 0) {

    যদি (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
      Drivetrain.turn(right);
    } অন্যথায় {
      Drivetrain.stop();
    }
  }
  অপেক্ষা (5, msec);
}

অরিজিনX এবং অরিজিন

OriginX এবং OriginY হল পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর উপরের-বাম কোণে স্থানাঙ্ক।

একটি নীল বাকিবলকে একটি ভিশন সিস্টেম দ্বারা ট্র্যাক করা হচ্ছে। বস্তুটিকে ঘিরে একটি সাদা রূপরেখা রয়েছে, রূপরেখার ভিতরে একটি কেন্দ্রীভূত সাদা ক্রস রয়েছে। উপরের বাম দিকের লেবেলে বস্তুর রঙ নীল হিসেবে নির্দেশ করা হয়েছে, সাথে স্থানাঙ্ক X:176, Y:117, এবং মাত্রা W:80, H:78। একটি ছোট লাল বর্গক্ষেত্র বস্তুর উপরের-বাম কোণটি হাইলাইট করে।

OriginX এবং OriginY স্থানাঙ্ক নেভিগেশন এবং অবস্থান নির্ধারণে সহায়তা করে। এই স্থানাঙ্কটিকে বস্তুর প্রস্থ এবং উচ্চতার সাথে একত্রিত করে, আপনি বস্তুর বাউন্ডিং বাক্সের আকার নির্ধারণ করতে পারেন। এটি চলমান বস্তুগুলি ট্র্যাক করতে বা বস্তুগুলির মধ্যে নেভিগেট করতে সাহায্য করতে পারে।

প্রস্থ এবং উচ্চতা

এটি পিক্সেলের মাধ্যমে সনাক্ত করা বস্তুর প্রস্থ বা উচ্চতা।

ছবিতে একটি নীল বাকিবল দেখানো হয়েছে যার একটি সাদা বর্গাকার রূপরেখা এটিকে ট্র্যাক করছে। উপরের বাম কোণে একটি লেবেল রয়েছে যা নির্দেশ করে যে এটি একটি নীল বস্তু, স্থানাঙ্ক X:176, Y:117, এবং মাত্রা W:80, H:78 সহ। লাল তীরচিহ্নগুলি বস্তুর প্রস্থ এবং উচ্চতা তুলে ধরে।

প্রস্থ এবং উচ্চতা পরিমাপ বিভিন্ন বস্তু সনাক্ত করতে সাহায্য করে। উদাহরণস্বরূপ, একটি বাকিবলের উচ্চতা একটি রিংয়ের চেয়ে বেশি হবে।

দুটি নীল ঘন বস্তু একটি ভিজ্যুয়াল রিকগনিশন সিস্টেম দ্বারা ট্র্যাক করা হচ্ছে। উপরের ঘনকটির একটি সাদা রূপরেখা রয়েছে যার সাথে একটি লেবেল রয়েছে যা এর অবস্থান X:215, Y:70 এবং মাত্রা W:73, H:84 নির্দেশ করে। নিচের ঘনকটিতে একই রকম সাদা রূপরেখা রয়েছে যার লেবেলে X:188, Y:184 এবং মাত্রা W:144, H:113 প্রদর্শিত রয়েছে। প্রতিটি ঘনক্ষেত্রে একটি কেন্দ্রীভূত সাদা ক্রস থাকে, যা সম্ভবত ট্র্যাকিংয়ের কেন্দ্রবিন্দু নির্দেশ করে। লেবেলগুলি প্রতিটি বস্তুর পরিমাপ এবং ট্র্যাকিং ডেটা হাইলাইট করে।

প্রস্থ এবং উচ্চতা এআই ভিশন সেন্সর থেকে কোনও বস্তুর দূরত্বও নির্দেশ করে। ছোট পরিমাপ সাধারণত বোঝায় যে বস্তুটি আরও দূরে, যখন বড় পরিমাপ ইঙ্গিত দেয় যে এটি আরও কাছে।

এই উদাহরণে, বস্তুর প্রস্থ নেভিগেশনের জন্য ব্যবহৃত হয়েছে। রোবটটি বস্তুটির কাছে যাবে যতক্ষণ না প্রস্থ একটি নির্দিষ্ট আকারে পৌঁছায় এবং থামে।

while (true) {
  // সমস্ত নীল বস্তুর একটি স্ন্যাপশট পান।
  AIVision.takeSnapshot(AIVision1__Blue);

  // ডেটা টানার আগে স্ন্যাপশটে কোনও বস্তু সনাক্ত হয়েছে কিনা তা পরীক্ষা করে দেখুন।
  যদি (AIVision.objectCount > 0) {

    যদি (AIVision.objects[0].width < 250.0) {
      Drivetrain.drive(forward);
    } অন্যথায় {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

কোণ

লাল এবং সবুজ ব্লক দেখানো একটি ঘূর্ণায়মান জিআইএফ। যখন ব্লকগুলি লাল থেকে সবুজ পর্যন্ত পুরোপুরি অনুভূমিকভাবে স্থাপন করা হয়, তখন সেগুলিকে 0 ডিগ্রি দেখানো হয়। যদি লাল ব্লকটি সবুজ ব্লকের উপরে উল্লম্বভাবে থাকে, তাহলে এটি 90 ডিগ্রিতে। যদি ব্লকগুলি অনুভূমিকভাবে সবুজ থেকে লাল হয়, তাহলে এটি 180 ডিগ্রি। যদি সবুজ ব্লকটি লাল ব্লকের উপরে উল্লম্বভাবে থাকে, তাহলে এটি 20 ডিগ্রি।

কোণ বৈশিষ্ট্যটি শুধুমাত্ররঙ কোড এবংএপ্রিলট্যাগএর জন্য উপলব্ধ।

এটি সনাক্ত করা রঙের কোডঅথবা এপ্রিলট্যাগ ভিন্নভাবে পরিচালিত কিনা তা নির্দেশ করে।

দুটি কিউবের একটি স্তূপ, উপরে একটি সবুজ এবং নীচে একটি নীল, একটি দৃষ্টি ব্যবস্থা দ্বারা ট্র্যাক করা হচ্ছে। উভয় কিউবকে ঘিরে একটি সাদা রূপরেখা রয়েছে, সবুজ কিউবকে কেন্দ্র করে একটি সাদা ক্রস রয়েছে। ছবির নীচের লেবেলে সবুজ_নীল A:87° দেখানো হয়েছে, যা সনাক্ত করা রঙ এবং কোণ পরিমাপ নির্দেশ করে। এর নিচে, স্থানাঙ্কগুলি X:117, Y:186 হিসাবে সাজানো হয়েছে, যার মাত্রা W:137, H:172, যা ফ্রেমে স্তুপীকৃত কিউবগুলির অবস্থান এবং আকারকে প্রতিনিধিত্ব করে।

আপনি দেখতে পাবেন যে রোবটটিকালার কোড অথবাএপ্রিলট্যাগ এর সাথে ভিন্নভাবে পরিচালিত কিনা এবং সেই অনুযায়ী নেভিগেশনের সিদ্ধান্ত নিতে পারবেন।

দুটি কিউব, একটি সবুজ এবং একটি নীল, পাশাপাশি স্থাপন করা হয়েছে এবং একটি দৃষ্টি ব্যবস্থা দ্বারা ট্র্যাক করা হয়েছে। উভয় ঘনককে ঘিরে একটি সাদা রূপরেখা রয়েছে যার কেন্দ্রে একটি সাদা ক্রস রয়েছে। উপরের বাম দিকের লেবেলটি সবুজ_নীল A:0° নির্দেশ করে, যা সনাক্ত করা রঙ এবং একটি কোণ পরিমাপের উল্লেখ করে। এর নিচে, স্থানাঙ্কগুলি X:150, Y:102 হিসাবে দেখানো হয়েছে, যার মাত্রা W:179, H:109, যা ফ্রেমের মধ্যে কিউবগুলির অবস্থান এবং আকারকে প্রতিনিধিত্ব করে।

উদাহরণস্বরূপ, যদি একটিরঙের কোড সঠিক কোণে সনাক্ত না করা হয়, তাহলে এটি যে বস্তুটি উপস্থাপন করে তা রোবট দ্বারা সঠিকভাবে তোলা সম্ভব নাও হতে পারে।

স্কোর

AI ভিশন সেন্সর দিয়েAI ক্লাসিফিকেশন সনাক্ত করার সময় স্কোর বৈশিষ্ট্যটি ব্যবহার করা হয়।

ছবিতে দেখা যাচ্ছে যে চারটি বস্তু একটি দৃষ্টি ব্যবস্থা দ্বারা ট্র্যাক করা হচ্ছে: দুটি বল এবং দুটি রিং। লাল বলটিতে স্থানাঙ্ক X:122, Y:84, W:67, H:66 এবং 99% স্কোর লেবেল করা আছে। নীল বলের স্কোর ৯৯% সহ X:২২৮, Y:৮৬, W:৭০, H:৬৮। সবুজ বলয়টিতে স্থানাঙ্ক X:109, Y:186, W:98, H:92 এবং স্কোর 99%। লাল রিংটিতে X:259, Y:187, W:89, H:91 লেবেল রয়েছে, যার স্কোর 99%। প্রতিটি বস্তু সাদা রঙে বর্ণিত, যা ট্র্যাকিংয়ের নির্ভুলতা নির্দেশ করে।

আত্মবিশ্বাসের স্কোর নির্দেশ করে যে এআই ভিশন সেন্সর তার সনাক্তকরণের বিষয়ে কতটা নিশ্চিত। এই ছবিতে, এই চারটি বস্তুর AI শ্রেণীবিভাগ সনাক্ত করার ক্ষেত্রে এটি ৯৯% আত্মবিশ্বাসী। আপনার রোবটটি শুধুমাত্র অত্যন্ত আত্মবিশ্বাসী সনাক্তকরণের উপর ফোকাস করে তা নিশ্চিত করতে আপনি এই স্কোরটি ব্যবহার করতে পারেন।

বিদ্যমান

শেষ তোলা স্ন্যাপশটে একটি নির্দিষ্ট ভিজ্যুয়াল সিগনেচার সনাক্ত করা হয়েছে কিনা তা সনাক্ত করতে exists প্রপার্টি ব্যবহার করা হয়।

এটি আপনাকে পূর্ববর্তী স্ন্যাপশটে কোনও সনাক্ত করা বস্তু সনাক্ত করা হয়েছে কিনা তা পরীক্ষা করতে দেয়। যখন কোন বস্তু বিদ্যমান থাকে তখন এই বৈশিষ্ট্যটি True এবং যখন কোন বস্তু বিদ্যমান থাকে না তখন False প্রদান করবে।


অবজেক্টকাউন্ট

objectCount পদ্ধতিটি শেষ স্ন্যাপশটে সনাক্ত করা বস্তুর পরিমাণ ফেরত দেয়।

এআই ভিশন ইউটিলিটি ইন্টারফেসের বাম দিকে দুটি নীল কিউব সনাক্ত করা হয়েছে, প্রতিটিতে তাদের X এবং Y স্থানাঙ্ক এবং মাত্রা চিহ্নিত করা হয়েছে। সিস্টেমটি সংযুক্ত আছে, এবং এপ্রিলট্যাগগুলি টগল করা আছে, যখন এআই ক্লাসিফিকেশন বন্ধ আছে। ডানদিকে, নীল রঙের সেটিংস যথাক্রমে 22 এবং 0.34 এ সেট করা সামঞ্জস্যযোগ্য রঙ এবং স্যাচুরেশন রেঞ্জ সহ প্রদর্শিত হয়। রঙ যোগ বা সেট করার এবং ভিডিও ফ্রিজ করার একটি বিকল্প রয়েছে। ফার্মওয়্যারটি আপ টু ডেট, ১.০.০.বি১৬ সংস্করণে চলছে এবং নীচে একটি বন্ধ করার বোতাম রয়েছে।

এই উদাহরণে,রঙের স্বাক্ষর "নীল" দিয়ে দুটি বস্তু সনাক্ত করা হয়েছে। takeSnapshot পদ্ধতি ব্যবহার করা হলে উভয়কেই অ্যারেতে রাখা হবে।

এই কোড স্নিপেটটি ক্রমাগত EXP ব্রেইনকে সনাক্ত করা বস্তুর সংখ্যা আপডেট করে। প্রদত্ত উদাহরণের উপর ভিত্তি করে, এটি বারবার মান 2 পাঠাবে, যা নির্দেশ করবে যে দুটি বস্তু সনাক্ত করা হয়েছে।

while (true) {
// সমস্ত নীল বস্তুর একটি স্ন্যাপশট পান।
AIVision.takeSnapshot(AIVision__Blue);

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);

// ডেটা টানার আগে স্ন্যাপশটে কোনও বস্তু সনাক্ত করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
যদি (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
অপেক্ষা করুন(5, msec);
}

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: