VEXcode EXP C++-ൽ AI വിഷൻ സെൻസർ ഉപയോഗിച്ചുള്ള കോഡിംഗ്.

നിങ്ങളുടെ ബ്ലോക്കുകളിൽ ഉപയോഗിക്കാൻ കഴിയുന്ന തരത്തിൽ നിങ്ങളുടെ AI വിഷൻ സെൻസർ ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്‌തിരിക്കുന്ന കളർ സിഗ്നേച്ചറുകൾ ഉം കളർ കോഡുകൾ ഉണ്ടെന്ന് ഉറപ്പാക്കുക. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നതിനെക്കുറിച്ച് കൂടുതലറിയാൻ, താഴെയുള്ള ലേഖനങ്ങൾ നിങ്ങൾക്ക് വായിക്കാം:

AI വിഷൻ സെൻസറിന് AI ക്ലാസിഫിക്കേഷനുകളും ഏപ്രിൽ ടാഗുകളും കണ്ടെത്താനും കഴിയും. ഈ കണ്ടെത്തൽ മോഡുകൾ എങ്ങനെ പ്രാപ്തമാക്കാമെന്ന് അറിയാൻ, ഇവിടെ പോകുക:

ഈ വ്യക്തിഗത കമാൻഡുകളെക്കുറിച്ചും VEXcode-ൽ അവ എങ്ങനെ ഉപയോഗിക്കാമെന്നതിനെക്കുറിച്ചും കൂടുതലറിയാൻ, API സൈറ്റിലേക്ക് പോകുക.


AI വിഷൻ സെൻസർ ഉപയോഗിച്ച് വിഷ്വൽ ഡാറ്റ നേടുക.

എല്ലാ AI വിഷൻ സെൻസർ കമാൻഡുകളും കോൺഫിഗർ ചെയ്തിരിക്കുന്ന AI വിഷൻ സെൻസറിന്റെ പേരിൽ ആരംഭിക്കും. ഈ ലേഖനത്തിലെ എല്ലാ ഉദാഹരണങ്ങൾക്കും, ഉപയോഗിക്കുന്ന AI വിഷൻ സെൻസറിന്റെ പേര് AIVisionആയിരിക്കും.

ടേക്ക്സ്നാപ്പ്ഷോട്ട്

takeSnapshot രീതി AI വിഷൻ സെൻസർ നിലവിൽ കാണുന്നതിന്റെ ഒരു ചിത്രം എടുക്കുകയും ആ സ്നാപ്പ്ഷോട്ടിൽ നിന്ന് ഡാറ്റ എടുക്കുകയും അത് ഒരു പ്രോജക്റ്റിൽ ഉപയോഗിക്കാൻ കഴിയുകയും ചെയ്യുന്നു. ഒരു സ്നാപ്പ്ഷോട്ട് എടുക്കുമ്പോൾ, AI വിഷൻ സെൻസർ ഏത് തരം വസ്തുവിന്റെ ഡാറ്റ ശേഖരിക്കണമെന്ന് നിങ്ങൾ വ്യക്തമാക്കേണ്ടതുണ്ട്:

  • കളർ സിഗ്നേച്ചർ അല്ലെങ്കിൽകളർ കോഡ്
    • ഈ വിഷ്വൽ സിഗ്നേച്ചറുകൾ AI വിഷൻ സെൻസറിന്റെ പേരിൽ ആരംഭിക്കുന്നു, ഇരട്ട അടിവരയിടുന്നു, തുടർന്ന് വിഷ്വൽ സിഗ്നേച്ചറിന്റെ പേരിൽ, ഉദാഹരണത്തിന്: AIVision1__Blue.
  • AI വർഗ്ഗീകരണങ്ങൾ - aivision::ALL_AIOBJS
  • ഏപ്രിൽടാഗുകൾ- aivision::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);
}
കാത്തിരിക്കുക(5, msec);
}

വസ്തുക്കൾ

ഒരു സ്നാപ്പ്ഷോട്ടിലെ ഓരോ ഒബ്ജക്റ്റിനും ആ ഒബ്ജക്റ്റിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ റിപ്പോർട്ട് ചെയ്യാൻ ഉപയോഗിക്കാവുന്ന വ്യത്യസ്ത ഗുണങ്ങളുണ്ട്. ഈ പ്രോപ്പർട്ടികൾ ആക്‌സസ് ചെയ്യാൻ ഒബ്‌ജക്റ്റ് രീതി നിങ്ങളെ അനുവദിക്കുന്നു.

