এআই ভিশন সেন্সর#

ভূমিকা#

aivision ক্লাসটি EXP AI ভিশন সেন্সর থেকে ডেটা নিয়ন্ত্রণ ও অ্যাক্সেস করতে ব্যবহৃত হয়। AI ভিশন সেন্সরটি শনাক্ত করতে পারে:

  • এআই শ্রেণিবিন্যাস (যেমন গেম অবজেক্ট)

  • এপ্রিলট্যাগ আইডি

  • কাস্টম রঙের স্বাক্ষর

  • কাস্টম রঙের কোড

এটি বস্তুর তথ্য প্রদান করে, যার মধ্যে রয়েছে অবস্থান, আকার, অভিমুখ, শ্রেণিবিন্যাস আইডি এবং কনফিডেন্স স্কোর।

সেন্সরটি VEXcode-এর মধ্যে থাকা AI ভিশন ইউটিলিটি-তে নির্বাচিত একটি অনবোর্ড AI মডেল ব্যবহার করে ভিজ্যুয়াল তথ্য প্রক্রিয়া করে। নির্বাচিত মডেলটি নির্ধারণ করে যে সেন্সরটি কোন AI ক্লাসিফিকেশনগুলি সনাক্ত করতে পারবে। VS Code ব্যবহার করার সময়, আপনার প্রোগ্রামে ব্যবহার করার আগে AI মডেলটিকে প্রথমে VEXcode-এ কনফিগার করতে হবে। takeSnapshot কল করার পরে সনাক্ত করা অবজেক্টগুলি objects অ্যারের মাধ্যমে ফেরত দেওয়া হয়।

ক্লাস কনস্ট্রাক্টর#

aivision(
  int32_t index,
  Args&... sigs );

প্যারামিটার#

প্যারামিটার

প্রকার

বর্ণনা

index

int32_t

যে স্মার্ট পোর্টের সাথে এআই ভিশন সেন্সরটি সংযুক্ত থাকে, তা PORTxহিসেবে লেখা হয়, যেখানে x হলো পোর্ট নম্বর (উদাহরণস্বরূপ, PORT1)।

sigs

colordesc, codedesc, or AI constants

সেন্সরের সাথে নিবন্ধন করার জন্য এক বা একাধিক সনাক্তকরণের ধরণ:

  • aivision::ALL_AIOBJS — সমস্ত এআই শ্রেণীবিভাগ
  • aivision::ALL_TAGS — সমস্ত এপ্রিলট্যাগ আইডি
  • aivision::colordesc — কাস্টম রঙের স্বাক্ষর
  • aivision::codedesc — কাস্টম রঙের কোড

এআই মডেল এবং শ্রেণিবিন্যাস#

এআই ভিশন সেন্সর নির্দিষ্ট এআই ক্লাসিফিকেশন ব্যবহার করে বিভিন্ন বস্তু শনাক্ত করতে পারে। ডিভাইসেস উইন্ডোতে এআই ভিশন সেন্সর কনফিগার করার সময় নির্বাচিত এআই ক্লাসিফিকেশন মডেলের উপর নির্ভর করে বিভিন্ন বস্তু শনাক্ত করা যেতে পারে। বর্তমানে উপলব্ধ মডেলগুলো হলো:

শ্রেণীকক্ষের উপাদানসমূহ

আইডি নম্বর

এআই শ্রেণিবিন্যাস

০

blueBall

১

greenBall

২

redBall

৩

blueRing

৪

greenRing

৫

redRing

৬

blueCube

৭

greenCube

৮

redCube

VEX V5 রোবোটিক্স প্রতিযোগিতা: উচ্চ ঝুঁকি

আইডি নম্বর

এআই শ্রেণিবিন্যাস

০

mobileGoal

১

redRing

২

blueRing

VEX V5 রোবোটিক্স প্রতিযোগিতা পিছিয়ে দেওয়া হলো

আইডি নম্বর

এআই শ্রেণিবিন্যাস

০

blueBlock

১

redBlock

VEX V5 রোবোটিক্স প্রতিযোগিতা ওভাররাইড

আইডি নম্বর

এআই শ্রেণিবিন্যাস

০

redBluePin

১

blueYellowPin

২

redYellowPin

৩

yellowPin

৪

cup

উদাহরণ#

// Create Color Signatures
aivision::colordesc AIVision1__greenBox(
    1,      // index
    85,     // red
    149,    // green
    46,     // blue
    23,     // hangle
    0.23 ); // hdsat

aivision::colordesc AIVision1__blueBox(
    2,      // index
    77,     // red
    135,    // green
    125,    // blue
    27,     // hangle
    0.29 ); // hdsat

// Create a Color Code from two color signatures
aivision::codedesc AIVision1__greenBlue(
    1,                    // code index
    AIVision1__greenBox,  // first color signature
    AIVision1__blueBox ); // second color signature

// Create the AI Vision Sensor instance
aivision AIVision1(
    PORT11,                  // Smart Port
    AIVision1__greenBlue,    // color code
    aivision::ALL_AIOBJS );  // enable AI Classifications

সদস্যদের কার্যাবলী#

aivision ক্লাসে নিম্নলিখিত সদস্য ফাংশনগুলো অন্তর্ভুক্ত রয়েছে:

  • takeSnapshot — একটি নির্দিষ্ট কালার সিগনেচার, কালার কোড, এআই ক্লাসিফিকেশন গ্রুপ, অথবা এপ্রিলট্যাগ আইডি গ্রুপের জন্য ডেটা ক্যাপচার করে।

  • installed — AI ভিশন সেন্সরটি EXP ব্রেইনের সাথে সংযুক্ত আছে কিনা তা ফেরত দেয়।

takeSnapshot কল করার পরে সনাক্ত করা বস্তুর ডেটা অ্যাক্সেস করতে, উপলব্ধ Properties ব্যবহার করুন।

যেকোনো aivision মেম্বার ফাংশন কল করার আগে, নিচে দেখানো অনুযায়ী একটি aivision ইনস্ট্যান্স তৈরি করতে হবে:

/* This constructor is required when using VS Code.
AI Vision Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */


// Create Color Signatures
aivision::colordesc AIVision1__greenBox(
    1,      // index
    85,     // red
    149,    // green
    46,     // blue
    23,     // hangle
    0.23 ); // hdsat

aivision::colordesc AIVision1__blueBox(
    2,      // index
    77,     // red
    135,    // green
    125,    // blue
    27,     // hangle
    0.29 ); // hdsat

// Create a Color Code from two color signatures
aivision::codedesc AIVision1__greenBlue(
    1,                    // code index
    AIVision1__greenBox,  // first color signature
    AIVision1__blueBox ); // second color signature

// Create the AI Vision Sensor instance
aivision AIVision1(
    PORT1,                   // Smart Port
    AIVision1__greenBlue,    // color code
    aivision::ALL_AIOBJS );  // enable AI Classifications

takeSnapshot#

এআই ভিশন সেন্সর থেকে একটি ছবি ধারণ করে, নির্বাচিত এআই মডেল বা কনফিগার করা কালার সিগনেচার ব্যবহার করে সেটিকে প্রসেস করে এবং objects অ্যারেটি আপডেট করে।

প্রতিটি কল সবচেয়ে সাম্প্রতিক সনাক্তকরণের ফলাফল দিয়ে objects অ্যারেটি রিফ্রেশ করে। অবজেক্টগুলি বৃহত্তম থেকে ক্ষুদ্রতম (প্রস্থ অনুসারে) ক্রমে সাজানো হয়, যা 0ইন্ডেক্স থেকে শুরু হয়। যদি কোনও অবজেক্ট সনাক্ত না করা হয় objectCount হবে 0 এবং objects[i].exists হবে false।

1 — একটি অবজেক্ট আইডি এবং অবজেক্ট টাইপ ব্যবহার করে একটি স্ন্যাপশট নেয়।

int32_t takeSnapshot(
  uint32_t id,
  objectType type,
  uint32_t count );

2 — একটি রঙিন স্বাক্ষর ব্যবহার করে একটি স্ন্যাপশট নেয়।

int32_t takeSnapshot(
  const colordesc &desc,
  int32_t count = 8 );

3 — একটি রঙ কোড ব্যবহার করে একটি স্ন্যাপশট নেয়।

int32_t takeSnapshot(
  const codedesc &desc,
  int32_t count = 8 );

4 — Takes a snapshot using an AprilTag ID.

int32_t takeSnapshot(
  const tagdesc &desc,
  int32_t count = 8 );

5 — একটি এআই শ্রেণিবিন্যাস ব্যবহার করে একটি স্ন্যাপশট নেয়।

int32_t takeSnapshot(
  const aiobjdesc &desc,
  int32_t count = 8 );

6 — একটি অবজেক্ট ডেসক্রিপ্টর ব্যবহার করে একটি স্ন্যাপশট নেয়।

