VEXcode EXP C++ жүйесінде AI көру сенсорымен кодтау

AI көру сенсорымен конфигурацияланған Түс қолтаңбасы және Түс кодтары бар екеніне көз жеткізіңіз, осылайша оларды блоктарыңызбен пайдалануға болады. Оларды конфигурациялау туралы көбірек білу үшін төмендегі мақалаларды оқуға болады:

AI көру сенсоры сонымен қатар AI классификациялары мен AprilTags анықтай алады. Осы анықтау режимдерін қосу жолын білу үшін мына жерге өтіңіз:

Осы жеке пәрмендер және оларды VEXcode ішінде қалай пайдалану керектігі туралы қосымша мәліметтер алу үшін API сайтына өтіңіз.


AI Vision Sensor көмегімен визуалды деректерді алыңыз

Әрбір AI Vision Sensor пәрмені конфигурацияланған AI Vision Sensor атауынан басталады. Осы мақаладағы барлық мысалдар үшін пайдаланылатын AI көру сенсорының атауы AIVisionболады.

Snapshot түсіру

takeSnapshot әдісі AI көру сенсоры қазір көріп отырған нәрсенің суретін түсіреді және сол суреттен деректерді алады, содан кейін жобада пайдалануға болады. Сурет түсірілген кезде, AI көру сенсоры қандай нысанның түрі туралы деректерді жинау керектігін көрсетуіңіз керек:

  • түсті қолтаңба немесетүс коды
    • Бұл визуалды қолтаңбалар AI көру сенсорының атынан басталады, қос астын сызу, содан кейін Көрнекі қолтаңба атауы, мысалы: AIVision1__Blue.
  • AI классификациялары - aivision::ALL_AIOBJS
  • сәуірБелгілер- aivision::ALL_TAGS

Суретке түсіру сіз көрсеткен барлық анықталған нысандардың массивін жасайды. Мысалы, егер сіз «Көк» түсті қолтаңбаныанықтағыңыз келсе және AI көру сенсоры 3 түрлі көк нысанды анықтаса, үшеуінің деректері массивке қойылады.

Бұл мысалда AIVision1деп аталатын AI көру сенсорынан "Көк" түсті қолтаңбасуреті түсірілген. Ол массивте анықталған нысандардың санын көрсетеді және әрбір 0,5 секунд сайын жаңа суретті түсіреді.

