എഐ വിഷൻ#
ആമുഖം#
VEX AIM കോഡിംഗ് റോബോട്ടിന്റെ AI വിഷൻ സെൻസർ വസ്തുക്കൾ, നിറങ്ങൾ, ഏപ്രിൽടാഗ് ഐഡികൾ എന്നിവ കണ്ടെത്തി ട്രാക്ക് ചെയ്യുന്നു. ഇത് റോബോട്ടിനെ അതിന്റെ ചുറ്റുപാടുകൾ വിശകലനം ചെയ്യാനും വസ്തുക്കളെ പിന്തുടരാനും കണ്ടെത്തിയ ദൃശ്യ ഡാറ്റയെ അടിസ്ഥാനമാക്കി പ്രതികരിക്കാനും അനുവദിക്കുന്നു.
AI വിഷൻ സെൻസറിന് 320×240 പിക്സൽ റെസല്യൂഷൻ ഉണ്ട്. താഴെയുള്ള ഡയഗ്രാമിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, ഉത്ഭവം (0, 0) മുകളിൽ ഇടത് കോണിലാണ്, സെൻസറിന്റെ മധ്യഭാഗം (160, 120) ൽ സ്ഥാപിച്ചിരിക്കുന്നു:

എല്ലാ രീതികളുടെയും ഗുണങ്ങളുടെയും ഒരു ലിസ്റ്റ് താഴെ കൊടുക്കുന്നു:
പ്രവർത്തനങ്ങൾ — AI വിഷൻ ക്യാമറ ഫീഡ് കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക.
show_aivision— റോബോട്ടിന്റെ സ്ക്രീനിൽ AI വിഷൻ ഫീഡ് പ്രദർശിപ്പിക്കുന്നു.hide_aivision— സ്ക്രീനിൽ നിന്ന് AI വിഷൻ ഫീഡ് മറയ്ക്കുന്നു.tag_detection— ഏപ്രിൽ ടാഗ് ഐഡി കണ്ടെത്തൽ ഓണാക്കുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു.
ഗെറ്ററുകൾ — റോബോട്ട് ഒരു വസ്തു കൈവശം വച്ചിട്ടുണ്ടോ എന്ന് കണ്ടെത്തുക.
get_data— ഒരു പ്രത്യേക ഒപ്പിനായി കണ്ടെത്തിയ വസ്തുക്കളുടെ ഒരു ട്യൂപ്പിൾ തിരികെ നൽകുന്നു.has_sports_ball— റോബോട്ടിന് ഒരു സ്പോർട്സ് ബോൾ ഉണ്ടോ എന്ന് നൽകുന്നു.has_any_barrel— റോബോട്ടിന് ഏതെങ്കിലും തരത്തിലുള്ള ബാരൽ ഉണ്ടോ എന്ന് നൽകുന്നു.has_blue_barrel— റോബോട്ടിന് നീല ബാരൽ ഉണ്ടോ എന്ന് നൽകുന്നു.has_orange_barrel— റോബോട്ടിന് ഓറഞ്ച് ബാരൽ ഉണ്ടോ എന്ന് നൽകുന്നു.
പ്രോപ്പർട്ടികൾ — get_data ൽ നിന്ന് ലഭിച്ച ഒബ്ജക്റ്റ് ഡാറ്റ.
exists— നിലവിലെ കണ്ടെത്തലിൽ ബൂളിയൻ ആയി വസ്തു നിലവിലുണ്ടോ എന്ന്.width— കണ്ടെത്തിയ വസ്തുവിന്റെ വീതി.height— കണ്ടെത്തിയ വസ്തുവിന്റെ ഉയരം.centerX— വസ്തുവിന്റെ കേന്ദ്രത്തിന്റെ X സ്ഥാനം.centerY— വസ്തുവിന്റെ കേന്ദ്രത്തിന്റെ Y സ്ഥാനം.bearing— റോബോട്ടിന്റെ മുൻവശത്തെ തിരശ്ചീന കോൺ.rotation— വസ്തുവിന്റെ ഓറിയന്റേഷൻ.originX— വസ്തുവിന്റെ മുകളിൽ ഇടത് മൂലയുടെ X സ്ഥാനം.originY— വസ്തുവിന്റെ മുകളിൽ ഇടത് കോണിന്റെ Y സ്ഥാനം.id— വസ്തുവിന്റെ വർഗ്ഗീകരണം അല്ലെങ്കിൽ ടാഗ് ഐഡി.score— AI ക്ലാസിഫിക്കേഷനുകൾക്കുള്ള കോൺഫിഡൻസ് സ്കോർ.type— വസ്തുവിന്റെ തരം (AI, ടാഗ്, നിറം അല്ലെങ്കിൽ കോഡ്) നൽകുന്നു.
കൺസ്ട്രക്ടർമാർ — വർണ്ണ ഒപ്പുകളും കോഡുകളും നിർവചിക്കുക.
ഒരു കളർ സിഗ്നേച്ചർ സൃഷ്ടിക്കുക — RGB, ഹ്യൂ/സാച്ചുറേഷൻ ശ്രേണികളെ അടിസ്ഥാനമാക്കി ഒരു പുതിയ കളർ സിഗ്നേച്ചർ സൃഷ്ടിക്കുന്നു.
ഒരു കളർ കോഡ് സൃഷ്ടിക്കുക — ഒന്നിലധികം കളർ സിഗ്നേച്ചറുകൾ ഒരു കളർ കോഡിലേക്ക് സംയോജിപ്പിക്കുന്നു.
പ്രവർത്തനങ്ങൾ#
show_aivision#
show_aivision റോബോട്ടിന്റെ സ്ക്രീനിൽ AI വിഷൻ സെൻസറിന്റെ ലൈവ് ഡാറ്റ ഫീഡ് പ്രദർശിപ്പിക്കുന്നു. ലൈവ് ഡാറ്റ ഫീഡ് സ്ക്രീനിലെ മറ്റേതെങ്കിലും ചിത്രങ്ങളോ വാചകമോ ഉൾക്കൊള്ളും.
കുറിപ്പ്: ഫീഡ് മറയ്ക്കാൻ hide_aivision ഉപയോഗിച്ചില്ലെങ്കിൽ സ്ക്രീൻ മറ്റ് ചിത്രങ്ങളോ വാചകമോ പ്രദർശിപ്പിക്കില്ല.
Usage:
robot.screen.show_aivision()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# Watch the AI Vision Sensor detect AI Classifications
# and AprilTag IDs as you move the robot
robot.screen.show_aivision()
hide_aivision#
hide_aivision റോബോട്ടിന്റെ സ്ക്രീനിൽ നിന്ന് AI വിഷൻ സെൻസറിന്റെ ലൈവ് ഡാറ്റ ഫീഡ് നീക്കം ചെയ്യുന്നു.
Usage:
robot.screen.hide_aivision()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# View the AI Vision Sensor's feed for five seconds
robot.screen.show_aivision()
wait(5, SECONDS)
robot.screen.hide_aivision()
tag_detection#
tag_detection ഏപ്രിൽ ടാഗ് ഐഡി ഡിറ്റക്ഷൻ പ്രാപ്തമാക്കുന്നു അല്ലെങ്കിൽ അപ്രാപ്തമാക്കുന്നു, ഇവിടെ സ്റ്റേറ്റ് ഒരു ബൂളിയൻ മൂല്യമാണ്.
Circle21h7 കുടുംബത്തിൽ നിന്നുള്ള 0 മുതൽ 36 വരെയുള്ള AprilTag ഐഡികൾ സെൻസറിന് കണ്ടെത്താൻ കഴിയും.
Usage:
robot.vision.tag_detection(state)
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
|
മൂല്യങ്ങൾ ഇവയാണ്: |
robot.screen.set_font(PROP30)
# Cut off AprilTag ID detection after 5 seconds
while True:
if timer.time(SECONDS) > 5:
robot.vision.tag_detection(False)
robot.screen.clear_screen()
robot.screen.set_cursor(3, 1)
apriltags = robot.vision.get_data(ALL_TAGS)
if apriltags[0].exists:
robot.screen.print("AprilTag ID detected!")
else:
robot.screen.print("Nothing detected!")
wait(0.1, SECONDS)
ഗെറ്ററുകൾ#
get_data#
get_data AI വിഷൻ സെൻസർ ഫ്രെയിമിൽ നിന്ന് ഡാറ്റ ഒരു സിംഗിൾ സിഗ്നേച്ചറിലേക്ക് ഫിൽട്ടർ ചെയ്യുന്നു — മുൻകൂട്ടി പരിശീലിപ്പിച്ച ഒബ്ജക്റ്റ്, ഒരു AprilTag ID, അല്ലെങ്കിൽ കോൺഫിഗർ ചെയ്ത കളർ സിഗ്നേച്ചർ അല്ലെങ്കിൽ കളർ കോഡ് പോലുള്ള സെൻസറിന് തിരിച്ചറിയാൻ കഴിയുന്ന ഒന്നിന്റെ സംരക്ഷിച്ച വിവരണം — ഒരു tuple തിരികെ നൽകുന്നു.
കളർ സിഗ്നേച്ചറുകൾ ഉം കളർ കോഡുകൾ ഉം ഈ രീതി ഉപയോഗിച്ച് ഉപയോഗിക്കുന്നതിന് മുമ്പ് AI വിഷൻ യൂട്ടിലിറ്റിയിൽ ആദ്യം കോൺഫിഗർ ചെയ്യണം.
tuple സൂചിക 0 മുതൽ വീതി അനുസരിച്ച് ഏറ്റവും വലുത് മുതൽ ചെറുത് വരെ ക്രമീകരിച്ചിരിക്കുന്ന ഒബ്ജക്റ്റുകളെ സംഭരിക്കുന്നു. ഓരോ ഒബ്ജക്റ്റിന്റെയും properties അതിന്റെ സൂചിക ഉപയോഗിച്ച് ആക്സസ് ചെയ്യാൻ കഴിയും. പൊരുത്തപ്പെടുന്ന ഒബ്ജക്റ്റുകളൊന്നും കണ്ടെത്തിയില്ലെങ്കിൽ ഒരു ശൂന്യമായ ട്യൂപ്പിൾ തിരികെ നൽകും.
Usage:
robot.vision.get_data(signature, count)
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
|
നൽകിയിരിക്കുന്ന ഒപ്പിന്റെ ഡാറ്റ മാത്രം ഉൾപ്പെടുത്തുന്നതിനായി ഡാറ്റാസെറ്റ് ഫിൽട്ടർ ചെയ്യുന്നു. ലഭ്യമായ ഒപ്പുകൾ ഇവയാണ്:
|
|
ഓപ്ഷണൽ. 1 മുതൽ 24 വരെ തിരികെ നൽകാവുന്ന പരമാവധി ഒബ്ജക്റ്റുകളുടെ എണ്ണം സജ്ജമാക്കുന്നു (സ്ഥിരസ്ഥിതി: 8). |
കുറിപ്പ്: AIM Printables ൽ നിന്ന് പ്രിന്റ് ചെയ്ത AprilTag ഐഡികൾ ഉപയോഗിച്ച് AprilTag ഐഡികൾ 5 മുതൽ 37 വരെ ലഭിക്കും.
# Move forward if a sports ball is detected
while True:
ball = robot.vision.get_data(SPORTS_BALL)
if ball[0].exists:
robot.move_for(10, 0)
wait(50, MSEC)
കുറിപ്പ്: റിട്ടേൺ ചെയ്ത ട്യൂപ്പിൾ, പൈത്തണിന്റെ sorted ഫംഗ്ഷൻ ഉപയോഗിച്ച് വീതി മാത്രമല്ല, ഏതൊരു പ്രോപ്പർട്ടി ഉപയോഗിച്ചും അടുക്കാൻ കഴിയും. ഉദാഹരണത്തിന്, ഏപ്രിൽ ടാഗ് ഐഡി ഉപയോഗിച്ച് അടുക്കുക:
# Print each detected AprilTag ID in ascending order by ID
while True:
apriltags = sorted(robot.vision.get_data(ALL_TAGS), key=id)
for tag in apriltags:
print(tag.id)
wait(1, SECONDS)
അല്ലെങ്കിൽ പകരം ഉയരം അനുസരിച്ച് അടുക്കുക:
# Print each detected AprilTag ID in ascending order by height
while True:
apriltags_by_height = sorted(robot.vision.get_data(ALL_TAGS), key=lambda tag: tag.height)
for tag in apriltags_by_height:
print(tag.height)
wait(1, SECONDS)
ഡാറ്റ കാണുന്നു#
get_data ഉപയോഗിച്ച് തിരികെ നൽകുന്ന ട്യൂപ്പിൾ പ്രിന്റ് ചെയ്യുന്നത്, കണ്ടെത്തിയ എല്ലാ വസ്തുക്കളുടെയും എല്ലാ പ്രോപ്പർട്ടികളുടെയും ഒരു ലിസ്റ്റ് പ്രദർശിപ്പിക്കുന്നു:
# Display properties of all detected AprilTag IDs
while True:
vision_data = robot.vision.get_data(ALL_TAGS)
if vision_data[0].exists:
break
wait(0.25, SECONDS)
print(vision_data)

