Mākslīgā intelekta vīzija#

Ievads#

VEX AIM kodēšanas robota mākslīgā intelekta redzes sensors nosaka un izseko objektus, krāsas un AprilTag ID. Tas ļauj robotam analizēt apkārtni, sekot objektiem un reaģēt, pamatojoties uz noteiktajiem vizuālajiem datiem.

Mākslīgā intelekta redzes sensora izšķirtspēja ir 320 × 240 pikseļi. Sākotnējais punkts (0, 0) atrodas augšējā kreisajā stūrī, novietojot sensora centru punktā (160, 120), kā parādīts tālāk redzamajā diagrammā:

Diagramma, kurā parādīta AIM AI redzes sensora izšķirtspēja, kur diagrammas augšējā kreisajā stūrī ir koordināta 0, 0, augšējā labajā stūrī — 320, 0, apakšējā kreisajā stūrī — 0, 240 un precīzi centrā — koordinātas 160, 120.

Zemāk ir visu metožu un īpašību saraksts:

Darbības — Rādīt vai paslēpt AI Redzēšanas kameras plūsmu.

Geters — Nosaka, vai robots tur priekšmetu.

Īpašības — No get_data atgrieztie objekta dati.

  • exists — Vai objekts pašreizējā noteikšanā pastāv kā Būla vērtība.

  • width — Noteiktā objekta platums.

  • height — Noteiktā objekta augstums.

  • centerX — objekta centra X pozīcija.

  • centerY — objekta centra Y pozīcija.

  • bearing — Horizontālais leņķis attiecībā pret robota priekšpusi.

  • rotation — Objekta orientācija.

  • originX — objekta augšējā kreisā stūra X pozīcija.

  • originY — objekta augšējā kreisā stūra Y pozīcija.

  • id — Objekta klasifikācijas vai birkas ID.

  • score — AI klasifikāciju ticamības rādītājs.

  • type — Atgriež objekta tipu (AI, Birka, Krāsa vai Kods).

Konstruktori — definējiet krāsu parakstus un kodus.

Darbības#

show_aivision#

show_aivision robota ekrānā attēlo mākslīgā intelekta redzes sensora tiešraides datu plūsmu. Tiešraides datu plūsma aizsegs visus pārējos attēlus vai tekstu ekrānā.

Piezīme: Ekrānā netiks rādīti citi attēli vai teksts, ja vien plūsmas paslēpšanai netiks izmantota funkcija hide_aivision.

Usage:
robot.screen.show_aivision()

Parametri

Apraksts

Šai metodei nav parametru.

# Watch the AI Vision Sensor detect AI Classifications
# and AprilTag IDs as you move the robot
robot.screen.show_aivision()

hide_aivision#

hide_aivision noņem AI redzes sensora tiešraides datu plūsmu no robota ekrāna.

Usage:
robot.screen.hide_aivision()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 iespējo vai atspējo AprilTag ID noteikšanu, kur stāvoklis ir Būla vērtība.

Sensors var noteikt AprilTag ID no 0 līdz 36 no Circle21h7 saimes.

Usage:
robot.vision.tag_detection(state)

Parametri

Apraksts

state

Vērtības ir: True, kas iespējo AprilTag ID noteikšanu, vai False, kas atspējo AprilTag ID noteikšanu.

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)

Getteri#

get_data#

get_data filtrē datus no AI redzes sensora kadra līdz vienam parakstam — saglabātam aprakstam par kaut ko tādu, ko sensors var atpazīt, piemēram, iepriekš apmācītu objektu, AprilTag ID vai konfigurētu krāsas parakstu vai krāsas kodu — un atgriež tuple.

Krāsu paraksti un Krāsu kodi vispirms ir jākonfigurē AI Vision Utility, pirms tos var izmantot ar šo metodi.

Kortežs tuple saglabā objektus, kas sakārtoti no lielākā līdz mazākajam pēc platuma, sākot ar indeksu 0. Katra objekta properties var piekļūt, izmantojot tā indeksu. Ja netiek atrasti atbilstoši objekti, tiek atgriezts tukšs kortežs.

Usage:
robot.vision.get_data(signature, count)

Parametri

Apraksts

signature

Filtrē datu kopu, lai tajā tiktu iekļauti tikai dotā paraksta dati. Pieejamie paraksti ir:

  • ALL_VISION  — sporta bumbas, mucas, VEX AIM kodēšanas roboti, AprilTag ID, krāsas un krāsu kodi
  • ALL_CARGO  — sporta bumbas un mucas
  • ALL_TAGS  — visi AprilTag ID
  • ALL_COLORS  — visi konfigurētie krāsu paraksti un krāsu kodi
  • SPORTS_BALL  — tikai sporta bumbas
  • BLUE_BARREL  — tikai zilas mucas
  • ORANGE_BARREL  — tikai oranžas mucas
  • AIM_ROBOT  — visi VEX AIM kodēšanas roboti
  • TAG0 līdz TAG37  — viens AprilTag ID no 0 līdz 37
  • NAME — Krāsas paraksts vai krāsas kods, kur NAME ir nosaukums, kas konfigurēts AI Vision Utility.

count

Neobligāti. Iestata maksimālo atgriezto objektu skaitu no 1 līdz 24 (pēc noklusējuma: 8).

Piezīme: AprilTag ID no 5 līdz 37 var iegūt, izmantojot izdrukātos AprilTag ID no AIM Printables.

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

Piezīme: Atgriezto kortežu var kārtot pēc jebkuras īpašības, ne tikai pēc platuma, izmantojot Python sorted funkciju. Piemēram, kārtojot pēc AprilTag ID:

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

Vai arī kārtot pēc augstuma:

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

Datu skatīšana#

Izdrukājot get_data atgriezto kortežu, tiek parādīts visu atrasto objektu īpašību saraksts:

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

Konsoles loga ekrānuzņēmums, kurā redzama atkļūdošanas izvade noteiktajiem AprilTag ID. Tekstā ir norādīts “Object #0” ar tādiem laukiem kā exists: True, type: AprilTag ID, id: 2, centerX: 223, centerY: 54, originX: 210, originY: 42, width: 27, height: 23, bearing: 14.1, and rotation: 0.0, kam seko atdalītājlīnija un “Object #1” sākums ar exists: True, type: AprilTag ID, id: 4, and centerX: 122.

Mākslīgā intelekta klasifikācijas#

AIM AI redzes sensors var noteikt šādas AI klasifikācijas:

ID numurs

Mākslīgā intelekta klasifikācija

Paraksts

0

Bumba

SPORTS_BALL

1

Zilā muca

BLUE_BARREL

2

Oranža muca

ORANGE_BARREL

3

AIM robots

AIM_ROBOT

Krāsu paraksti#

Krāsas paraksts ir unikāla krāsa, ko spēj atpazīt mākslīgā intelekta redzes sensors. Šie paraksti ļauj sensoram noteikt un izsekot objektus, pamatojoties uz to krāsu. Kad krāsas paraksts ir konfigurēts, sensors var identificēt objektus ar šo konkrēto krāsu tā redzes laukā. Krāsu paraksti tiek izmantoti kopā ar get_data, lai apstrādātu un noteiktu krāsainus objektus reāllaikā.

AI redzes utilīta rāda pievienotu redzes sensoru, kas uztver divus krāsainus objektus. Kreisajā pusē tiek rādīta tiešraides kameras plūsma ar zilu lodziņu kreisajā pusē un sarkanu lodziņu labajā pusē, katru no kurām iezīmē baltas norobežojošas rūtiņas. Melnās etiķetes parāda to attiecīgos nosaukumus, koordinātas un izmērus. Labajā pusē ir krāsu paraksta iestatījumi ar slīdņiem gan sarkano, gan zilo lodziņu nokrāsas un piesātinājuma diapazonam. Pogas krāsu pievienošanai, video iesaldēšanai, kopēšanai un attēla saglabāšanai atrodas apakšā, kā arī aizvēršanas poga apakšējā labajā stūrī.

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

Krāsu kodi#

Krāsu kods ir strukturēts raksts, kas sastāv no 2 līdz 4 krāsu parakstiem, kas sakārtoti noteiktā secībā. Šie kodi ļauj mākslīgā intelekta redzes sensoram atpazīt iepriekš definētus krāsu modeļus. Krāsu kodi ir noderīgi sarežģītu objektu identificēšanai vai unikālu marķieru izveidei autonomai navigācijai.

AI Vision Utility saskarnē ir redzams pievienots redzes sensors, kas nosaka divus blakus esošus objektus – zilu lodziņu kreisajā pusē un sarkanu lodziņu labajā pusē, kas sagrupēti vienā baltā ierobežojošā lodziņā ar apzīmējumu BlueRed. Noteikšanas informācija ietver leņķi (A:11°), koordinātas (X:143, Y:103), platumu (W:233) un augstumu (H:108). Labajā panelī ir norādīti trīs krāsu paraksti: Red_Box, Blue_Box un BlueRed, ar regulējamiem nokrāsas un piesātinājuma diapazoniem. BlueRed paraksts apvieno Blue_Box un Red_Box. Zem video plūsmas ir pogas ar apzīmējumiem Freeze Video (Iesaldēt video), Copy Image (Kopēt attēlu), Save Image (Saglabāt attēlu) un Close (Aizvērt).

# 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 atgriež Būla vērtību, kas norāda, vai robotam pašlaik ir sporta bumba.

  • True — Robotam ir sporta bumba.

  • False — Robotam nav sporta bumbas.

Usage:
robot.has_sports_ball()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež Būla vērtību, kas norāda, vai robotam pašlaik ir kāda veida muca.

  • True — Robotam ir muca.

  • False — Robotam nav mucas.

Usage:
robot.has_any_barrel()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež Būla vērtību, kas norāda, vai robotam pašlaik ir zila muca.

  • True — Robotam ir zils muciņš.

  • False — Robotam nav zila stobra.

Usage:
robot.has_blue_barrel()

Parametri

Apraksts

Šai metodei nav parametru.

# 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 atgriež Būla vērtību, kas norāda, vai robotam pašlaik ir oranža muca.

  • True — Robotam ir oranža muca.

  • False — Robotam nav oranža mucas.

Usage:
robot.has_orange_barrel()

Parametri

Apraksts

Šai metodei nav parametru.

# Push an orange barrel away when detected
while True:
    if robot.has_orange_barrel():
        robot.kicker.place()

    wait(50, MSEC)

Īpašumi#

Pēc metodes robot.vision.get_data izmantošanas katrā objektā, kas tiek glabāts kortežā, ir iekļautas divpadsmit īpašības.

All property values except .id, .score, and .type describe the detected object’s position, size, orientation, or bearing at the moment robot.vision.get_data was used. These values are measured in pixels or degrees, based on the sensor’s 320 by 240 pixel resolution.

Kadrā centrā ir novietots zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošs lodziņš. X un y asis ir apzīmētas attiecīgi no 0 līdz 320 no kreisās uz labo pusi augšpusē un no 0 līdz 240 no augšas uz leju kreisajā pusē.

.exists#

.exists atgriež Būla vērtību, kas norāda, vai indekss eksistē kortežā vai nē.

  • True — Indekss pastāv.

  • False — Indekss nepastāv.

# 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 atgriež noteiktā objekta platumu pikseļos, kas ir vesels skaitlis no 1 līdz 320.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Rāmī centrēts zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošais lodziņš. Divas vertikālas sarkanas pārtrauktas līnijas stiepjas no rāmja augšdaļas līdz ierobežojošā lodziņa kreisajai un labajai malai. Divvirzienu melna bultiņa starp šīm līnijām norāda platuma mērījumu.

# 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 atgriež noteiktā objekta augstumu pikseļos, kas ir vesels skaitlis no 1 līdz 240.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Kadrā centrā ir novietots zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošais lodziņš. Divas horizontālas sarkanas pārtrauktas līnijas stiepjas no kadra kreisās puses līdz ierobežojošā lodziņa augšējai un apakšējai malai. Divvirzienu melna bultiņa starp šīm līnijām norāda augstuma mērījumu.

# 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 atgriež noteiktā objekta centra x koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 320.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Kadrā centrēts zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošs lodziņš. Vertikāla sarkana pārtraukta līnija stiepjas no kadra augšdaļas līdz ierobežojošā lodziņa centram, norādot centra X koordinātu.

# 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 atgriež noteiktā objekta centra y koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 240.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Kadrā centrēts zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošais lodziņš. Horizontāla sarkana pārtraukta līnija stiepjas no kadra kreisās puses līdz ierobežojošā lodziņa centram, norādot centra Y koordinātu.

# 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 atgriež decimālskaitli (float), kas grādos norāda, cik tālu objekts atrodas pa kreisi vai pa labi no AI redzes sensora skata centra. Vērtība 0 nozīmē, ka tas ir centrēts, pozitīvas vērtības nozīmē, ka objekts atrodas pa labi, un negatīvas vērtības nozīmē, ka objekts atrodas pa kreisi.

Diagramma no augšas uz leju, kurā redzams VEX AIM kodēšanas robots, kura centrā ir apļveida pamatne ar vertikālu atskaites līniju un sarkanu līniju, kas vērsta leņķī pret sporta bumbu kreisajā pusē, apzīmēta ar negatīvajiem 30 grādiem. Diagramma no augšas uz leju, kurā redzams VEX AIM kodēšanas robots, kura centrā ir apļveida pamatne ar vertikālu atskaites līniju un sarkanu līniju, kas leņķī vērsta pret sporta bumbu labajā pusē, apzīmēta ar 30 grādiem.
# 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 atgriež objekta orientāciju mākslīgā intelekta redzes sensora skata plaknē, mērot grādos no 0 līdz 359. Krāsu kods ir 0°, ja tā krāsas ir sakārtotas horizontālā līnijā (piemēram, sarkana–zila). Ja krāsas tiek pagrieztas, leņķis mainās (piemēram, izkārtojums zils–sarkans atgriež 180°).

Tālāk redzamajā piemērā krāsu kods ir konfigurēts ar sarkanu krāsu kreisajā pusē un zilu krāsu labajā pusē.

Šajā attēlā zilās krāsas uzlikšana virs sarkanās ir līdzvērtīga sākotnējā krāsu koda pagriešanai par 270 grādiem pa labi.

Kameras saskarnē kadra centrā tiek parādīts vertikāli sakrauts objekts ar zilu augšējo pusi un sarkanu apakšējo pusi. Zem objekta ir uzraksts Red_Blue A:270° CX:185 CY:81 W:93 H:150, kas norāda objekta nosaukumu, rotācijas leņķi, centra X un Y koordinātas, platumu un augstumu. Režģlīnijas un skaitliskās asis apzīmē attēla izmērus, kur X svārstās no 0 līdz 320 un Y no 0 līdz 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 atgriež noteiktā objekta ierobežojošā lodziņa augšējā kreisā stūra x koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 320.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Kadrā centrēts zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošais lodziņš. Vertikāla sarkana pārtraukta līnija stiepjas no kadra augšdaļas līdz ierobežojošā lodziņa kreisajai malai, norādot ierobežojošā lodziņa sākuma punkta X koordinātu.

# 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 atgriež noteiktā objekta ierobežojošā lodziņa augšējā kreisā stūra y koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 240.

Piezīme: Pikseļu vērtības ir relatīvas attiecībā pret sensora koordinātu sistēmu. Atsaucei skatiet diagrammu ievadā.

Kadrā centrēts zils cilindrs ar oranžu svītru, ko ieskauj melns ierobežojošais lodziņš. Horizontāla sarkana pārtraukta līnija stiepjas no kadra kreisās puses līdz ierobežojošā lodziņa augšējai malai, norādot ierobežojošā lodziņa sākuma punkta Y koordinātu.

# 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 atgriež noteiktās AI klasifikācijas ID vai AprilTag ID kā veselu skaitli.

AprilTag ID gadījumā īpašība .id apzīmē noteikto AprilTag ID numuru diapazonā no 0 līdz 37. AI klasifikācijas gadījumā īpašība .id atbilst iepriekš definētajam ID sadaļā AI klasifikācijas.

# 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 atgriež noteiktās AI klasifikācijas ticamības rādītāju kā veselu skaitli no 1 līdz 100.

Zemāks rādītājs nozīmē, ka sensors ir mazāk pārliecināts par noteikto objektu, savukārt augstāks rādītājs nozīmē, ka sensors ir pārliecinātāks.

# 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 atgriež veselu skaitli, kas norāda atrastā objekta tipu. Šo vērtību var salīdzināt, izmantojot tipa numuru vai atbilstošo nosaukto konstanti:

Objekta tips

Iekļautie objekti

AiVision.AI_OBJECT

— Sporta bumbas
— Zilas mucas
— Oranžas mucas

AiVision.TAG_OBJECT

— AprilTag ID

AiVision.COLOR_OBJECT

— Krāsu paraksti

AiVision.CODE_OBJECT

— Krāsu kodi

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

Konstruktori#

Creating a Color Signature#

Jauns krāsas paraksts tiek izveidots, izmantojot konstruktoru Colordesc , un pēc tam reģistrēts ar AI redzes sensoru, izmantojot metodi color_description Objekts Colordesc definē 1 no ne vairāk kā 7 nosakāmiem krāsu parakstiem sensoram, taču, lai tas stātos spēkā, tas ir skaidri jāiestata, izmantojot metodi color_description.

Krāsu apraksta lietojums:
Colordesc(index, red, green, blue, hangle, hdsat)

Parametrs

Apraksts

index

Vesels skaitlis no 1 līdz 7, kas apzīmē krāsas paraksta indeksu. Ja divi krāsas paraksti izmanto vienu un to pašu indeksu, otrais ignorēs pirmo.

red

Vesels skaitlis no 0 līdz 255, kas apzīmē krāsas sarkano komponenti.

green

Vesels skaitlis no 0 līdz 255, kas apzīmē krāsas zaļo komponenti.

blue

Vesels skaitlis no 0 līdz 255, kas apzīmē krāsas zilo komponenti.

hangle

Pludiņskaitlis no 1 līdz 40, kas apzīmē nokrāsas diapazonu grādos.

hdsat

Pludiņskaitlis no 0,10 līdz 1,00, kas apzīmē piesātinājuma diapazonu.

krāsas_apraksts Lietojums:
robot.vision.color_description(object)

Parametrs

Apraksts

object

Colordesc objekts, kas jāiestata kā nosakāms krāsas paraksts.

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

Jauns krāsu kods tiek izveidots, izmantojot konstruktoru Codedesc , un pēc tam aktivizēts, izmantojot metodi code_description Krāsu kods grupē 2 līdz 4 esošos Colordesc objektus vienā identifikatorā, ko AI redzes sensors var noteikt kā secību, taču, lai tas stātos spēkā, tas ir skaidri jāiestata, izmantojot code_description.

Codedesc lietojums:
Codedesc(index, c1, c2, c3, c4, c5)

Parametrs

Apraksts

index

Krāsu koda indekss no 1 līdz 8. Piezīme. Ja izveidojat divus Codedesc objektus ar vienādu indeksu, otrais ignorēs pirmo.

c1

Pirmais Colordesc objekts kodā.

c2

Otrais Colordesc objekts kodā.

c3

Neobligāti. Trešais objekts ar vērtību Colordesc.

c4

Neobligāti. Ceturtais objekts ar vērtību Colordesc.

koda_apraksts Lietojums:
robot.vision.code_description(object)

Parametrs

Apraksts

object

Codedesc objekts, kas jāreģistrē kā nosakāms krāsu kods.

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