AI-vision#

Introduktion#

VEX AIM-kodningsrobotens AI-visionssensor detekterar och spårar objekt, färger och AprilTag-ID:n. Detta gör att roboten kan analysera sin omgivning, följa objekt och reagera baserat på detekterad visuell data.

AI-visionssensorn har en upplösning på 320×240 pixlar. Origon (0, 0) är placerat i det övre vänstra hörnet, vilket placerar sensorns mittpunkt vid (160, 120), som visas i diagrammet nedan:

Ett diagram som visar upplösningen för AIM AI-visionssensorn, med koordinaten 0, 0 längst upp till vänster i diagrammet, 320, 0 längst upp till höger och 0, 240 längst ner till vänster, med 160, 120 exakt i mitten.

Nedan följer en lista över alla metoder och egenskaper:

Åtgärder — Visa eller dölj AI Vision-kameraflödet.

  • show_aivision — Visar AI Vision-flödet på robotens skärm.

  • hide_aivision — Döljer AI Vision-flödet från skärmen.

  • tag_detection — Aktiverar eller inaktiverar AprilTag ID-detektering.

Getters — Detekterar om roboten håller ett föremål.

Egenskaper — Objektdata returnerad från get_data.

  • exists — Om objektet existerar i den aktuella detekteringen som ett booleskt värde.

  • width — Bredden på det detekterade objektet.

  • height — Höjden på det detekterade objektet.

  • centerX — X-positionen för objektets centrum.

  • centerY — Y-positionen för objektets centrum.

  • bearing — Horisontell vinkel i förhållande till robotens framsida.

  • rotation — Objektets orientering.

  • originX — X-positionen för objektets övre vänstra hörn.

  • originY — Y-positionen för objektets övre vänstra hörn.

  • id — Klassificering eller tagg-ID för objektet.

  • score — Konfidenspoäng för AI-klassificeringar.

  • type — Returnerar objektets typ (AI, Tagg, Färg eller Kod).

Konstruktörer — Definiera färgsignaturer och koder.

Åtgärder#

show_aivision#

show_aivision visar AI-visionssensorns livedataflöde på robotens skärm. Livedataflödet kommer att täcka alla andra bilder eller text på skärmen.

Obs: Skärmen visar inga andra bilder eller text om inte hide_aivision används för att dölja flödet.

Usage:
robot.screen.show_aivision()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

hide_aivision#

hide_aivision tar bort AI-visionssensorns livedataflöde från robotens skärm.

Usage:
robot.screen.hide_aivision()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 aktiverar eller inaktiverar AprilTag ID-detektering, där tillståndet är ett booleskt värde.

Sensorn kan detektera AprilTag-ID:n 0 till 36 från Circle21h7-familjen.

Usage:
robot.vision.tag_detection(state)

Parametrar

Beskrivning

state

Värdena är: True, vilket aktiverar AprilTag ID-detektering, eller False, vilket inaktiverar AprilTag ID-detektering.

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)

Getters#

get_data#

get_data filtrerar data från AI Vision Sensor-ramen till en enda signatur — en sparad beskrivning av något som sensorn kan känna igen, till exempel ett förtränat objekt, ett AprilTag-ID eller en konfigurerad färgsignatur eller färgkod — och returnerar en tupel.

Färgsignaturer och Färgkoder måste först konfigureras i AI Vision Utility innan de kan användas med den här metoden.

Tupeln lagrar objekt sorterade från störst till minst efter bredd, med början vid index 0. Varje objekts egenskaper kan nås med hjälp av dess index. En tom tupel returneras om inga matchande objekt upptäcks.

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

Parametrar

Beskrivning

signature

Filtrerar datamängden så att den endast inkluderar data från den givna signaturen. Tillgängliga signaturer är:

  • ALL_VISION - Sportbollar, tunnor, VEX AIM-kodningsrobotar, AprilTag-ID:n, färger och färgkoder
  • ALL_CARGO - Sportbollar och tunnor
  • ALL_TAGS - Alla AprilTag-ID:
  • ALL_COLORS - Alla konfigurerade färgsignaturer och färgkoder
  • SPORTS_BALL - Endast sportbollar
  • BLUE_BARREL - Endast blå tunnor
  • ORANGE_BARREL - Endast orange tunnor
  • AIM_ROBOT - Alla VEX AIM-kodningsrobotar
  • TAG0 till TAG37 - Ett enda AprilTag-ID från 0 till 37
  • NAME - Färgsignatur eller färgkod där NAME är namnet som konfigurerats i AI Vision Utility.

count

Valfritt. Anger det maximala antalet objekt som kan returneras från 1 till 24 (standard: 8).

Obs! AprilTag-ID:n 5 till 37 kan erhållas med hjälp av de utskrivna AprilTag-ID:na från 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)

Obs! Den returnerade tupeln kan sorteras efter valfri egenskap, inte bara bredd, med hjälp av Pythons sorted funktion. Till exempel, sortering efter 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)

Eller sortera efter höjd istället:

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

Visar data#

Om du skriver ut tupeln som returneras av get_data visas en lista över alla egenskaper för alla upptäckta objekt:

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

Skärmdump av konsolfönstret som visar felsökningsutdata för upptäckta AprilTag-ID:n. Texten listar 'Objekt #0' med fält som exists: True, type: AprilTag ID, id: 2, centerX: 223, centerY: 54, originX: 210, originY: 42, width: 27, height: 23, bearing: 14.1, och rotation: 0.0, följt av en avgränsningslinje och början av 'Objekt #1' med exists: True, type: AprilTag ID, id: 4, och centerX: 122.

AI-klassificeringar#

AIM AI Vision Sensor kan upptäcka dessa AI-klassificeringar:

ID-nummer

AI-klassificering

Signatur

0

Boll

SPORTS_BALL

1

Blå fat

BLUE_BARREL

2

Orange fat

ORANGE_BARREL

3

AIM-roboten

AIM_ROBOT

Färgsignaturer#

En färgsignatur är en unik färg som AI-visionssensorn kan känna igen. Dessa signaturer gör det möjligt för sensorn att upptäcka och spåra objekt baserat på deras färg. När en färgsignatur har konfigurerats kan sensorn identifiera objekt med den specifika färgen i sitt synfält. Färgsignaturer används med get_data för att bearbeta och upptäcka färgade objekt i realtid.

AI Vision Utility som visar en ansluten visionssensor som detekterar två färgade objekt. Vänster sida visar en live-kameraström med en blå ruta till vänster och en röd ruta till höger, var och en markerad med vita avgränsningsrutor. Svarta etiketter visar deras respektive namn, koordinater och dimensioner. Höger sida innehåller inställningar för färgsignatur, med skjutreglage för nyans och mättnadsområde för både den röda och blå rutan. Knappar för att lägga till färger, frysa video, kopiera och spara bilden finns längst ner, tillsammans med en stängningsknapp i det nedre högra hörnet.

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

Färgkoder#

En färgkod är ett strukturerat mönster som består av 2 till 4 färgsignaturer arrangerade i en specifik ordning. Dessa koder gör det möjligt för AI-visionssensorn att känna igen fördefinierade färgmönster. Färgkoder är användbara för att identifiera komplexa objekt eller skapa unika markörer för autonom navigering.

AI Vision Utility-gränssnittet visar en ansluten visionssensor som detekterar två intilliggande objekt, en blå ruta till vänster och en röd ruta till höger, grupperade i en enda vit avgränsningsruta märkt BlueRed. Detekteringsinformationen inkluderar vinkel (A:11°), koordinater (X:143, Y:103), bredd (B:233) och höjd (H:108). På den högra panelen listas tre färgsignaturer: Red_Box, Blue_Box och BlueRed, med justerbara nyans- och mättnadsområden. BlueRed-signaturen kombinerar Blue_Box och Red_Box. Nedanför videoflödet finns knappar märkta Frys video, Kopiera bild, Spara bild och Stäng.

# 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 returnerar ett booleskt värde som anger om roboten för närvarande har en sportboll.

  • True — Roboten har en sportboll.

  • False — Roboten har ingen sportboll.

Usage:
robot.has_sports_ball()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar ett booleskt värde som anger om roboten för närvarande har någon typ av tunna.

  • True — Roboten har en tunna.

  • False — Roboten har ingen pipa.

Usage:
robot.has_any_barrel()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar ett booleskt värde som anger om roboten för närvarande har en blå tunna.

  • True — Roboten har en blå pipa.

  • False — Roboten har ingen blå pipa.

Usage:
robot.has_blue_barrel()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

# 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 returnerar ett booleskt värde som anger om roboten för närvarande har en orange tunna.

  • True — Roboten har en orange pipa.

  • False — Roboten har ingen orange pipa.

Usage:
robot.has_orange_barrel()

Parametrar

Beskrivning

Den här metoden har inga parametrar.

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

    wait(50, MSEC)

Fastigheter#

Det finns tolv egenskaper som ingår i varje objekt som lagras i en tupel efter att metoden robot.vision.get_data har använts.

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.

En blå cylinder med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. X- och y-axlarna är märkta 0 till 320 från vänster till höger längs toppen, och 0 till 240 från topp till botten längs vänster sida.

.exists#

.exists returnerar ett booleskt värde som anger om indexet finns i tupeln eller inte.

  • True — Indexet finns.

  • False — Indexet finns inte.

# 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 returnerar bredden på det detekterade objektet i pixlar, vilket är ett heltal mellan 1 och 320.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå trumma med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. Två vertikala röda streckade linjer sträcker sig från ramens överkant ner till vänster och höger kant av avgränsningsramen. En dubbelhövdad svart pil mellan dessa linjer anger breddmåttet.

# 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 returnerar höjden på det detekterade objektet i pixlar, vilket är ett heltal mellan 1 och 240.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå tunna med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. Två horisontella röda streckade linjer sträcker sig från ramens vänstra sida till avgränsningsramens övre och nedre kanter. En dubbelhövdad svart pil mellan dessa linjer anger höjdmåttet.

# 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 returnerar x-koordinaten för det detekterade objektets centrum i pixlar, vilket är ett heltal mellan 0 och 320.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå trumma med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. En vertikal röd streckad linje sträcker sig från ramens överkant ner till mitten av avgränsningsramen och indikerar X-koordinaten för mitten.

# 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 returnerar y-koordinaten för det detekterade objektets centrum i pixlar, vilket är ett heltal mellan 0 och 240.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå trumma med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. En horisontell röd streckad linje sträcker sig från ramens vänstra sida till mitten av avgränsningsramen och indikerar Y-koordinaten för mitten.

# 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 returnerar ett decimaltal (float) som representerar hur långt ett objekt är till vänster eller höger om AI-visionssensorns vy, uttryckt i grader. Värdet 0 betyder att det är centrerat, positiva värden betyder att objektet är till höger och negativa värden betyder att objektet är till vänster.

Diagram uppifrån och ner som visar en VEX AIM-kodningsrobot centrerad i en cirkulär bas med en vertikal referenslinje och en röd linje vinklad mot en sportboll till vänster, märkt minus 30 grader. Diagram uppifrån och ner som visar en VEX AIM-kodningsrobot centrerad i en cirkulär bas med en vertikal referenslinje och en röd linje vinklad mot en sportboll till höger, märkt 30 grader.
# 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 returnerar objektets orientering på AI-visionssensorns synplan, mätt i grader från 0 till 359. En färgkod är 0° när dess färger är arrangerade i en horisontell linje (t.ex. röd–blå). Om färgerna roteras ändras vinkeln (t.ex. om man arrangerar blå-röd returneras 180°).

För exemplet nedan har färgkoden konfigurerats med rött till vänster och blått till höger.

I den här bilden motsvarar det att rotera den ursprungliga färgkoden 270 grader åt höger om man lägger blått ovanpå rött.

Ett kameragränssnitt visar ett vertikalt staplat objekt med en blå övre halva och en röd nedre halva, centrerat i bilden. En etikett under objektet lyder Röd_Blå A:270° CX:185 CY:81 B:93 H:150, vilket anger objektets namn, rotationsvinkel, X- och Y-koordinater i mitten, bredd och höjd. Rutnät och numeriska axlar markerar bildens dimensioner, där X sträcker sig från 0 till 320 och Y från 0 till 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 returnerar x-koordinaten för det övre vänstra hörnet av det detekterade objektets avgränsningsram i pixlar, vilket är ett heltal mellan 0 och 320.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå trumma med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. En vertikal röd streckad linje sträcker sig från ramens överkant till den vänstra kanten av avgränsningsramen och indikerar X-koordinaten för avgränsningsramens origo.

# 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 returnerar y-koordinaten för det övre vänstra hörnet av det detekterade objektets avgränsningsram i pixlar, vilket är ett heltal mellan 0 och 240.

Obs! Pixelvärdena är relativa till sensorns koordinatsystem. Se diagrammet i inledningen som referens.

En blå trumma med en orange rand är centrerad i ramen, omgiven av en svart avgränsningsram. En horisontell röd streckad linje sträcker sig från ramens vänstra sida till avgränsningsramens övre kant och indikerar Y-koordinaten för avgränsningsramens origo.

# 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 returnerar ID:t för den detekterade AI-klassificeringen eller AprilTag-ID:t som ett heltal.

För ett AprilTag-ID representerar egenskapen .id det detekterade AprilTag-ID-numret i intervallet 0 till 37. För en AI-klassificering motsvarar egenskapen .id det fördefinierade ID:t i avsnittet AI-klassificeringar.

# 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 returnerar konfidenspoängen för den detekterade AI-klassificeringen som ett heltal mellan 1 och 100.

En lägre poäng innebär att sensorn är mindre säker på det detekterade objektet, medan en högre poäng innebär att sensorn är mer säker.

# 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 returnerar ett heltal som anger vilken typ av objekt som upptäckts. Du kan jämföra detta värde med antingen typnumret eller motsvarande namngivna konstant:

Objekttyp

Inkluderade objekt

AiVision.AI_OBJECT

— Sportbollar
— Blå tunnor
— Orange tunnor

AiVision.TAG_OBJECT

— AprilTag-ID:n

AiVision.COLOR_OBJECT

— Färgsignaturer

AiVision.CODE_OBJECT

— Färgkoder

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

Konstruktörer#

Creating a Color Signature#

En ny färgsignatur skapas med hjälp av konstruktorn Colordesc och registreras sedan hos AI Vision Sensor med hjälp av metoden color_description . Ett Colordesc objekt definierar 1 av upp till 7 detekterbara färgsignaturer för sensorn, men det måste ställas in explicit med hjälp av color_description för att träda i kraft.

Användning av Colordesc:
Colordesc(index, red, green, blue, hangle, hdsat)

Parameter

Beskrivning

index

Ett heltal från 1 till 7 som representerar färgsignaturindexet. Om två färgsignaturer använder samma index, kommer den andra att åsidosätta den första.

red

Ett heltal från 0 till 255 för den röda komponenten av färgen.

green

Ett heltal från 0 till 255 för den gröna komponenten av färgen.

blue

Ett heltal från 0 till 255 för den blå komponenten av färgen.

hangle

Ett flyttal från 1 till 40 som representerar nyansintervallet i grader.

hdsat

Ett flyttal från 0,10 till 1,00 som representerar mättnadsintervallet.

färgbeskrivning Användning:
robot.vision.color_description(object)

Parameter

Beskrivning

object

Colordesc objektet som ska ställas in som en detekterbar färgsignatur.

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

En ny färgkod skapas med hjälp av konstruktorn Codedesc och aktiveras sedan med metoden code_description . En färgkod grupperar 2 till 4 befintliga Colordesc objekt till en enda identifierare som AI-visionssensorn kan detektera som en sekvens, men den måste explicit anges med hjälp av code_description för att träda i kraft.

Användning av Codedesc:
Codedesc(index, c1, c2, c3, c4, c5)

Parameter

Beskrivning

index

Indexet för färgkoden, från 1 till 8. Obs: Om du skapar två Codedesc objekt med samma index, kommer det andra att åsidosätta det första.

c1

Det första Colordesc objektet i koden.

c2

Det andra Colordesc objektet i koden.

c3

Valfritt. Ett tredje Colordesc objekt.

c4

Valfritt. Ett fjärde Colordesc objekt.

kodbeskrivning Användning:
robot.vision.code_description(object)

Parameter

Beskrivning

object

Ett Codedesc objekt ska registreras som en detekterbar färgkod.

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