ലഭ്യമായ പ്രോപ്പർട്ടികൾ ഇപ്രകാരമാണ്:

  • ഐഡി
  • സെന്റർഎക്സും സെന്റർവൈയും
  • ഉത്ഭവംX ഉം ഉത്ഭവംY ഉം
  • വീതി
  • ഉയരം
  • ആംഗിൾ
  • നിലവിലുണ്ട്
  • സ്കോർ

ഒരു വസ്തുവിന്റെ പ്രോപ്പർട്ടി ആക്‌സസ് ചെയ്യുന്നതിന്, AI വിഷൻ സെൻസറിന്റെ പേരും തുടർന്ന് ഒബ്‌ജക്റ്റ് രീതിയും തുടർന്ന് ഒബ്‌ജക്റ്റിന്റെ സൂചികയും ഉപയോഗിക്കുക.

ഏത് പ്രത്യേക വസ്തുവിന്റെ പ്രോപ്പർട്ടി ആണ് നിങ്ങൾ വീണ്ടെടുക്കാൻ ആഗ്രഹിക്കുന്നതെന്ന് ഒബ്ജക്റ്റ് സൂചിക സൂചിപ്പിക്കുന്നു. ഒരു സ്നാപ്പ്ഷോട്ട് എടുത്ത ശേഷം, AI വിഷൻ സെൻസർ വസ്തുക്കളെ വലുപ്പമനുസരിച്ച് സ്വയമേവ അടുക്കുന്നു. ഏറ്റവും വലിയ വസ്തുവിന് സൂചിക 0 നൽകിയിരിക്കുന്നു, ചെറിയ വസ്തുക്കൾക്ക് ഉയർന്ന സൂചിക സംഖ്യകൾ ലഭിക്കുന്നു.

ഉദാഹരണത്തിന്, ഏറ്റവും വലിയ വസ്തുവിന്റെ വീതി AIVision1.objects[0].widthഎന്ന് വിളിക്കുന്നത് ആയിരിക്കും.

ഐഡി

ഐഡി പ്രോപ്പർട്ടി ഏപ്രിൽ ടാഗുകൾ ഉം AI ക്ലാസിഫിക്കേഷനുകൾക്ക് മാത്രമേ ലഭ്യമാകൂ.

മൂന്ന് ഏപ്രിൽ ടാഗുകൾ AI വിഷൻ യൂട്ടിലിറ്റി ട്രാക്ക് ചെയ്യുന്നുണ്ട്. ഓരോ ടാഗും തിരിച്ചറിയുകയും, സ്ഥാപിക്കുകയും, രൂപരേഖ തയ്യാറാക്കുകയും ചെയ്യുന്നു, ഇത് സിസ്റ്റം അതിന്റെ ട്രാക്കിംഗ് സൂചിപ്പിക്കുന്നു. ഈ ഉദാഹരണത്തിലെ AprilTag ഐഡികൾ 0, 3, 9 എന്നിവയാണ് വായിക്കുന്നത്.

ഒരുAprilTagന്, id പ്രോപ്പർട്ടി കണ്ടെത്തിയAprilTag(s) ID നമ്പറിനെ പ്രതിനിധീകരിക്കുന്നു.

നിർദ്ദിഷ്ട ഏപ്രിൽ ടാഗുകൾ തിരിച്ചറിയുന്നത് തിരഞ്ഞെടുത്ത നാവിഗേഷനെ അനുവദിക്കുന്നു. നിങ്ങളുടെ റോബോട്ടിനെ ചില ടാഗുകളിലേക്ക് നീങ്ങാൻ പ്രോഗ്രാം ചെയ്യാനും മറ്റുള്ളവയെ അവഗണിക്കാനും കഴിയും, ഓട്ടോമേറ്റഡ് നാവിഗേഷനുള്ള സൂചനകളായി അവയെ ഫലപ്രദമായി ഉപയോഗിക്കാനും കഴിയും.