AI വർഗ്ഗീകരണങ്ങൾ#
AIM AI വിഷൻ സെൻസറിന് ഈ AI വർഗ്ഗീകരണങ്ങൾ കണ്ടെത്താൻ കഴിയും:
ഐഡി നമ്പർ |
AI വർഗ്ഗീകരണം |
ഒപ്പ് |
|---|---|---|
0 |
പന്ത് |
|
1 |
നീല ബാരൽ |
|
2 |
ഓറഞ്ച് ബാരൽ |
|
3 |
എഐഎം റോബോട്ട് |
|
വർണ്ണ ഒപ്പുകൾ#
കളർ സിഗ്നേച്ചർ എന്നത് AI വിഷൻ സെൻസറിന് തിരിച്ചറിയാൻ കഴിയുന്ന ഒരു സവിശേഷ നിറമാണ്. ഈ സിഗ്നേച്ചറുകൾ സെൻസറിനെ അവയുടെ നിറത്തെ അടിസ്ഥാനമാക്കി വസ്തുക്കളെ കണ്ടെത്താനും ട്രാക്ക് ചെയ്യാനും അനുവദിക്കുന്നു. ഒരു കളർ സിഗ്നേച്ചർ കോൺഫിഗർ ചെയ്തുകഴിഞ്ഞാൽ, സെൻസറിന് അതിന്റെ വ്യൂ ഫീൽഡിൽ ആ പ്രത്യേക നിറമുള്ള വസ്തുക്കളെ തിരിച്ചറിയാൻ കഴിയും. നിറമുള്ള വസ്തുക്കളെ തത്സമയം പ്രോസസ്സ് ചെയ്യുന്നതിനും കണ്ടെത്തുന്നതിനും get_data ഉപയോഗിച്ച് കളർ സിഗ്നേച്ചറുകൾ ഉപയോഗിക്കുന്നു.

# Display if any objects match the Red_Box signature
while True:
robot.screen.set_cursor(1, 1)
robot.screen.clear_row(1)
# Change to any configured Color Signature
ai_objects = robot.vision.get_data(Red_Box)
if ai_objects[0].exists:
robot.screen.print("Color signature detected!")
കളർ കോഡുകൾ#
ഒരു പ്രത്യേക ക്രമത്തിൽ ക്രമീകരിച്ചിരിക്കുന്ന 2 മുതൽ 4 വരെ വർണ്ണ സിഗ്നേച്ചറുകൾ ചേർന്ന ഒരു ഘടനാപരമായ പാറ്റേണാണ് കളർ കോഡ്. ഈ കോഡുകൾ AI വിഷൻ സെൻസറിനെ മുൻകൂട്ടി നിശ്ചയിച്ച നിറങ്ങളുടെ പാറ്റേണുകൾ തിരിച്ചറിയാൻ അനുവദിക്കുന്നു. സങ്കീർണ്ണമായ വസ്തുക്കളെ തിരിച്ചറിയുന്നതിനോ സ്വയംഭരണ നാവിഗേഷനായി അതുല്യമായ മാർക്കറുകൾ സൃഷ്ടിക്കുന്നതിനോ കളർ കോഡുകൾ ഉപയോഗപ്രദമാണ്.

# Display if any objects match the BlueRed code
while True:
robot.screen.set_cursor(1, 1)
robot.screen.clear_row(1)
# Change to any configured Color Code
ai_objects = robot.vision.get_data(BlueRed)
if ai_objects[0].exists:
robot.screen.print("Color code detected!")
has_sports_ball#
has_sports_ball റോബോട്ടിന് നിലവിൽ ഒരു സ്പോർട്സ് ബോൾ ഉണ്ടോ എന്ന് സൂചിപ്പിക്കുന്ന ഒരു ബൂളിയൻ നൽകുന്നു.
True— റോബോട്ടിന് ഒരു സ്പോർട്സ് ബോൾ ഉണ്ട്.False— റോബോട്ടിന് ഒരു സ്പോർട്സ് ബോൾ ഇല്ല.
Usage:
robot.has_sports_ball()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# Kick when the robot has a sports ball
while True:
if robot.has_sports_ball():
robot.kicker.kick(MEDIUM)
wait(50, MSEC)
has_any_barrel#
has_any_barrel എന്നത് റോബോട്ടിന് നിലവിൽ ഏതെങ്കിലും തരത്തിലുള്ള ബാരൽ ഉണ്ടോ എന്ന് സൂചിപ്പിക്കുന്ന ഒരു ബൂളിയൻ നൽകുന്നു.
True— റോബോട്ടിന് ഒരു ബാരൽ ഉണ്ട്.False— റോബോട്ടിന് ബാരൽ ഇല്ല.
Usage:
robot.has_any_barrel()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# Push a barrel away when detected
while True:
if robot.has_any_barrel():
robot.kicker.place()
wait(50, MSEC)
has_blue_barrel#
has_blue_barrel റോബോട്ടിന് നിലവിൽ ഒരു നീല ബാരൽ ഉണ്ടോ എന്ന് സൂചിപ്പിക്കുന്ന ഒരു ബൂളിയൻ നൽകുന്നു.
True— റോബോട്ടിന് ഒരു നീല ബാരൽ ഉണ്ട്.False— റോബോട്ടിന് നീല ബാരൽ ഇല്ല.
Usage:
robot.has_blue_barrel()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# Push a blue barrel away when detected
while True:
if robot.has_blue_barrel():
robot.kicker.place()
wait(50, MSEC)
has_orange_barrel#
has_orange_barrel റോബോട്ടിന് നിലവിൽ ഒരു ഓറഞ്ച് ബാരൽ ഉണ്ടോ എന്ന് സൂചിപ്പിക്കുന്ന ഒരു ബൂളിയൻ നൽകുന്നു.
True— റോബോട്ടിന് ഒരു ഓറഞ്ച് ബാരൽ ഉണ്ട്.False— റോബോട്ടിന് ഓറഞ്ച് നിറത്തിലുള്ള ബാരൽ ഇല്ല.
Usage:
robot.has_orange_barrel()
പാരാമീറ്ററുകൾ |
വിവരണം |
|---|---|
ഈ രീതിക്ക് പാരാമീറ്ററുകൾ ഇല്ല. |
# Push an orange barrel away when detected
while True:
if robot.has_orange_barrel():
robot.kicker.place()
wait(50, MSEC)
പ്രോപ്പർട്ടികൾ#
robot.vision.get_data രീതി ഉപയോഗിച്ചതിനുശേഷം ഒരു ട്യൂപ്പിളിൽ സൂക്ഷിച്ചിരിക്കുന്ന ഓരോ ഒബ്ജക്റ്റിലും ഉൾപ്പെടുത്തിയിരിക്കുന്ന പന്ത്രണ്ട് പ്രോപ്പർട്ടികൾ ഉണ്ട്.
.id, .score, .type എന്നിവ ഒഴികെയുള്ള എല്ലാ പ്രോപ്പർട്ടി മൂല്യങ്ങളും robot.vision.get_data ഉപയോഗിച്ച സമയത്ത് കണ്ടെത്തിയ വസ്തുവിന്റെ സ്ഥാനം, വലുപ്പം, ഓറിയന്റേഷൻ അല്ലെങ്കിൽ ബെയറിംഗ് എന്നിവ വിവരിക്കുന്നു. സെൻസറിന്റെ 320 ബൈ 240 പിക്സൽ റെസല്യൂഷനെ അടിസ്ഥാനമാക്കി ഈ മൂല്യങ്ങൾ പിക്സലുകളിലോ ഡിഗ്രികളിലോ അളക്കുന്നു.

.exists#
ട്യൂപ്പിളിൽ സൂചിക നിലവിലുണ്ടോ ഇല്ലയോ എന്ന് സൂചിപ്പിക്കുന്ന ഒരു ബൂളിയൻ .exists നൽകുന്നു.
True— സൂചിക നിലവിലുണ്ട്.False— സൂചിക നിലവിലില്ല.
# Check if at least two objects are detected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
ai_objects = robot.vision.get_data(ALL_CARGO)
if ai_objects[0].exists:
if ai_objects[1].exists:
robot.screen.print("At least 2")
else:
robot.screen.print("Less than 2")
wait(0.1, SECONDS)
.width#
.width കണ്ടെത്തിയ വസ്തുവിന്റെ വീതി പിക്സലുകളിൽ നൽകുന്നു, ഇത് 1 നും 320 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Move towards a Blue Barrel until its width is
# larger than 100 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].width < 100:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.height#
.height കണ്ടെത്തിയ വസ്തുവിന്റെ ഉയരം പിക്സലുകളിൽ നൽകുന്നു, ഇത് 1 നും 240 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Move towards a Blue Barrel until its height is
# larger than 100 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].height < 100:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.centerX#
.centerX കണ്ടെത്തിയ വസ്തുവിന്റെ കേന്ദ്രത്തിന്റെ x-കോർഡിനേറ്റ് പിക്സലുകളിൽ നൽകുന്നു, ഇത് 0 നും 320 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Turn slowly until a Blue Barrel is centered in
# front of the robot
robot.set_turn_velocity(30)
robot.turn(RIGHT)
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if 140 < barrel[0].centerX < 180:
robot.stop_all_movement()
wait(10,MSEC)
.centerY#
.centerY കണ്ടെത്തിയ വസ്തുവിന്റെ കേന്ദ്രത്തിന്റെ y-കോർഡിനേറ്റ് പിക്സലുകളിൽ നൽകുന്നു, ഇത് 0 നും 240 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Move towards a Blue Barrel until its
# center y-coordinate is more than 140 pixels
while True:
barrel = robot.vision.get_data(BLUE_BARREL)
if barrel[0].exists:
if barrel[0].centerY < 140:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.bearing#
.bearing ഒരു ദശാംശം നൽകുന്നു (float) AI വിഷൻ സെൻസറിന്റെ വ്യൂവിന്റെ മധ്യഭാഗത്ത് നിന്ന് ഒരു വസ്തു എത്ര ഇടത്തോട്ടോ വലത്തോട്ടോ ആണെന്ന് ഒരു ഡിഗ്രിയായി പ്രതിനിധീകരിക്കുന്നു. 0 എന്ന മൂല്യം അത് കേന്ദ്രീകൃതമാണെന്ന് സൂചിപ്പിക്കുന്നു, പോസിറ്റീവ് മൂല്യങ്ങൾ വസ്തു വലതുവശത്താണെന്നും നെഗറ്റീവ് മൂല്യങ്ങൾ വസ്തു ഇടതുവശത്താണെന്നും സൂചിപ്പിക്കുന്നു.
# Turn to keep the Blue Barrel directly in front
robot.set_turn_velocity(40)
while True:
vision_data = robot.vision.get_data(BLUE_BARREL)
if vision_data[0].exists:
if vision_data[0].bearing > 5:
robot.turn(RIGHT)
elif vision_data[0].bearing < -5:
robot.turn(LEFT)
else:
robot.stop_all_movement()
else:
robot.stop_all_movement()
wait(0.1, SECONDS)
.rotation#
.rotation AI വിഷൻ സെൻസറിന്റെ വ്യൂവിംഗ് പ്ലെയിനിൽ വസ്തുവിന്റെ ഓറിയന്റേഷൻ തിരികെ നൽകുന്നു, ഇത് 0 മുതൽ 359 വരെയുള്ള ഡിഗ്രികളിൽ അളക്കുന്നു. ഒരു വർണ്ണ കോഡിന്റെ നിറങ്ങൾ ഒരു തിരശ്ചീന രേഖയിൽ ക്രമീകരിക്കുമ്പോൾ 0° ആണ് (ഉദാ: ചുവപ്പ്–നീല). നിറങ്ങൾ തിരിക്കുകയാണെങ്കിൽ, കോൺ മാറുന്നു (ഉദാ: നീല-ചുവപ്പ് ക്രമീകരണം 180° നൽകുന്നു).
താഴെയുള്ള ഉദാഹരണത്തിന്, കളർ കോഡ് ഇടതുവശത്ത് ചുവപ്പും വലതുവശത്ത് നീലയും നിറത്തിൽ ക്രമീകരിച്ചിരിക്കുന്നു.
ഈ ചിത്രത്തിൽ, ചുവപ്പിന് മുകളിൽ നീല ചേർക്കുന്നത് യഥാർത്ഥ കളർ കോഡ് 270 ഡിഗ്രി വലത്തേക്ക് തിരിക്കുന്നതിന് തുല്യമാണ്.

# Slide left or right depending on how a Color Code (BlueRed)
# is rotated on the vertical plane
while True:
# Original Color Code is Red to the left, Blue to the right
code = robot.vision.get_data(BlueRed)
if code[0].exists:
# Check if Color Code is now Red on top of Blue
if 50 < code[0].rotation < 100 :
robot.move_at(90)
# Check if Color Code is now Blue on top of Red
elif 270 < code[0].rotation < 330 :
robot.move_at(270)
else:
robot.stop_all_movement()
else:
robot.stop_all_movement()
wait(50, MSEC)
.originX#
.originX കണ്ടെത്തിയ വസ്തുവിന്റെ ബൗണ്ടിംഗ് ബോക്സിന്റെ മുകളിൽ ഇടത് കോണിലുള്ള x-കോർഡിനേറ്റ് പിക്സലുകളിൽ നൽകുന്നു, ഇത് 0 നും 320 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Display if an Orange Barrel is to the
# left or the right
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1,1)
orange_barrel = robot.vision.get_data(ORANGE_BARREL)
if orange_barrel[0].exists:
if orange_barrel[0].originX < 160:
robot.screen.print("To the left!")
else:
robot.screen.print("To the right!")
wait(50, MSEC)
.originY#
.originY കണ്ടെത്തിയ വസ്തുവിന്റെ ബൗണ്ടിംഗ് ബോക്സിന്റെ മുകളിൽ ഇടത് കോണിലുള്ള y-കോർഡിനേറ്റ് പിക്സലുകളിൽ നൽകുന്നു, ഇത് 0 നും 240 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.
കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

# Display if an Orange Barrel is close or far
# from the robot
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
orange_barrel = robot.vision.get_data(ORANGE_BARREL)
if orange_barrel[0].exists:
if orange_barrel[0].originY < 80:
robot.screen.print("Far")
else:
robot.screen.print("Close")
wait(50, MSEC)
.id#
.id കണ്ടെത്തിയ AI ക്ലാസിഫിക്കേഷന്റെയോ AprilTag ഐഡിയുടെയോ ഐഡി ഒരു പൂർണ്ണസംഖ്യയായി നൽകുന്നു.
ഒരു AprilTag ഐഡിക്ക്, .id പ്രോപ്പർട്ടി 0 മുതൽ 37 വരെയുള്ള ശ്രേണിയിലുള്ള കണ്ടെത്തിയ AprilTag ഐഡി നമ്പറിനെ പ്രതിനിധീകരിക്കുന്നു. ഒരു AI ക്ലാസിഫിക്കേഷന്, .id പ്രോപ്പർട്ടി AI ക്ലാസിഫിക്കേഷനുകൾ വിഭാഗത്തിലെ മുൻനിർവചിച്ച ഐഡിയുമായി യോജിക്കുന്നു.
# Move forward when AprilTag ID 1 is detected
while True:
apriltags = robot.vision.get_data(ALL_TAGS)
if apriltags[0].exists:
if apriltags[0].id == 1:
robot.move_at(0)
else:
robot.stop_all_movement()
wait(50, MSEC)
.score#
.score കണ്ടെത്തിയ AI വർഗ്ഗീകരണത്തിന്റെ കോൺഫിഡൻസ് സ്കോർ 1 നും 100 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയായി നൽകുന്നു.
കുറഞ്ഞ സ്കോർ എന്നാൽ കണ്ടെത്തിയ വസ്തുവിനെക്കുറിച്ച് സെൻസറിന് ആത്മവിശ്വാസം കുറവാണെന്നാണ് അർത്ഥമാക്കുന്നത്, അതേസമയം ഉയർന്ന സ്കോർ എന്നാൽ സെൻസറിന് കൂടുതൽ ആത്മവിശ്വാസമുണ്ടെന്നാണ് അർത്ഥമാക്കുന്നത്.
# Look confident if an Orange Barrel is detected
while True:
barrel = robot.vision.get_data(ORANGE_BARREL)
if barrel[0].exists:
if barrel[0].score > 95:
robot.screen.show_emoji(CONFIDENT)
else:
robot.screen.hide_emoji()
wait(50, MSEC)
.type#
.type കണ്ടെത്തിയ വസ്തുവിന്റെ തരം സൂചിപ്പിക്കുന്ന ഒരു പൂർണ്ണസംഖ്യ നൽകുന്നു. ടൈപ്പ് നമ്പർ അല്ലെങ്കിൽ അനുബന്ധ പേരുള്ള സ്ഥിരാങ്കം ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ മൂല്യം താരതമ്യം ചെയ്യാം:
ഒബ്ജക്റ്റ് തരം |
ഉൾപ്പെടുത്തിയ വസ്തുക്കൾ |
|---|---|
|
— സ്പോർട്സ് ബോളുകൾ |
|
— ഏപ്രിൽ ടാഗ് ഐഡികൾ |
|
— വർണ്ണ ഒപ്പുകൾ |
|
— കളർ കോഡുകൾ |
# Display if an AprilTag ID or AI Classification
# is detected
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
vision_data = robot.vision.get_data(ALL_VISION)
if vision_data[0].exists:
if vision_data[0].type == AiVision.AI_OBJECT:
robot.screen.print("AI Object!")
elif vision_data[0].type == AiVision.TAG_OBJECT:
robot.screen.print("AprilTag ID!")
wait(0.1, SECONDS)
# Display a list of all detected objects
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
vision_data = robot.vision.get_data(ALL_VISION)
if vision_data[0].exists:
for obj in vision_data:
if obj.type == AiVision.AI_OBJECT:
robot.screen.print("- AI Object")
elif obj.type == AiVision.TAG_OBJECT:
robot.screen.print("- AprilTag ID")
robot.screen.next_row()
wait(0.1, SECONDS)
കൺസ്ട്രക്ടർമാർ#
Creating a Color Signature#
Colordesc കൺസ്ട്രക്റ്റർ ഉപയോഗിച്ച് ഒരു പുതിയ കളർ സിഗ്നേച്ചർ സൃഷ്ടിക്കുകയും തുടർന്ന് color_description രീതി ഉപയോഗിച്ച് AI വിഷൻ സെൻസറിൽ രജിസ്റ്റർ ചെയ്യുകയും ചെയ്യുന്നു. സെൻസറിനായി Colordesc ഒബ്ജക്റ്റ് 7 വരെ കണ്ടെത്താവുന്ന കളർ സിഗ്നേച്ചറുകളിൽ 1 നിർവചിക്കുന്നു, പക്ഷേ പ്രാബല്യത്തിൽ വരാൻ അത് color_description ഉപയോഗിച്ച് വ്യക്തമായി സജ്ജമാക്കിയിരിക്കണം.
കളർഡെസ്ക് ഉപയോഗം:
Colordesc(index, red, green, blue, hangle, hdsat)
പാരാമീറ്റർ |
വിവരണം |
|---|---|
|
1 മുതൽ 7 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ കളർ സിഗ്നേച്ചർ സൂചികയെ പ്രതിനിധീകരിക്കുന്നു. രണ്ട് കളർ സിഗ്നേച്ചറുകൾ ഒരേ സൂചിക ഉപയോഗിക്കുകയാണെങ്കിൽ, രണ്ടാമത്തേത് ആദ്യത്തേതിനെ മറികടക്കും. |
|
നിറത്തിന്റെ ചുവപ്പ് ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ. |
|
നിറത്തിന്റെ പച്ച ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ. |
|
നിറത്തിന്റെ നീല ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ. |
|
1 മുതൽ 40 വരെയുള്ള ഒരു ഫ്ലോട്ട്, ഡിഗ്രികളിൽ വർണ്ണ ശ്രേണിയെ പ്രതിനിധീകരിക്കുന്നു. |
|
സാച്ചുറേഷൻ ശ്രേണിയെ പ്രതിനിധീകരിക്കുന്ന 0.10 മുതൽ 1.00 വരെയുള്ള ഒരു ഫ്ലോട്ട്. |
color_description ഉപയോഗം:
robot.vision.color_description(object)
പാരാമീറ്റർ |
വിവരണം |
|---|---|
|
കണ്ടെത്താവുന്ന കളർ സിഗ്നേച്ചറായി സജ്ജീകരിക്കേണ്ട |
# Detect a red object
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
robot.vision.color_description(red_box)
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
red_boxes = robot.vision.get_data(red_box)
if red_boxes[0].exists:
robot.screen.print("Red detected!")
else:
robot.screen.print("No red detected.")
wait(0.2, SECONDS)
Creating a Color Code#
Codedesc കൺസ്ട്രക്റ്റർ ഉപയോഗിച്ച് ഒരു പുതിയ കളർ കോഡ് സൃഷ്ടിക്കുകയും തുടർന്ന് code_description രീതി ഉപയോഗിച്ച് സജീവമാക്കുകയും ചെയ്യുന്നു. ഒരു കളർ കോഡ് നിലവിലുള്ള Colordesc ഒബ്ജക്റ്റുകളെ AI വിഷൻ സെൻസറിന് ഒരു ശ്രേണിയായി കണ്ടെത്താൻ കഴിയുന്ന ഒരൊറ്റ ഐഡന്റിഫയറിലേക്ക് ഗ്രൂപ്പുചെയ്യുന്നു, പക്ഷേ പ്രാബല്യത്തിൽ വരാൻ അത് code_description ഉപയോഗിച്ച് വ്യക്തമായി സജ്ജമാക്കിയിരിക്കണം.
കോഡെസ്ക് ഉപയോഗം:
Codedesc(index, c1, c2, c3, c4, c5)
പാരാമീറ്റർ |
വിവരണം |
|---|---|
|
കളർ കോഡിന്റെ സൂചിക, 1 മുതൽ 8 വരെ. കുറിപ്പ്: ഒരേ സൂചിക ഉപയോഗിച്ച് നിങ്ങൾ രണ്ട് |
|
കോഡിലെ ആദ്യത്തെ |
|
കോഡിലെ രണ്ടാമത്തെ |
|
ഓപ്ഷണൽ. മൂന്നാമത്തെ |
|
ഓപ്ഷണൽ. നാലാമത്തെ |
കോഡ്_വിവരണം ഉപയോഗം:
robot.vision.code_description(object)
പാരാമീറ്റർ |
വിവരണം |
|---|---|
|
കണ്ടെത്താനാകുന്ന കളർ കോഡായി രജിസ്റ്റർ ചെയ്യേണ്ട |
# Create Color Signatures
red_box = Colordesc(1, 207, 19, 25, 10.00, 0.20)
purple_box = Colordesc(2, 98, 18, 227, 10.00, 0.20)
robot.vision.color_description(red_box)
robot.vision.color_description(purple_box)
# Detect a red_purple Color Code
red_purple = Codedesc(1, red_box, purple_box)
robot.vision.code_description(red_purple)
while True:
robot.screen.clear_screen()
robot.screen.set_cursor(1, 1)
code_objects = robot.vision.get_data(red_purple)
if code_objects[0].exists:
robot.screen.print("Code detected!")
else:
robot.screen.print("No code detected.")
wait(0.2, SECONDS)