int32_t takeSnapshot(
  const objdesc &desc,
  int32_t count = 8 );

Parameters

প্যারামিটার

প্রকার

বর্ণনা

id

uint32_t

(id, type, count) ফাংশনটি ব্যবহার করার সময় সনাক্ত করার জন্য অবজেক্টের শনাক্তকারী। এর অর্থ typeএর উপর নির্ভর করে:

  • colorObject — কালার ডেসক্রিপ্টর সূচক (1–7)
  • codeObject — কালার কোড সূচক (1–8)
  • modelObject — এআই ক্লাসিফিকেশন আইডি
  • tagObject — এপ্রিলট্যাগ আইডি (0–36)

দ্রষ্টব্য: VEXcode-এ, এআই ক্লাসিফিকেশনের নাম (যেমন blueBall) সরাসরি ব্যবহার করা যেতে পারে। VS Code-এ, সংখ্যাসূচক আইডি ব্যবহার করতে হবে।

type

objectType

idসাথে যুক্ত অবজেক্টের বিভাগ নির্দিষ্ট করে :

desc

colordesc &, codedesc &, tagdesc &, aiobjdesc &, or objdesc &

Descriptor used to detect a specific object. Passed directly to takeSnapshot, for example:

  • AIVision1.takeSnapshot(AIVision1__greenBox);
  • AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
Predefined descriptor constants:
  • aivision::ALL_TAGS — Detects all AprilTag IDs
  • aivision::ALL_COLORS — Detects all configured Color Signatures
  • aivision::ALL_CODES — Detects all configured Color Codes
  • aivision::ALL_AIOBJS — Detects all AI Classifications
  • aivision::ALL_OBJECTS — Detects everything the sensor can recognize

count

uint32_t / int32_t

স্ন্যাপশট থেকে সংরক্ষিত অবজেক্টের সর্বোচ্চ সংখ্যা। ডিফল্ট মান ৮।

রিটার্ন মান

নির্দিষ্ট সিগনেচার বা ডিটেকশন টাইপের সাথে মিলে যাওয়া শনাক্তকৃত অবজেক্টের সংখ্যা বোঝাতে একটি int32_t পূর্ণসংখ্যা রিটার্ন করে।

নোট

  • অবজেক্ট ডেটা অ্যাক্সেস করার আগে এআই ভিশন সেন্সরকে অবশ্যই একটি স্ন্যাপশট নিতে হবে।

  • প্রতিটি কলে objects অবজেক্টের অ্যারেটি রিফ্রেশ করা হয়।

  • যখন count নির্দিষ্ট করা হয়, তখন শুধুমাত্র বৃহত্তম শনাক্তকৃত বস্তুগুলো (নির্দিষ্ট পরিমাণ পর্যন্ত) সংরক্ষণ করা হয়।

VEXcode-এর AI ভিশন ইউটিলিটিতে নির্বাচিত মডেলের ওপর AI শ্রেণিবিন্যাস নির্ভর করে।

উদাহরণ

// Move forward if an object is detected
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
  if (AIVision1.objects[0].exists) {
    Drivetrain.driveFor(forward, 50, mm);
  }
  wait(50, msec);
}

installed#

এআই ভিশন সেন্সরটি ইএক্সপি ব্রেইনের সাথে সংযুক্ত আছে কিনা তা জানায়।

উপলব্ধ ফাংশন

bool installed();

প্যারামিটার

এই ফাংশনটি কোনো প্যারামিটার গ্রহণ করে না।

রিটার্ন মান

এআই ভিশন সেন্সরটি সংযুক্ত আছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান প্রদান করে:

  • true — এআই ভিশন সেন্সরটি সংযুক্ত আছে।

  • false — এআই ভিশন সেন্সরটি সংযুক্ত নয়।

// Display a message if the AI Vision Sensor is connected
if (AIVision1.installed()){
  Brain.Screen.print("Installed!");
}

বৈশিষ্ট্য#

takeSnapshot কল করলে AI ভিশন সেন্সরের সনাক্তকরণের ফলাফল আপডেট হয়। প্রতিটি স্ন্যাপশট objects অ্যারে রিফ্রেশ করে, যেটিতে অনুরোধ করা AI ক্লাসিফিকেশন, কালার সিগনেচার, কালার কোড, বা এপ্রিলট্যাগ আইডির জন্য সনাক্ত করা বস্তুগুলি থাকে।

AI Vision ডেটা AIVisionSensor.objects[index]এ সংরক্ষিত অবজেক্টগুলির প্রোপার্টির মাধ্যমে অ্যাক্সেস করা হয়, যেখানে index 0 থেকে শুরু হয়।

বস্তুগুলোকে ক্ষেত্রফল অনুসারে বড় থেকে ছোট ক্রমে সাজানো হয়েছে।

এআই ভিশন সেন্সরের ছবির রেজোলিউশন হল 320 × 240 পিক্সেলবস্তুর অবস্থান এবং আকারের মান সেন্সরের বর্তমান দৃশ্যের সাপেক্ষে পিক্সেল এককে রিপোর্ট করা হয়।

নিম্নলিখিত সম্পত্তিগুলো উপলব্ধ আছে:

  • objectCount — সর্বশেষ স্ন্যাপশট থেকে সনাক্ত করা বস্তুর সংখ্যা ফেরত দেয়।

  • largestObject — সাম্প্রতিকতম স্ন্যাপশট থেকে সনাক্ত করা বৃহত্তম বস্তুটি নির্বাচন করে।

  • objects — সনাক্ত করা অবজেক্ট ধারণকারী অ্যারে যা takeSnapshot দ্বারা আপডেট করা হয়েছে।

  • .exists — অবজেক্ট এন্ট্রিতে বৈধ ডেটা আছে কিনা।

  • .width — সনাক্ত করা বস্তুর প্রস্থ, পিক্সেলে।

  • .height — সনাক্ত করা বস্তুর উচ্চতা, পিক্সেলে।

  • .centerX — পিক্সেলে বস্তুর কেন্দ্রের X অবস্থান।

  • .centerY — পিক্সেলে বস্তুর কেন্দ্রের Y অবস্থান।

  • .originX — অবজেক্টটির উপরের-বাম কোণার X অবস্থান, পিক্সেলে।

  • .originY — অবজেক্টটির উপরের-বাম কোণার Y অবস্থান, পিক্সেলে।

  • .angle — একটি কালার কোড বা এপ্রিলট্যাগ আইডির অভিমুখ ডিগ্রিতে।

  • .id — শ্রেণীবিভাগ আইডি বা এপ্রিলট্যাগ আইডি।

  • .score — এআই শ্রেণীকরণের জন্য আত্মবিশ্বাস স্কোর।

objectCount#

objectCount ` objects অ্যারের ভিতরে থাকা আইটেমের সংখ্যা একটি পূর্ণসংখ্যা হিসাবে ফেরত দেয়।

Syntax
AIVisionSensor.objectCount

Components

উপাদান

বর্ণনা

AIVisionSensor

আপনার এআই ভিশন সেন্সর ইনস্ট্যান্সটির নাম।

উদাহরণ

// Display the number of detected objects
while (true) {
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.clearLine(1);
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
  if (AIVision1.objects[0].exists) {
    Brain.Screen.print("%d", AIVision1.objectCount);
  }
  wait(50, msec);
}

largestObject#

largestObject objects অ্যারে থেকে শনাক্ত করা বৃহত্তম অবজেক্টটি পুনরুদ্ধার করে।

এই পদ্ধতিটি কোনো ইনডেক্স উল্লেখ না করেই objects মধ্য থেকে সর্বদা বৃহত্তম অবজেক্টটি পেতে ব্যবহার করা যেতে পারে।

Syntax
AIVisionSensor.largestObject

Components

উপাদান

বর্ণনা

AIVisionSensor

আপনার এআই ভিশন সেন্সর ইনস্ট্যান্সটির নাম।

উদাহরণ

// Display the closest AprilTag ID
while (true) {
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.clearLine(1);
  AIVision1.takeSnapshot(aivision::ALL_TAGS);
  if (AIVision1.objects[0].exists) {
    Brain.Screen.print("%d", AIVision1.largestObject.id);
  }
  wait(50, msec);
}

objects#

objects সনাক্ত করা অবজেক্টের বৈশিষ্ট্যগুলির একটি অ্যারে ফেরত দেয়। পৃথক অবজেক্টের নির্দিষ্ট বৈশিষ্ট্য মান অ্যাক্সেস করতে অ্যারেটি ব্যবহার করুন।

takeSnapshot ব্যবহার করার পর objects অ্যারেতে সংরক্ষিত প্রতিটি অবজেক্টের সাথে দশটি প্রপার্টি অন্তর্ভুক্ত থাকে।

id ও score ছাড়া বাকি সমস্ত প্রপার্টি ভ্যালু, takeSnapshot ব্যবহার করার মুহূর্তে AI ভিশন সেন্সরের ভিউতে শনাক্ত করা অবজেক্টটির অবস্থান এবং আকার বর্ণনা করে। এই ভ্যালুগুলো সেন্সরটির 320 বাই 240 পিক্সেল রেজোলিউশনের উপর ভিত্তি করে পিক্সেলে পরিমাপ করা হয়।

Syntax
AIVisionSensor.objects[index].property

Components

উপাদান

বর্ণনা

AIVisionSensor

আপনার এআই ভিশন সেন্সর ইনস্ট্যান্সটির নাম।

index

অ্যারেতে অবজেক্টের সূচক। সূচক 0 থেকে শুরু হয়।

property

উপলব্ধ অবজেক্ট প্রোপার্টিগুলোর মধ্যে একটি।

বিদ্যমান#

.exists ফেরত দেয় যে নির্দিষ্ট অবজেক্ট ইনডেক্সটিতে একটি বৈধ শনাক্তকৃত অবজেক্ট আছে কিনা।

অ্যাক্সেস

SensorName.objects[index].exists

রিটার্ন মান

নির্দিষ্ট অবজেক্ট ইনডেক্সটিতে একটি বৈধ শনাক্তকৃত অবজেক্ট আছে কিনা তা নির্দেশ করে একটি বুলিয়ান মান ফেরত দেয়:

  • true — A valid object exists at the specified index.
  • false — No object exists at the specified index.

উদাহরণ

// Move forward if an object is detected
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
  if (AIVision1.objects[0].exists) {
    Drivetrain.driveFor(forward, 50, mm);
  }
  wait(50, msec);
}

প্রস্থ#

.width শনাক্তকৃত অবজেক্টটির প্রস্থ ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].width

রিটার্ন মান

শনাক্তকৃত অবজেক্টের প্রস্থ পিক্সেলে প্রকাশ করে এমন একটি পূর্ণসংখ্যা int16_t রিটার্ন করে। এর মান 1 থেকে 320 পর্যন্ত হতে পারে।

উদাহরণ

// Approach an object until it's at least 100 pixels wide
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);

  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].width < 100) {
      Drivetrain.drive(forward);
    } else {
      Drivetrain.stop();
    }
  } else {
    Drivetrain.stop();
  }
  wait(50, msec);
}

উচ্চতা#

.height শনাক্তকৃত অবজেক্টটির উচ্চতা ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].height

রিটার্ন মান

শনাক্তকৃত বস্তুর উচ্চতা পিক্সেলে প্রকাশ করে এমন একটি পূর্ণসংখ্যা int16_t ফেরত দেয়। এর মান 1 থেকে 240 পর্যন্ত হতে পারে।

উদাহরণ

// Approach an object until it's at least 90 pixels tall
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);

  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].height < 90) {
      Drivetrain.drive(forward);
    } else {
      Drivetrain.stop();
    }
  } else {
    Drivetrain.stop();
  }
  wait(50, msec);
}

.centerX#

.centerX শনাক্তকৃত বস্তুর কেন্দ্রের x-স্থানাঙ্ক ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].centerX

রিটার্ন মান

এটি অবজেক্টটির কেন্দ্রের x-স্থানাঙ্ককে পিক্সেলে প্রকাশ করে এমন একটি পূর্ণসংখ্যা int16_t রিটার্ন করে। এর মান 0 থেকে 320 পর্যন্ত হতে পারে।

উদাহরণ

// Turn until an object is directly in front of the sensor
Drivetrain.setTurnVelocity(10, percent);
Drivetrain.turn(right);
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);

  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].centerX > 140 && AIVision1.objects[0].centerX < 180) {
      Drivetrain.stop();
    }
  }
  wait(10, msec);
}

.centerY#

.centerY শনাক্তকৃত বস্তুর কেন্দ্রের y-স্থানাঙ্ক ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].centerY

রিটার্ন মান

এটি অবজেক্টটির কেন্দ্রের y-স্থানাঙ্ককে পিক্সেলে প্রকাশ করে এমন একটি পূর্ণসংখ্যা int16_t রিটার্ন করে। এর মান 0 থেকে 240 পর্যন্ত হয়ে থাকে।

উদাহরণ

// Approach an object until it's close to the sensor
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);

  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].centerY < 150) {
      Drivetrain.drive(forward);
    } else {
      Drivetrain.stop();
    }
  } else {
    Drivetrain.stop();
  }
  wait(50, msec);
}

কোণ#

.angle শনাক্তকৃত কালার কোড বা এপ্রিলট্যাগ আইডির অভিমুখ ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].angle

রিটার্ন মান

শনাক্তকৃত কালার কোড বা এপ্রিলট্যাগ আইডির ঘূর্ণন ডিগ্রিতে প্রকাশ করে এমন একটি ফ্লোট float রিটার্ন করে। এর মান 0 থেকে 359.9 পর্যন্ত হয়ে থাকে।

উদাহরণ

// Turn left or right depending on how a configured
// Color Code is rotated
while (true) {
  AIVision1.takeSnapshot(AIVision1__redBlue);
  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].angle > 50 && AIVision1.objects[0].angle < 100) {
      Drivetrain.turn(right);
    }
    else if (AIVision1.objects[0].angle > 270 && AIVision1.objects[0].angle < 330) {
      Drivetrain.turn(left);
    }
    else {
      Drivetrain.stop();
    }
  } else {
    Drivetrain.stop();
  }
  wait(50, msec);
}

.originX#

.originX শনাক্তকৃত অবজেক্টের বাউন্ডিং বক্সের উপরের-বাম কোণার x-স্থানাঙ্ক ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].originX

রিটার্ন মান

এটি অবজেক্টের বাউন্ডিং বক্সের মূলবিন্দুর x-স্থানাঙ্ককে পিক্সেলে প্রকাশ করে, যা একটি int16_t মান। এর পরিসীমা 0 থেকে 320 পর্যন্ত।

উদাহরণ

// Display if an object is to the left or the right
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].originX < 120) {
      Brain.Screen.print("To the left!");
    } else {
      Brain.Screen.print("To the right!");
    }
  } else {
    Brain.Screen.print("No objects");
  }
  wait(100, msec);
}

.originY#

.originY শনাক্তকৃত অবজেক্টের বাউন্ডিং বক্সের উপরের-বাম কোণার y-স্থানাঙ্ক ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].originY

রিটার্ন মান

এটি অবজেক্টের বাউন্ডিং বক্সের মূলবিন্দুর y-স্থানাঙ্ককে পিক্সেলে প্রকাশ করে, যা একটি int16_t মান রিটার্ন করে। এর মান 0 থেকে 240 পর্যন্ত হয়ে থাকে।

উদাহরণ

// Display if an object is close or far
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].originY < 110) {
      Brain.Screen.print("Close");
    } else {
      Brain.Screen.print("Far");
    }
  }
  wait(100, msec);
}

.id#

.id শনাক্তকৃত এপ্রিলট্যাগ আইডি বা এআই ক্লাসিফিকেশন আইডি ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].id

রিটার্ন মান

শনাক্তকৃত অবজেক্টের আইডি প্রতিনিধিত্বকারী একটি int32_t রিটার্ন করে:

উদাহরণ

// Move forward when AprilTag ID 1 is detected
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_TAGS);
  if (AIVision1.objects[0].exists) {
    if (AIVision1.objects[0].id == 1) {
      Drivetrain.drive(forward);
    }
  } else {
    Drivetrain.stop();
  }
  wait(50, msec);
}

.স্কোর#

.score শনাক্তকৃত এআই ক্লাসিফিকেশনের কনফিডেন্স স্কোর ফেরত দেয়।

অ্যাক্সেস

SensorName.objects[index].score

রিটার্ন মান

১ থেকে ১০০ এর মধ্যে শনাক্তকৃত এআই ক্লাসিফিকেশনের কনফিডেন্স স্কোর নির্দেশ করে এমন একটি int16_t (পূর্ণসংখ্যা) রিটার্ন করে।

কম স্কোরের অর্থ হলো সেন্সরটি শনাক্ত করা বস্তুটি সম্পর্কে কম আত্মবিশ্বাসী, অন্যদিকে বেশি স্কোরের অর্থ হলো সেন্সরটি বেশি আত্মবিশ্বাসী।

উদাহরণ

// Display if a score is confident
while (true) {
  AIVision1.takeSnapshot(aivision::ALL_AIOBJS);

  if (AIVision1.objects[0].exists) {
    Brain.screen.clearScreen();
    Brain.screen.setCursor(1, 1);

    if (AIVision1.objects[0].score > 95) {
      Brain.Screen.print("Confident");
    } else {
      Brain.Screen.print("Not confident");
    }
  }
  wait(50, msec);
}