AI വിഷൻ യൂട്ടിലിറ്റി നാല് വസ്തുക്കളെ ട്രാക്ക് ചെയ്യുന്നു, രണ്ട് ബക്കിബോൾസ്, രണ്ട് റിങ്ങുകൾ. ഓരോ വസ്തുവിനെയും തിരിച്ചറിയുകയും, സ്ഥാപിക്കുകയും, രൂപരേഖ തയ്യാറാക്കുകയും ചെയ്യുന്നു, ഇത് സിസ്റ്റം അതിന്റെ ട്രാക്കിംഗ് സൂചിപ്പിക്കുന്നു. യൂട്ടിലിറ്റി വസ്തുവിന്റെ ഐഡി രേഖപ്പെടുത്തുന്നു, ഈ ഉദാഹരണത്തിൽ ഒരു ചുവന്ന പന്ത്, ഒരു നീല പന്ത്, ഒരു പച്ച വളയം, ഒരു ചുവന്ന വളയം എന്നിവയുണ്ട്.

AI ക്ലാസിഫിക്കേഷനുകൾന്, id പ്രോപ്പർട്ടി കണ്ടെത്തിയ നിർദ്ദിഷ്ട തരം AI ക്ലാസിഫിക്കേഷനെ പ്രതിനിധീകരിക്കുന്നു.

നിർദ്ദിഷ്ട AI ക്ലാസിഫിക്കേഷനുകൾതിരിച്ചറിയുന്നത് റോബോട്ടിനെ നീല നിറത്തിലുള്ള ഒന്നിലേക്ക് അല്ല, ചുവന്ന ബക്കിബോളിലേക്ക് മാത്രം നാവിഗേറ്റ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത് പോലുള്ള നിർദ്ദിഷ്ട വസ്തുക്കളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ അനുവദിക്കുന്നു.

ഏപ്രിൽ ടാഗുകൾ , AI ക്ലാസിഫിക്കേഷനുകൾ എന്നിവയെക്കുറിച്ചും AI വിഷൻ യൂട്ടിലിറ്റിയിൽ അവയുടെ കണ്ടെത്തൽ എങ്ങനെ പ്രാപ്തമാക്കാം എന്നതിനെക്കുറിച്ചും കൂടുതൽ വിവരങ്ങൾക്ക് ഈ ലേഖനങ്ങളിലേക്ക് പോകുക.

സെന്റർX ഉം സെന്റർY

ഇത് കണ്ടെത്തിയ വസ്തുവിന്റെ പിക്സലുകളിൽ മധ്യ കോർഡിനേറ്റുകളാണ്.

AI വിഷൻ സെൻസർ ഒരു ബ്ലൂ ബക്കിബോൾ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ബക്കിബോളിന് ചുറ്റും ഒരു ട്രാക്കിംഗ് ദീർഘചതുരം ഉണ്ട്, മുകളിലുള്ള ലേബൽ അതിന്റെ X സ്ഥാനത്തിന് 176 ഉം Y സ്ഥാനത്തിന് 117 ഉം ആണെന്ന് കാണിക്കുന്നു. ട്രാക്കിംഗ് ദീർഘചതുരത്തിന്റെ മധ്യഭാഗം ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നത് സ്ഥാനം അളക്കുന്നത് മധ്യത്തിൽ നിന്നാണെന്ന് തെളിയിക്കാനാണ്.

നാവിഗേഷനും സ്ഥാനനിർണ്ണയത്തിനും CenterX ഉം CenterY ഉം കോർഡിനേറ്റുകളെ സഹായിക്കുന്നു. AI വിഷൻ സെൻസറിന് 320 x 240 പിക്സൽ റെസലൂഷൻ ഉണ്ട്.

AI വിഷൻ സെൻസർ രണ്ട് നീല ക്യൂബുകളെ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ക്യൂബുകൾക്ക് ചുറ്റും ട്രാക്കിംഗ് ദീർഘചതുരങ്ങളുണ്ട്, അതിലൊന്ന് ക്യാമറയോട് വളരെ അടുത്താണ്. അടുത്തേക്ക് ചെല്ലുമ്പോൾ Y സ്ഥാനം 184 ഉം, അകലെയാകുമ്പോൾ Y സ്ഥാനം 70 ഉം ആയിരിക്കും.

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);
    } else {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

ഉത്ഭവംX ഉം ഉത്ഭവം

കണ്ടെത്തിയ വസ്തുവിന്റെ മുകളിൽ ഇടത് കോണിലുള്ള കോർഡിനേറ്റാണ് പിക്സലുകളിൽ OriginX ഉം OriginY ഉം.

AI വിഷൻ സെൻസർ ഒരു ബ്ലൂ ബക്കിബോൾ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ബക്കിബോളിന് ചുറ്റും ഒരു ട്രാക്കിംഗ് ദീർഘചതുരം ഉണ്ട്, മുകളിലുള്ള ലേബൽ അതിന്റെ X സ്ഥാനത്തിന് 176 ഉം Y സ്ഥാനത്തിന് 117 ഉം ആണെന്ന് കാണിക്കുന്നു. ട്രാക്കിംഗ് ദീർഘചതുരത്തിന്റെ മുകളിൽ ഇടത് മൂല ഹൈലൈറ്റ് ചെയ്തിരിക്കുന്നു, ഇത് ഉത്ഭവ സ്ഥാനം അതിന്റെ മുകളിൽ ഇടത് മൂലയിൽ നിന്നാണ് അളക്കുന്നതെന്ന് തെളിയിക്കുന്നു.

നാവിഗേഷനും സ്ഥാനനിർണ്ണയത്തിനും OriginX, OriginY കോർഡിനേറ്റുകൾ സഹായിക്കുന്നു. ഈ കോർഡിനേറ്റിനെ വസ്തുവിന്റെ വീതിയും ഉയരവും സംയോജിപ്പിച്ചുകൊണ്ട്, വസ്തുവിന്റെ ബൗണ്ടിംഗ് ബോക്സിന്റെ വലുപ്പം നിങ്ങൾക്ക് നിർണ്ണയിക്കാൻ കഴിയും. ചലിക്കുന്ന വസ്തുക്കളെ ട്രാക്ക് ചെയ്യുന്നതിനോ വസ്തുക്കൾക്കിടയിൽ നാവിഗേറ്റ് ചെയ്യുന്നതിനോ ഇത് സഹായിക്കും.

വീതി ഉം ഉയരവും

കണ്ടെത്തിയ വസ്തുവിന്റെ വീതിയോ ഉയരമോ പിക്സലുകളിൽ ഇതാണ്.

AI വിഷൻ സെൻസർ ഒരു ബ്ലൂ ബക്കിബോൾ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ബക്കിബോളിന് ചുറ്റും ഒരു ട്രാക്കിംഗ് ദീർഘചതുരം ഉണ്ട്, മുകളിലുള്ള ലേബൽ അതിന് 80 പിക്സൽ വീതിയും 78 പിക്സൽ ഉയരവുമുണ്ടെന്ന് കാണിക്കുന്നു. ട്രാക്കിംഗ് ദീർഘചതുരത്തിന്റെ വീതിയും ഉയരവും തെളിയിക്കാൻ ചുവന്ന അമ്പടയാളങ്ങൾ അതിനെ ഹൈലൈറ്റ് ചെയ്യുന്നു.

വീതിയും ഉയരവും അളക്കുന്നത് വ്യത്യസ്ത വസ്തുക്കളെ തിരിച്ചറിയാൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ബക്കിബോളിന് ഒരു റിങ്ങിനേക്കാൾ ഉയരം കൂടുതലായിരിക്കും.

AI വിഷൻ സെൻസർ രണ്ട് നീല ക്യൂബുകളെ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ക്യൂബുകൾക്ക് ചുറ്റും ട്രാക്കിംഗ് ദീർഘചതുരങ്ങളുണ്ട്, അതിലൊന്ന് ക്യാമറയോട് വളരെ അടുത്താണ്. അടുത്തുള്ളതിന് 144 വീതിയും 113 ഉയരവുമുണ്ട്, അകലെയുള്ളതിന് 73 വീതിയും 84 ഉയരവുമുണ്ട്.

വീതിയും ഉയരവും AI വിഷൻ സെൻസറിൽ നിന്നുള്ള ഒരു വസ്തുവിന്റെ ദൂരത്തെ സൂചിപ്പിക്കുന്നു. ചെറിയ അളവുകൾ സാധാരണയായി വസ്തു കൂടുതൽ അകലെയാണെന്ന് സൂചിപ്പിക്കുന്നു, അതേസമയം വലിയ അളവുകൾ അത് അടുത്താണെന്ന് സൂചിപ്പിക്കുന്നു.

ഈ ഉദാഹരണത്തിൽ, വസ്തുവിന്റെ വീതി നാവിഗേഷനായി ഉപയോഗിക്കുന്നു. ഒരു പ്രത്യേക വലിപ്പത്തിൽ വീതി എത്തുന്നതുവരെ റോബോട്ട് വസ്തുവിനെ സമീപിച്ച് നിർത്തും.

while (true) {
  // എല്ലാ നീല വസ്തുക്കളുടെയും ഒരു സ്നാപ്പ്ഷോട്ട് എടുക്കുക.
  AIVision.takeSnapshot(AIVision1__Blue);

  // ഡാറ്റ എടുക്കുന്നതിന് മുമ്പ് സ്നാപ്പ്ഷോട്ടിൽ ഒരു വസ്തു കണ്ടെത്തിയെന്ന് ഉറപ്പാക്കുക.
  (AIVision.objectCount > 0) ആണെങ്കിൽ {

    (AIVision.objects[0].width < 250.0) ആണെങ്കിൽ {
      Drivetrain.drive(forward);
    } else {
      Drivetrain.stop();
    }
  }
  wait(5, msec);
}

ആംഗിൾ

ഒരു ആംഗിൾ മൂല്യത്തിന്റെ 360 ഡിഗ്രി തെളിയിക്കാൻ ഒരു ചുവന്ന ചതുരവും ഒരു പച്ച ചതുരവും ഒരുമിച്ച് തിരിക്കുന്നതിന്റെ ആനിമേഷൻ.

ആംഗിൾ പ്രോപ്പർട്ടികളർ കോഡുകൾ ഉംഏപ്രിൽ ടാഗുകൾന് മാത്രമേ ലഭ്യമാകൂ.

കണ്ടെത്തിയ കളർ കോഡ്അല്ലെങ്കിൽ ഏപ്രിൽ ടാഗ് വ്യത്യസ്തമായി ക്രമീകരിച്ചിട്ടുണ്ടെങ്കിൽ ഇത് പ്രതിനിധീകരിക്കുന്നു.

പച്ചയും പിന്നെ നീലയും നിറങ്ങളിലുള്ള ഒരു കളർ കോഡ് ട്രാക്ക് ചെയ്യുന്നതായി AI വിഷൻ സെൻസർ കാണിച്ചിരിക്കുന്നു. വീഡിയോ ഫീഡിൽ ഒരു നീല ക്യൂബിന് മുകളിൽ ഒരു പച്ച ക്യൂബ് അടുക്കി വച്ചിരിക്കുന്നത് കാണിക്കുന്നു. കളർ കോഡിന്റെ ആംഗിൾ മൂല്യം ഹൈലൈറ്റ് ചെയ്‌ത് 87 ഡിഗ്രി കാണിക്കുന്നു, ഇത് കളർ കോഡ് ലംബമായി ഓറിയന്റഡ് ചെയ്‌തിരിക്കുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു.

കളർ കോഡ് അല്ലെങ്കിൽഏപ്രിൽ ടാഗ് മായി ബന്ധപ്പെട്ട് റോബോട്ട് വ്യത്യസ്തമായി ഓറിയന്റേഷൻ ചെയ്തിട്ടുണ്ടോ എന്ന് നിങ്ങൾക്ക് കാണാനും അതനുസരിച്ച് നാവിഗേഷൻ തീരുമാനങ്ങൾ എടുക്കാനും കഴിയും.

പച്ചയും പിന്നെ നീലയും നിറങ്ങളിലുള്ള ഒരു കളർ കോഡ് ട്രാക്ക് ചെയ്യുന്നതായി AI വിഷൻ സെൻസർ കാണിച്ചിരിക്കുന്നു. വീഡിയോ ഫീഡിൽ ഒരു പച്ച ക്യൂബ് ഒരു നീല ക്യൂബിന് അടുത്തായി ഇരിക്കുന്നതായി കാണിക്കുന്നു, പക്ഷേ അവ സെൻസറുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ ഒരു മോശം കോണിലാണ്. കളർ കോഡിന്റെ ആംഗിൾ മൂല്യം ഹൈലൈറ്റ് ചെയ്‌ത് 0 ഡിഗ്രി കാണിക്കുന്നു, ഇത് കളർ കോഡിന്റെ ആംഗിൾ വായിക്കാൻ കഴിയില്ലെന്ന് സൂചിപ്പിക്കുന്നു.

ഉദാഹരണത്തിന്, ഒരുകളർ കോഡ് ശരിയായ കോണിൽ കണ്ടെത്തിയില്ലെങ്കിൽ, അത് പ്രതിനിധീകരിക്കുന്ന വസ്തുവിനെ റോബോട്ടിന് ശരിയായി പിടിക്കാൻ കഴിഞ്ഞേക്കില്ല.

സ്കോർ

AI വിഷൻ സെൻസർ ഉപയോഗിച്ച്AI ക്ലാസിഫിക്കേഷനുകൾ കണ്ടെത്തുമ്പോൾ സ്കോർ പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നു.

AI വിഷൻ യൂട്ടിലിറ്റി നാല് വസ്തുക്കളെ ട്രാക്ക് ചെയ്യുന്നു, രണ്ട് ബക്കിബോൾസ്, രണ്ട് റിങ്ങുകൾ. ഓരോ വസ്തുവിനെയും തിരിച്ചറിയുകയും, സ്ഥാപിക്കുകയും, രൂപരേഖ തയ്യാറാക്കുകയും ചെയ്യുന്നു, ഇത് സിസ്റ്റം അതിന്റെ ട്രാക്കിംഗ് സൂചിപ്പിക്കുന്നു. ഓരോ ഒബ്ജക്റ്റിന്റെയും AI ക്ലാസിഫിക്കേഷൻ സ്കോറും യൂട്ടിലിറ്റി പട്ടികപ്പെടുത്തുന്നു, ഈ ഉദാഹരണത്തിൽ ഓരോ സ്കോറും 99% ആണ്.

കോൺഫിഡൻസ് സ്‌കോർ, AI വിഷൻ സെൻസറിന് അതിന്റെ കണ്ടെത്തലിൽ എത്രത്തോളം ഉറപ്പുണ്ടെന്ന് സൂചിപ്പിക്കുന്നു. ഈ ചിത്രത്തിൽ, ഈ നാല് വസ്തുക്കളുടെയും AI വർഗ്ഗീകരണങ്ങൾ തിരിച്ചറിയുന്നതിൽ 99% ആത്മവിശ്വാസമുണ്ട്. നിങ്ങളുടെ റോബോട്ട് വളരെ ആത്മവിശ്വാസമുള്ള കണ്ടെത്തലുകളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ നിങ്ങൾക്ക് ഈ സ്കോർ ഉപയോഗിക്കാം.

നിലവിലുണ്ട്

അവസാനം എടുത്ത സ്നാപ്പ്ഷോട്ടിൽ ഒരു നിർദ്ദിഷ്ട വിഷ്വൽ സിഗ്നേച്ചർ കണ്ടെത്തിയിട്ടുണ്ടോ എന്ന് കണ്ടെത്താൻ exists പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നു.

മുമ്പത്തെ സ്നാപ്പ്ഷോട്ടിൽ കണ്ടെത്തിയ ഏതെങ്കിലും വസ്തുക്കൾ കണ്ടെത്തിയോ എന്ന് പരിശോധിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. ഒരു ഒബ്‌ജക്റ്റ് നിലനിൽക്കുമ്പോൾ ഈ പ്രോപ്പർട്ടി ഒരു True ഉം, ആ ഒബ്‌ജക്റ്റ് നിലവിലില്ലെങ്കിൽ ഒരു False ഉം തിരികെ നൽകും.


ഒബ്ജക്റ്റ് കൗണ്ട്

ഒബ്‌ജക്റ്റ് കൗണ്ട് രീതി അവസാന സ്നാപ്പ്ഷോട്ടിൽ കണ്ടെത്തിയ ഒബ്‌ജക്റ്റുകളുടെ അളവ് തിരികെ നൽകുന്നു.

AI വിഷൻ സെൻസർ രണ്ട് നീല ക്യൂബുകളെ ട്രാക്ക് ചെയ്യുന്നതായി കാണിച്ചിരിക്കുന്നു. ക്യൂബുകൾക്ക് ചുറ്റും ട്രാക്കിംഗ് ദീർഘചതുരങ്ങളുണ്ട്, അതിലൊന്ന് ക്യാമറയോട് വളരെ അടുത്താണ്.

ഈ ഉദാഹരണത്തിൽ,കളർ സിഗ്നേച്ചർ "ബ്ലൂ" ഉള്ള രണ്ട് വസ്തുക്കൾ കണ്ടെത്തി. 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: