എഐ വിഷൻ#

ആമുഖം#

VEX AIM കോഡിംഗ് റോബോട്ടിന്റെ AI വിഷൻ സെൻസർ വസ്തുക്കൾ, നിറങ്ങൾ, ഏപ്രിൽടാഗ് ഐഡികൾ എന്നിവ കണ്ടെത്തി ട്രാക്ക് ചെയ്യുന്നു. ഇത് റോബോട്ടിനെ അതിന്റെ ചുറ്റുപാടുകൾ വിശകലനം ചെയ്യാനും വസ്തുക്കളെ പിന്തുടരാനും കണ്ടെത്തിയ ദൃശ്യ ഡാറ്റയെ അടിസ്ഥാനമാക്കി പ്രതികരിക്കാനും അനുവദിക്കുന്നു.

AI വിഷൻ സെൻസറിന് 320×240 പിക്സൽ റെസല്യൂഷൻ ഉണ്ട്. താഴെയുള്ള ഡയഗ്രാമിൽ കാണിച്ചിരിക്കുന്നതുപോലെ, ഉത്ഭവം (0, 0) മുകളിൽ ഇടത് കോണിലാണ്, സെൻസറിന്റെ മധ്യഭാഗം (160, 120) ൽ സ്ഥാപിച്ചിരിക്കുന്നു:

എഐഎം എഐ വിഷൻ സെൻസറിന്റെ റെസല്യൂഷൻ കാണിക്കുന്ന ഒരു ഡയഗ്രം, ഡയഗ്രാമിന്റെ മുകളിൽ ഇടതുവശത്ത് 0, 0 കോർഡിനേറ്റ്, മുകളിൽ വലതുവശത്ത് 320, 0, താഴെ ഇടതുവശത്ത് 0, 240, കൃത്യമായ മധ്യത്തിൽ 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, ടാഗ്, നിറം അല്ലെങ്കിൽ കോഡ്) നൽകുന്നു.

കൺസ്ട്രക്‌ടർമാർ — വർണ്ണ ഒപ്പുകളും കോഡുകളും നിർവചിക്കുക.

പ്രവർത്തനങ്ങൾ#

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)

പാരാമീറ്ററുകൾ

വിവരണം

state

മൂല്യങ്ങൾ ഇവയാണ്: True, ഇത് AprilTag ID കണ്ടെത്തൽ പ്രാപ്തമാക്കുന്നു, അല്ലെങ്കിൽ False, ഇത് AprilTag ID കണ്ടെത്തൽ പ്രവർത്തനരഹിതമാക്കുന്നു.

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)

പാരാമീറ്ററുകൾ

വിവരണം

signature

നൽകിയിരിക്കുന്ന ഒപ്പിന്റെ ഡാറ്റ മാത്രം ഉൾപ്പെടുത്തുന്നതിനായി ഡാറ്റാസെറ്റ് ഫിൽട്ടർ ചെയ്യുന്നു. ലഭ്യമായ ഒപ്പുകൾ ഇവയാണ്:

  • ALL_VISION - സ്പോർട്സ് ബോളുകൾ, ബാരലുകൾ, VEX AIM കോഡിംഗ് റോബോട്ടുകൾ, AprilTag ഐഡികൾ, നിറങ്ങൾ, കളർ കോഡുകൾ
  • ALL_CARGO - സ്പോർട്സ് ബോളുകളും ബാരലുകളും
  • ALL_TAGS - എല്ലാ AprilTag ഐഡികളും
  • ALL_COLORS - എല്ലാ കോൺഫിഗർ ചെയ്ത കളർ സിഗ്നേച്ചറുകളും കളർ കോഡുകളും
  • SPORTS_BALL - സ്പോർട്സ് ബോളുകൾ മാത്രം
  • BLUE_BARREL - നീല ബാരലുകൾ മാത്രം
  • ORANGE_BARREL - ഓറഞ്ച് ബാരലുകൾ മാത്രം
  • AIM_ROBOT - എല്ലാ VEX AIM കോഡിംഗ് റോബോട്ടുകളും
  • TAG0 മുതൽ TAG37 - 0 മുതൽ ഒരൊറ്റ AprilTag ഐഡി 37
  • NAME - കളർ സിഗ്നേച്ചർ അല്ലെങ്കിൽ കളർ കോഡ്, ഇവിടെ NAME എന്നത് AI വിഷൻ യൂട്ടിലിറ്റിയിൽ കോൺഫിഗർ ചെയ്ത പേരാണ്.

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)

കണ്ടെത്തിയ AprilTag ID-കൾക്കായുള്ള ഡീബഗ് ഔട്ട്‌പുട്ട് പ്രദർശിപ്പിക്കുന്ന കൺസോൾ വിൻഡോയുടെ സ്‌ക്രീൻഷോട്ട്. 'Object #0' എന്ന ഫീൽഡ് ടെക്‌സ്‌റ്റിൽ ഉണ്ട്, അതിൽ exists: True, type: AprilTag ID, id: 2, centerX: 223, centerX: 54, originX: 210, originY: 42, width: 27, height: 23, bearing: 14.1, and rotation: 0.0 എന്നിങ്ങനെയുള്ള ഫീൽഡുകൾ ഉണ്ട്, തുടർന്ന് ഒരു സെപ്പറേറ്റർ ലൈനും 'Object #1' ന്റെ ആരംഭവും exists: True, type: AprilTag ID, id: 4, and centerX: 122 എന്നിങ്ങനെയും ഉണ്ട്.

AI വർഗ്ഗീകരണങ്ങൾ#

AIM AI വിഷൻ സെൻസറിന് ഈ AI വർഗ്ഗീകരണങ്ങൾ കണ്ടെത്താൻ കഴിയും:

ഐഡി നമ്പർ

AI വർഗ്ഗീകരണം

ഒപ്പ്

0

പന്ത്

SPORTS_BALL

1

നീല ബാരൽ

BLUE_BARREL

2

ഓറഞ്ച് ബാരൽ

ORANGE_BARREL

3

എഐഎം റോബോട്ട്

AIM_ROBOT

വർണ്ണ ഒപ്പുകൾ#

കളർ സിഗ്നേച്ചർ എന്നത് AI വിഷൻ സെൻസറിന് തിരിച്ചറിയാൻ കഴിയുന്ന ഒരു സവിശേഷ നിറമാണ്. ഈ സിഗ്നേച്ചറുകൾ സെൻസറിനെ അവയുടെ നിറത്തെ അടിസ്ഥാനമാക്കി വസ്തുക്കളെ കണ്ടെത്താനും ട്രാക്ക് ചെയ്യാനും അനുവദിക്കുന്നു. ഒരു കളർ സിഗ്നേച്ചർ കോൺഫിഗർ ചെയ്തുകഴിഞ്ഞാൽ, സെൻസറിന് അതിന്റെ വ്യൂ ഫീൽഡിൽ ആ പ്രത്യേക നിറമുള്ള വസ്തുക്കളെ തിരിച്ചറിയാൻ കഴിയും. നിറമുള്ള വസ്തുക്കളെ തത്സമയം പ്രോസസ്സ് ചെയ്യുന്നതിനും കണ്ടെത്തുന്നതിനും get_data ഉപയോഗിച്ച് കളർ സിഗ്നേച്ചറുകൾ ഉപയോഗിക്കുന്നു.

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

# 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 വിഷൻ സെൻസറിനെ മുൻകൂട്ടി നിശ്ചയിച്ച നിറങ്ങളുടെ പാറ്റേണുകൾ തിരിച്ചറിയാൻ അനുവദിക്കുന്നു. സങ്കീർണ്ണമായ വസ്തുക്കളെ തിരിച്ചറിയുന്നതിനോ സ്വയംഭരണ നാവിഗേഷനായി അതുല്യമായ മാർക്കറുകൾ സൃഷ്ടിക്കുന്നതിനോ കളർ കോഡുകൾ ഉപയോഗപ്രദമാണ്.

AI വിഷൻ യൂട്ടിലിറ്റി ഇന്റർഫേസിൽ, ഒരു കണക്റ്റഡ് വിഷൻ സെൻസർ രണ്ട് അടുത്തുള്ള വസ്തുക്കളെ കണ്ടെത്തുന്നത് കാണിക്കുന്നു, ഇടതുവശത്ത് ഒരു നീല ബോക്സും വലതുവശത്ത് ഒരു ചുവന്ന ബോക്സും, ബ്ലൂറെഡ് എന്ന് ലേബൽ ചെയ്തിരിക്കുന്ന ഒരു വെളുത്ത ബൗണ്ടിംഗ് ബോക്സിൽ ഒരുമിച്ച് ഗ്രൂപ്പുചെയ്‌തിരിക്കുന്നു. ഡിറ്റക്ഷൻ വിവരങ്ങളിൽ ആംഗിൾ (A:11°), കോർഡിനേറ്റുകൾ (X:143, Y:103), വീതി (W:233), ഉയരം (H:108) എന്നിവ ഉൾപ്പെടുന്നു. വലത് പാനലിൽ, മൂന്ന് വർണ്ണ സിഗ്നേച്ചറുകൾ പട്ടികപ്പെടുത്തിയിരിക്കുന്നു: റെഡ്_ബോക്സ്, ബ്ലൂ_ബോക്സ്, ബ്ലൂറെഡ്, ക്രമീകരിക്കാവുന്ന ഹ്യൂ, സാച്ചുറേഷൻ ശ്രേണികൾ. ബ്ലൂറെഡ് സിഗ്നേച്ചർ ബ്ലൂ_ബോക്സും റെഡ്_ബോക്സും സംയോജിപ്പിക്കുന്നു. വീഡിയോ ഫീഡിന് താഴെ ഫ്രീസ് വീഡിയോ, കോപ്പി ഇമേജ്, സേവ് ഇമേജ്, ക്ലോസ് എന്നിവ ലേബൽ ചെയ്ത ബട്ടണുകൾ ഉണ്ട്.

# 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 പിക്സൽ റെസല്യൂഷനെ അടിസ്ഥാനമാക്കി ഈ മൂല്യങ്ങൾ പിക്സലുകളിലോ ഡിഗ്രികളിലോ അളക്കുന്നു.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി ഓറഞ്ച് വരയുള്ള ഒരു നീല ബാരൽ സ്ഥാപിച്ചിരിക്കുന്നു, ചുറ്റും ഒരു കറുത്ത ബൗണ്ടിംഗ് ബോക്സ് ഉണ്ട്. x, y അക്ഷങ്ങൾ മുകളിൽ ഇടത്തുനിന്ന് വലത്തോട്ട് 0 മുതൽ 320 വരെയും ഇടതുവശത്ത് മുകളിൽ നിന്ന് താഴോട്ട് 0 മുതൽ 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 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.

കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി ഓറഞ്ച് വരയുള്ള ഒരു നീല ബാരൽ സ്ഥാപിച്ചിരിക്കുന്നു, ചുറ്റും ഒരു കറുത്ത ബൗണ്ടിംഗ് ബോക്സ് ഉണ്ട്. ഫ്രെയിമിന്റെ മുകളിൽ നിന്ന് താഴേക്ക് ബൗണ്ടിംഗ് ബോക്സിന്റെ മധ്യഭാഗത്തേക്ക് ലംബമായി ഒരു ചുവന്ന ഡാഷ്ഡ് ലൈൻ നീളുന്നു, ഇത് മധ്യഭാഗത്തിന്റെ X-കോർഡിനേറ്റിനെ സൂചിപ്പിക്കുന്നു.

# 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 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.

കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി ഓറഞ്ച് വരയുള്ള ഒരു നീല ബാരൽ സ്ഥാപിച്ചിരിക്കുന്നു, ചുറ്റും ഒരു കറുത്ത ബൗണ്ടിംഗ് ബോക്സ് ഉണ്ട്. ഫ്രെയിമിന്റെ ഇടതുവശത്ത് നിന്ന് ബൗണ്ടിംഗ് ബോക്സിന്റെ മധ്യഭാഗത്തേക്ക് ഒരു തിരശ്ചീന ചുവന്ന ഡാഷ്ഡ് ലൈൻ നീളുന്നു, ഇത് മധ്യഭാഗത്തിന്റെ Y- കോർഡിനേറ്റിനെ സൂചിപ്പിക്കുന്നു.

# 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 എന്ന മൂല്യം അത് കേന്ദ്രീകൃതമാണെന്ന് സൂചിപ്പിക്കുന്നു, പോസിറ്റീവ് മൂല്യങ്ങൾ വസ്തു വലതുവശത്താണെന്നും നെഗറ്റീവ് മൂല്യങ്ങൾ വസ്തു ഇടതുവശത്താണെന്നും സൂചിപ്പിക്കുന്നു.

മുകളിൽ നിന്ന് താഴേക്കുള്ള ഡയഗ്രം, വൃത്താകൃതിയിലുള്ള അടിത്തറയിൽ കേന്ദ്രീകരിച്ചിരിക്കുന്ന ഒരു VEX AIM കോഡിംഗ് റോബോട്ടിനെ കാണിക്കുന്നത്, അതിൽ ഒരു ലംബ റഫറൻസ് ലൈനും ഇടതുവശത്ത് ഒരു സ്പോർട്സ് ബോളിന് നേരെ കോണുള്ള ഒരു ചുവന്ന ലൈനും ഉണ്ട്, നെഗറ്റീവ് 30 ഡിഗ്രി എന്ന് ലേബൽ ചെയ്തിരിക്കുന്നു. മുകളിൽ നിന്ന് താഴേക്കുള്ള ഡയഗ്രം, വൃത്താകൃതിയിലുള്ള അടിത്തറയിൽ കേന്ദ്രീകരിച്ചിരിക്കുന്ന ഒരു VEX AIM കോഡിംഗ് റോബോട്ടിനെ കാണിക്കുന്നു, അതിൽ ഒരു ലംബ റഫറൻസ് ലൈനും വലതുവശത്തുള്ള ഒരു സ്പോർട്സ് ബോളിന് നേരെ 30 ഡിഗ്രി കോണിൽ ഒരു ചുവന്ന വരയും ഉണ്ട്.
# 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 ഡിഗ്രി വലത്തേക്ക് തിരിക്കുന്നതിന് തുല്യമാണ്.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി നീല മുകളിലെ പകുതിയും ചുവപ്പ് അടിയിലെ പകുതിയും ഉള്ള ലംബമായി അടുക്കിയിരിക്കുന്ന ഒരു ഒബ്‌ജക്റ്റ് ഒരു ക്യാമറ ഇന്റർഫേസ് പ്രദർശിപ്പിക്കുന്നു. ഒബ്‌ജക്റ്റിന് താഴെയുള്ള ഒരു ലേബലിൽ Red_Blue A:270° CX:185 CY:81 W:93 H:150 എന്ന് എഴുതിയിരിക്കുന്നു, ഇത് ഒബ്‌ജക്റ്റിന്റെ പേര്, ഭ്രമണ കോൺ, മധ്യ X, Y കോർഡിനേറ്റുകൾ, വീതി, ഉയരം എന്നിവ സൂചിപ്പിക്കുന്നു. ഗ്രിഡ്‌ലൈനുകളും സംഖ്യാ അക്ഷങ്ങളും ചിത്രത്തിന്റെ അളവുകൾ അടയാളപ്പെടുത്തുന്നു, X 0 മുതൽ 320 വരെയും Y 0 മുതൽ 240 വരെയും വ്യത്യാസപ്പെടുന്നു.

# 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 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.

കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി ഓറഞ്ച് വരയുള്ള ഒരു നീല ബാരൽ സ്ഥാപിച്ചിരിക്കുന്നു, ചുറ്റും ഒരു കറുത്ത ബൗണ്ടിംഗ് ബോക്സ് ഉണ്ട്. ഫ്രെയിമിന്റെ മുകളിൽ നിന്ന് ബൗണ്ടിംഗ് ബോക്സിന്റെ ഇടതുവശത്തേക്ക് ലംബമായി ഒരു ചുവന്ന ഡാഷ്ഡ് ലൈൻ നീളുന്നു, ഇത് ബൗണ്ടിംഗ് ബോക്സിന്റെ ഉത്ഭവത്തിന്റെ X-കോർഡിനേറ്റിനെ സൂചിപ്പിക്കുന്നു.

# 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 നും ഇടയിലുള്ള ഒരു പൂർണ്ണസംഖ്യയാണ്.

കുറിപ്പ്: പിക്സൽ മൂല്യങ്ങൾ സെൻസറിന്റെ കോർഡിനേറ്റ് സിസ്റ്റവുമായി ആപേക്ഷികമാണ്. റഫറൻസിനായി ആമുഖത്തിലെ ഡയഗ്രം കാണുക.

ഫ്രെയിമിൽ മധ്യഭാഗത്തായി ഓറഞ്ച് വരയുള്ള ഒരു നീല ബാരൽ സ്ഥാപിച്ചിരിക്കുന്നു, ചുറ്റും ഒരു കറുത്ത ബൗണ്ടിംഗ് ബോക്സ് ഉണ്ട്. ഫ്രെയിമിന്റെ ഇടതുവശത്ത് നിന്ന് ബൗണ്ടിംഗ് ബോക്സിന്റെ മുകൾഭാഗം വരെ ഒരു തിരശ്ചീന ചുവന്ന ഡാഷ്ഡ് ലൈൻ നീളുന്നു, ഇത് ബൗണ്ടിംഗ് ബോക്സിന്റെ ഉത്ഭവത്തിന്റെ Y- കോർഡിനേറ്റിനെ സൂചിപ്പിക്കുന്നു.

# 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 കണ്ടെത്തിയ വസ്തുവിന്റെ തരം സൂചിപ്പിക്കുന്ന ഒരു പൂർണ്ണസംഖ്യ നൽകുന്നു. ടൈപ്പ് നമ്പർ അല്ലെങ്കിൽ അനുബന്ധ പേരുള്ള സ്ഥിരാങ്കം ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഈ മൂല്യം താരതമ്യം ചെയ്യാം:

ഒബ്ജക്റ്റ് തരം

ഉൾപ്പെടുത്തിയ വസ്തുക്കൾ

AiVision.AI_OBJECT

— സ്പോർട്സ് ബോളുകൾ
— നീല ബാരലുകൾ
— ഓറഞ്ച് ബാരലുകൾ

AiVision.TAG_OBJECT

— ഏപ്രിൽ ടാഗ് ഐഡികൾ

AiVision.COLOR_OBJECT

— വർണ്ണ ഒപ്പുകൾ

AiVision.CODE_OBJECT

— കളർ കോഡുകൾ

# 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)

പാരാമീറ്റർ

വിവരണം

index

1 മുതൽ 7 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ കളർ സിഗ്നേച്ചർ സൂചികയെ പ്രതിനിധീകരിക്കുന്നു. രണ്ട് കളർ സിഗ്നേച്ചറുകൾ ഒരേ സൂചിക ഉപയോഗിക്കുകയാണെങ്കിൽ, രണ്ടാമത്തേത് ആദ്യത്തേതിനെ മറികടക്കും.

red

നിറത്തിന്റെ ചുവപ്പ് ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ.

green

നിറത്തിന്റെ പച്ച ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ.

blue

നിറത്തിന്റെ നീല ഘടകത്തിന് 0 മുതൽ 255 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ.

hangle

1 മുതൽ 40 വരെയുള്ള ഒരു ഫ്ലോട്ട്, ഡിഗ്രികളിൽ വർണ്ണ ശ്രേണിയെ പ്രതിനിധീകരിക്കുന്നു.

hdsat

സാച്ചുറേഷൻ ശ്രേണിയെ പ്രതിനിധീകരിക്കുന്ന 0.10 മുതൽ 1.00 വരെയുള്ള ഒരു ഫ്ലോട്ട്.

color_description ഉപയോഗം:
robot.vision.color_description(object)

പാരാമീറ്റർ

വിവരണം

object

കണ്ടെത്താവുന്ന കളർ സിഗ്നേച്ചറായി സജ്ജീകരിക്കേണ്ട Colordesc ഒബ്‌ജക്റ്റ്.

# 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)

പാരാമീറ്റർ

വിവരണം

index

കളർ കോഡിന്റെ സൂചിക, 1 മുതൽ 8 വരെ. കുറിപ്പ്: ഒരേ സൂചിക ഉപയോഗിച്ച് നിങ്ങൾ രണ്ട് Codedesc ഒബ്‌ജക്റ്റുകൾ സൃഷ്ടിക്കുകയാണെങ്കിൽ, രണ്ടാമത്തേത് ആദ്യത്തേതിനെ മറികടക്കും.

c1

കോഡിലെ ആദ്യത്തെ Colordesc ഒബ്‌ജക്റ്റ്.

c2

കോഡിലെ രണ്ടാമത്തെ Colordesc ഒബ്‌ജക്റ്റ്.

c3

ഓപ്ഷണൽ. മൂന്നാമത്തെ Colordesc ഒബ്‌ജക്റ്റ്.

c4

ഓപ്ഷണൽ. നാലാമത്തെ Colordesc ഒബ്‌ജക്റ്റ്.

കോഡ്_വിവരണം ഉപയോഗം:
robot.vision.code_description(object)

പാരാമീറ്റർ

വിവരണം

object

കണ്ടെത്താനാകുന്ന കളർ കോഡായി രജിസ്റ്റർ ചെയ്യേണ്ട Codedesc ഒബ്‌ജക്റ്റ്.

# 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)