while (true) {
// Көк түсті барлық нысандардың суретін алу.
AIVision.takeSnapshot(AIVision1__Көк);

// Деректерді алудан бұрын суретте нысанның анықталғанын тексеріңіз.
егер (AIVision.objectCount > 0) {

Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
күту(5, мсек);
}

нысандар

Суреттегі әрбір нысанда сол нысан туралы ақпаратты хабарлау үшін пайдалануға болатын әртүрлі сипаттар бар. Objects әдісі осы қасиеттерге қол жеткізуге мүмкіндік береді.

Қол жетімді қасиеттер келесідей:

  • id
  • centerX және centerY
  • OriginX және OriginY
  • ені
  • биіктігі
  • бұрыш
  • бар
  • ұпай

Нысанның қасиетіне қол жеткізу үшін AI көру сенсорының атын, одан кейін нысандар әдісін, содан кейін нысанның индексін пайдаланыңыз.

Нысан индексі қай нақты нысанның қасиетін шығарып алғыңыз келетінін көрсетеді. Суретке түсіргеннен кейін AI көру сенсоры нысандарды өлшемі бойынша автоматты түрде сұрыптайды. Ең үлкен нысанға 0 индексі тағайындалады, ал кішірек нысандар жоғары индекс сандарын алады.

Мысалы, ең үлкен нысанның енін шақыру AIVision1.objects[0].widthболады.

id

id сипаты тек сәуірдегі және AI классификациялары үшін қол жетімді.

Үш AprilTag AI Vision Utility арқылы бақыланады. Әрбір тег сәйкестендірілген, орналасқан және жүйе арқылы оның қадағалануын көрсететін контурланған. Осы мысалдағы AprilTag идентификаторлары 0, 3 және 9 мәндерін оқиды.

AprilTagүшін id сипаты анықталғанAprilTag(лар) ID нөмірін білдіреді.

Нақты сәуірдегіТагтарды анықтау таңдамалы шарлау мүмкіндігін береді. Сіз роботты басқаларды елемей, белгілі бір тегтерге қарай жылжу үшін бағдарламалай аласыз, оларды автоматтандырылған навигация үшін бағдаршалар ретінде тиімді пайдалана аласыз.

Төрт нысанды AI Vision утилитасы, екі BuckyBall және екі сақина бақылайды. Әрбір нысан сәйкестендіріліп, орналасады және жүйе арқылы оның қадағалануын көрсетеді. Утилита нысанның идентификаторын атап өтеді, бұл мысалда қызыл шар, көк шар, жасыл сақина және қызыл сақина бар.

AI классификациясыүшін id сипаты анықталған AI классификациясының арнайы түрін білдіреді.

Арнайы AI классификациясын анықтауроботқа көк емес, тек қызыл Бакиболға қарай шарлау сияқты нақты нысандарға ғана назар аударуға мүмкіндік береді.

сәуірдегі және AI классификациялары және оларды AI Vision утилитасында анықтауды қосу жолы туралы қосымша ақпарат алу үшін осы мақалаларға өтіңіз.

centerX және centerY

Бұл анықталған нысанның пиксельдегі орталық координаталары.

AI көру сенсоры көк Бакиболды бақылайтын көрінеді. Бакиболдың айналасында бақылау тіктөртбұрышы бар және жоғарыдағы белгі оның X позициясы 176 және Y позициясы 117 екенін көрсетеді. Орынның орталықтан өлшенетінін көрсету үшін бақылау тіктөртбұрышының ортасы бөлектеледі.

CenterX және CenterY координаттары навигацияға және орналасуға көмектеседі. AI Vision Sensor 320 x 240 пиксел рұқсатына ие.

AI Vision Sensor екі көк текшені қадағалайтын көрінеді. Текшелердің айналасында бақылау тіктөртбұрыштары бар, ал біреуі камераға әлдеқайда жақын. Жақынның Y позициясы 184, ал алысырақтың Y позициясы 70.

AI көру сенсорына жақынырақ нысанның алыстағы нысанға қарағанда CenterY координатасы төмен болатынын көруге болады.

Бұл мысалда AI көру сенсорының көрінісінің орталығы (160, 120) болғандықтан, робот анықталған нысанның centerX координатасы 150 пиксельден үлкен, бірақ 170 пикселден аз болғанша оңға бұрылады.

while (true) {
  // Көк түсті барлық нысандардың суретін алу.
  AIVision.takeSnapshot(AIVision__Blue);

  // Деректерді алудан бұрын суретте нысанның анықталғанын тексеріңіз.
  егер (AIVision.objectCount > 0) {

    if (AIVision.objects[0].centerX > 150,0 && 170,0 > AIVision.objects[0].centerX) {
      Drivetrain.burn(оңға);
    } else {
      Drivetrain.stop();
    }
  }
  күту(5, мсек);
}

бастапқы X және бастапқы

OriginX және OriginY - анықталған нысанның пиксельдегі жоғарғы сол жақ бұрышындағы координат.

AI көру сенсоры көк Бакиболды бақылайтын көрінеді. Бакиболдың айналасында бақылау тіктөртбұрышы бар және жоғарыдағы белгі оның X позициясы 176 және Y позициясы 117 екенін көрсетеді. Бақылау тіктөртбұрышының жоғарғы сол жақ бұрышы бастапқы орны оның жоғарғы сол жақ бұрышынан өлшенетінін көрсету үшін бөлектеледі.

OriginX және OriginY координаттары навигацияға және орналасуға көмектеседі. Осы координатаны нысанның ені мен биіктігімен біріктіру арқылы нысанның шектейтін өрісінің өлшемін анықтауға болады. Бұл қозғалатын нысандарды қадағалауға немесе нысандар арасында шарлауға көмектеседі.

ені және биіктігі

Бұл анықталған нысанның пиксельдегі ені немесе биіктігі.

AI көру сенсоры көк Бакиболды бақылайтын көрінеді. Бакиболдың айналасында бақылау тіктөртбұрышы бар және жоғарыдағы белгі оның ені 80 пиксель және биіктігі 78 пиксель екенін көрсетеді. Қызыл көрсеткілер ені мен биіктігін көрсету үшін бақылау тіктөртбұрышын бөлектейді.

Ені мен биіктігі өлшемдері әртүрлі нысандарды анықтауға көмектеседі. Мысалы, Бакиболдың биіктігі сақинаға қарағанда үлкенірек болады.

AI Vision Sensor екі көк текшені қадағалайтын көрінеді. Текшелердің айналасында бақылау тіктөртбұрыштары бар, ал біреуі камераға әлдеқайда жақын. Жақынының ені 144, биіктігі 113, ал алысының ені 73, биіктігі 84.

Ені мен биіктігі де нысанның AI көру сенсорынан қашықтығын көрсетеді. Кішірек өлшемдер әдетте нысанның алыс екенін білдіреді, ал үлкен өлшемдер оның жақынырақ екенін көрсетеді.

Бұл мысалда нысанның ені шарлау үшін пайдаланылады. Робот тоқтау алдында ені белгілі бір өлшемге жеткенше нысанға жақындайды.

while (true) {
  // Барлық көк нысандардың суретін алыңыз.
  AIVision.takeSnapshot(AIVision1__Көк);

  // Деректерді алудан бұрын суретте нысанның анықталғанын тексеріңіз.
  егер (AIVision.objectCount > 0) {

    if (AIVision.objects[0].ені < 250,0) {
      Drivetrain.drive(алға);
    } else {
      Drivetrain.stop();
    }
  }
  күту(5, мсек);
}

бұрыш

Бұрыш мәнінің 360 градусын көрсету үшін бірге бұрылатын қызыл шаршы мен жасыл шаршының анимациясы.

бұрышы сипаты тектүс кодтары жәнесәуірдеүшін қол жетімді.

Бұл анықталған Түс кодынемесе AprilTag басқаша бағдарланғанын білдіреді.

AI көру сенсоры жасыл, содан кейін көк түс кодын қадағалайтын көрінеді. Бейне арнасы көк текшенің үстіне жинақталған жасыл текшені көрсетеді. Түс кодының бұрыш мәні бөлектеліп, 87 градусты оқиды, бұл Түс коды тігінен бағытталғанын көрсетеді.

Сіз роботтыңТүс коды немесеAprilTag қатысты басқаша бағдарланғанын көре аласыз және соған сәйкес навигация шешімдерін қабылдай аласыз.

AI көру сенсоры жасыл, содан кейін көк түс кодын қадағалайтын көрінеді. Бейне арнасында көк текшенің жанында отырған жасыл текшені көрсетеді, бірақ олар сенсормен салыстырғанда ыңғайсыз бұрышта. Түс коды бұрышының мәні бөлектеліп, 0 градусты оқиды, бұл Түс кодының бұрышын оқу мүмкін еместігін көрсетеді.

Мысалы, егерТүс коды дұрыс бұрышта анықталмаса, ол көрсететін нысанды робот дұрыс ала алмауы мүмкін.

ұпай

ұпай қасиеті AI көру сенсорыменAI классификациясын анықтау кезінде пайдаланылады.

Төрт нысанды AI Vision утилитасы, екі BuckyBall және екі сақина бақылайды. Әрбір нысан сәйкестендіріліп, орналасады және жүйе арқылы оның қадағалануын көрсетеді. Утилита сондай-ақ әрбір нысанның AI жіктеу ұпайын тізімдейді, бұл мысалда әрбір балл 99% оқиды.

Сенімділік көрсеткіші AI көру сенсорының оны анықтауға қаншалықты сенімді екенін көрсетеді. Бұл суретте бұл төрт нысанның AI классификациясын анықтауға 99% сенімді. Сіз бұл ұпайды роботыңыздың тек жоғары сенімді анықтауларға назар аударуын қамтамасыз ету үшін пайдалана аласыз.

бар

бар сипаты соңғы түсірілген суретте көрсетілген визуалды қолтаңба анықталғанын анықтау үшін пайдаланылады.

Бұл алдыңғы суретте анықталған нысандардың анықталғанын тексеруге мүмкіндік береді. Бұл сипат нысан бар кезде True мәнін, ал объект жоқ кезде False мәнін қайтарады.


objectCount

objectCount әдісі соңғы суретте анықталған нысандардың санын қайтарады.

AI Vision Sensor екі көк текшені қадағалайтын көрінеді. Текшелердің айналасында бақылау тіктөртбұрыштары бар, ал біреуі камераға әлдеқайда жақын.

Бұл мысалдаТүс белгісі "Көк" белгісімен екі нысан анықталды. 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, мсек);
}

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

Last Updated: