നിങ്ങളുടെ ബ്ലോക്കുകളിൽ ഉപയോഗിക്കാൻ കഴിയുന്ന തരത്തിൽ നിങ്ങളുടെ AI വിഷൻ സെൻസർ ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്തിരിക്കുന്ന കളർ സിഗ്നേച്ചറുകൾ ഉം കളർ കോഡുകൾ ഉണ്ടെന്ന് ഉറപ്പാക്കുക. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നതിനെക്കുറിച്ച് കൂടുതലറിയാൻ, താഴെയുള്ള ലേഖനങ്ങൾ നിങ്ങൾക്ക് വായിക്കാം:
- VEXcode EXP-യിൽ AI വിഷൻ സിഗ്നേച്ചർ ഉപയോഗിച്ച് കളർ സിഗ്നേച്ചറുകൾ കോൺഫിഗർ ചെയ്യുന്നു.
- VEXcode EXP-യിൽ AI വിഷൻ സിഗ്നേച്ചർ ഉപയോഗിച്ച് കളർ കോഡുകൾ കോൺഫിഗർ ചെയ്യുന്നു.
AI വിഷൻ സെൻസറിന് AI ക്ലാസിഫിക്കേഷനുകളും ഏപ്രിൽ ടാഗുകളും കണ്ടെത്താനും കഴിയും. ഈ കണ്ടെത്തൽ മോഡുകൾ എങ്ങനെ പ്രാപ്തമാക്കാമെന്ന് അറിയാൻ, ഇവിടെ പോകുക:
AI വിഷൻ സെൻസർ ഉപയോഗിച്ച് വിഷ്വൽ ഡാറ്റ നേടുക.
എല്ലാ AI വിഷൻ സെൻസർ കമാൻഡുകളും കോൺഫിഗർ ചെയ്തിരിക്കുന്ന AI വിഷൻ സെൻസറിന്റെ പേരിൽ ആരംഭിക്കും. ഈ ലേഖനത്തിലെ എല്ലാ ഉദാഹരണങ്ങൾക്കും, ഉപയോഗിക്കുന്ന AI വിഷൻ സെൻസറിന്റെ പേര് AIVisionആയിരിക്കും.
ടേക്ക്സ്നാപ്പ്ഷോട്ട്
takeSnapshot രീതി AI വിഷൻ സെൻസർ നിലവിൽ കാണുന്നതിന്റെ ഒരു ചിത്രം എടുക്കുകയും ആ സ്നാപ്പ്ഷോട്ടിൽ നിന്ന് ഡാറ്റ എടുക്കുകയും അത് ഒരു പ്രോജക്റ്റിൽ ഉപയോഗിക്കാൻ കഴിയുകയും ചെയ്യുന്നു. ഒരു സ്നാപ്പ്ഷോട്ട് എടുക്കുമ്പോൾ, AI വിഷൻ സെൻസർ ഏത് തരം വസ്തുവിന്റെ ഡാറ്റ ശേഖരിക്കണമെന്ന് നിങ്ങൾ വ്യക്തമാക്കേണ്ടതുണ്ട്:
- എകളർ സിഗ്നേച്ചർ അല്ലെങ്കിൽകളർ കോഡ്
- ഈ വിഷ്വൽ സിഗ്നേച്ചറുകൾ AI വിഷൻ സെൻസറിന്റെ പേരിൽ ആരംഭിക്കുന്നു, ഇരട്ട അടിവരയിടുന്നു, തുടർന്ന് വിഷ്വൽ സിഗ്നേച്ചറിന്റെ പേരിൽ, ഉദാഹരണത്തിന്:
AIVision1__Blue.
- ഈ വിഷ്വൽ സിഗ്നേച്ചറുകൾ AI വിഷൻ സെൻസറിന്റെ പേരിൽ ആരംഭിക്കുന്നു, ഇരട്ട അടിവരയിടുന്നു, തുടർന്ന് വിഷ്വൽ സിഗ്നേച്ചറിന്റെ പേരിൽ, ഉദാഹരണത്തിന്:
-
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 ക്ലാസിഫിക്കേഷനുകൾക്ക് മാത്രമേ ലഭ്യമാകൂ.
ഒരുAprilTagന്, id പ്രോപ്പർട്ടി കണ്ടെത്തിയAprilTag(s) ID നമ്പറിനെ പ്രതിനിധീകരിക്കുന്നു.
നിർദ്ദിഷ്ട ഏപ്രിൽ ടാഗുകൾ തിരിച്ചറിയുന്നത് തിരഞ്ഞെടുത്ത നാവിഗേഷനെ അനുവദിക്കുന്നു. നിങ്ങളുടെ റോബോട്ടിനെ ചില ടാഗുകളിലേക്ക് നീങ്ങാൻ പ്രോഗ്രാം ചെയ്യാനും മറ്റുള്ളവയെ അവഗണിക്കാനും കഴിയും, ഓട്ടോമേറ്റഡ് നാവിഗേഷനുള്ള സൂചനകളായി അവയെ ഫലപ്രദമായി ഉപയോഗിക്കാനും കഴിയും.
AI ക്ലാസിഫിക്കേഷനുകൾന്, id പ്രോപ്പർട്ടി കണ്ടെത്തിയ നിർദ്ദിഷ്ട തരം AI ക്ലാസിഫിക്കേഷനെ പ്രതിനിധീകരിക്കുന്നു.
നിർദ്ദിഷ്ട AI ക്ലാസിഫിക്കേഷനുകൾതിരിച്ചറിയുന്നത് റോബോട്ടിനെ നീല നിറത്തിലുള്ള ഒന്നിലേക്ക് അല്ല, ചുവന്ന ബക്കിബോളിലേക്ക് മാത്രം നാവിഗേറ്റ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നത് പോലുള്ള നിർദ്ദിഷ്ട വസ്തുക്കളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ അനുവദിക്കുന്നു.
ഏപ്രിൽ ടാഗുകൾ , AI ക്ലാസിഫിക്കേഷനുകൾ എന്നിവയെക്കുറിച്ചും AI വിഷൻ യൂട്ടിലിറ്റിയിൽ അവയുടെ കണ്ടെത്തൽ എങ്ങനെ പ്രാപ്തമാക്കാം എന്നതിനെക്കുറിച്ചും കൂടുതൽ വിവരങ്ങൾക്ക് ഈ ലേഖനങ്ങളിലേക്ക് പോകുക.
സെന്റർX ഉം സെന്റർY
ഇത് കണ്ടെത്തിയ വസ്തുവിന്റെ പിക്സലുകളിൽ മധ്യ കോർഡിനേറ്റുകളാണ്.
നാവിഗേഷനും സ്ഥാനനിർണ്ണയത്തിനും CenterX ഉം CenterY ഉം കോർഡിനേറ്റുകളെ സഹായിക്കുന്നു. AI വിഷൻ സെൻസറിന് 320 x 240 പിക്സൽ റെസലൂഷൻ ഉണ്ട്.
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 ഉം.
നാവിഗേഷനും സ്ഥാനനിർണ്ണയത്തിനും OriginX, OriginY കോർഡിനേറ്റുകൾ സഹായിക്കുന്നു. ഈ കോർഡിനേറ്റിനെ വസ്തുവിന്റെ വീതിയും ഉയരവും സംയോജിപ്പിച്ചുകൊണ്ട്, വസ്തുവിന്റെ ബൗണ്ടിംഗ് ബോക്സിന്റെ വലുപ്പം നിങ്ങൾക്ക് നിർണ്ണയിക്കാൻ കഴിയും. ചലിക്കുന്ന വസ്തുക്കളെ ട്രാക്ക് ചെയ്യുന്നതിനോ വസ്തുക്കൾക്കിടയിൽ നാവിഗേറ്റ് ചെയ്യുന്നതിനോ ഇത് സഹായിക്കും.
വീതി ഉം ഉയരവും
കണ്ടെത്തിയ വസ്തുവിന്റെ വീതിയോ ഉയരമോ പിക്സലുകളിൽ ഇതാണ്.
വീതിയും ഉയരവും അളക്കുന്നത് വ്യത്യസ്ത വസ്തുക്കളെ തിരിച്ചറിയാൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു ബക്കിബോളിന് ഒരു റിങ്ങിനേക്കാൾ ഉയരം കൂടുതലായിരിക്കും.
വീതിയും ഉയരവും 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);
}
ആംഗിൾ
ആംഗിൾ പ്രോപ്പർട്ടികളർ കോഡുകൾ ഉംഏപ്രിൽ ടാഗുകൾന് മാത്രമേ ലഭ്യമാകൂ.
കണ്ടെത്തിയ കളർ കോഡ്അല്ലെങ്കിൽ ഏപ്രിൽ ടാഗ് വ്യത്യസ്തമായി ക്രമീകരിച്ചിട്ടുണ്ടെങ്കിൽ ഇത് പ്രതിനിധീകരിക്കുന്നു.
കളർ കോഡ് അല്ലെങ്കിൽഏപ്രിൽ ടാഗ് മായി ബന്ധപ്പെട്ട് റോബോട്ട് വ്യത്യസ്തമായി ഓറിയന്റേഷൻ ചെയ്തിട്ടുണ്ടോ എന്ന് നിങ്ങൾക്ക് കാണാനും അതനുസരിച്ച് നാവിഗേഷൻ തീരുമാനങ്ങൾ എടുക്കാനും കഴിയും.
ഉദാഹരണത്തിന്, ഒരുകളർ കോഡ് ശരിയായ കോണിൽ കണ്ടെത്തിയില്ലെങ്കിൽ, അത് പ്രതിനിധീകരിക്കുന്ന വസ്തുവിനെ റോബോട്ടിന് ശരിയായി പിടിക്കാൻ കഴിഞ്ഞേക്കില്ല.
സ്കോർ
AI വിഷൻ സെൻസർ ഉപയോഗിച്ച്AI ക്ലാസിഫിക്കേഷനുകൾ കണ്ടെത്തുമ്പോൾ സ്കോർ പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നു.
കോൺഫിഡൻസ് സ്കോർ, AI വിഷൻ സെൻസറിന് അതിന്റെ കണ്ടെത്തലിൽ എത്രത്തോളം ഉറപ്പുണ്ടെന്ന് സൂചിപ്പിക്കുന്നു. ഈ ചിത്രത്തിൽ, ഈ നാല് വസ്തുക്കളുടെയും AI വർഗ്ഗീകരണങ്ങൾ തിരിച്ചറിയുന്നതിൽ 99% ആത്മവിശ്വാസമുണ്ട്. നിങ്ങളുടെ റോബോട്ട് വളരെ ആത്മവിശ്വാസമുള്ള കണ്ടെത്തലുകളിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ നിങ്ങൾക്ക് ഈ സ്കോർ ഉപയോഗിക്കാം.
നിലവിലുണ്ട്
അവസാനം എടുത്ത സ്നാപ്പ്ഷോട്ടിൽ ഒരു നിർദ്ദിഷ്ട വിഷ്വൽ സിഗ്നേച്ചർ കണ്ടെത്തിയിട്ടുണ്ടോ എന്ന് കണ്ടെത്താൻ exists പ്രോപ്പർട്ടി ഉപയോഗിക്കുന്നു.
മുമ്പത്തെ സ്നാപ്പ്ഷോട്ടിൽ കണ്ടെത്തിയ ഏതെങ്കിലും വസ്തുക്കൾ കണ്ടെത്തിയോ എന്ന് പരിശോധിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. ഒരു ഒബ്ജക്റ്റ് നിലനിൽക്കുമ്പോൾ ഈ പ്രോപ്പർട്ടി ഒരു True ഉം, ആ ഒബ്ജക്റ്റ് നിലവിലില്ലെങ്കിൽ ഒരു False ഉം തിരികെ നൽകും.
ഒബ്ജക്റ്റ് കൗണ്ട്
ഒബ്ജക്റ്റ് കൗണ്ട് രീതി അവസാന സ്നാപ്പ്ഷോട്ടിൽ കണ്ടെത്തിയ ഒബ്ജക്റ്റുകളുടെ അളവ് തിരികെ നൽകുന്നു.
ഈ ഉദാഹരണത്തിൽ,കളർ സിഗ്നേച്ചർ "ബ്ലൂ" ഉള്ള രണ്ട് വസ്തുക്കൾ കണ്ടെത്തി. 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);
}