Kodning med AI-visionssensorn i VEXcode EXP Python

Se till att du har färgsignaturer och färgkoder konfigurerade med din AI-visionssensor så att de kan användas med dina block. För att lära dig mer om hur du konfigurerar dem kan du läsa artiklarna nedan:

AI-visionssensorn kan även upptäcka AI-klassificeringar och AprilTags. För att lära dig hur du aktiverar dessa detekteringslägen, gå hit:

För att lära dig mer om dessa individuella kommandon och hur du använder dem i VEXcode, gå till API-webbplatsen.


Skaffa visuell data med AI-visionssensorn

Varje AI Vision Sensor-kommando börjar med namnet på den konfigurerade AI Vision Sensorn. För alla exempel i den här artikeln kommer namnet på den AI-visionssensor som används att vara ai_vision_1.

ta_ögonblicksbild

Metoden take_snapshot tar en bild av vad AI-visionssensorn ser för närvarande och hämtar data från den ögonblicksbilden som sedan kan användas i ett projekt. När en ögonblicksbild tas måste du ange vilken typ av objekt AI-visionssensorn ska samla in data om:

  • AFärgsignatur ellerFärgkod
    • Dessa visuella signaturer börjar med namnet på AI-visionssensorn, ett dubbelt understreck och sedan namnet på den visuella signaturen, till exempel: ai_vision_1__Blue.
  • AI-klassificeringar - AiVision.ALL_AIOBJS
  • AprilTaggar- AiVision.ALL_TAGS

Att ta en ögonblicksbild skapar en tupel av alla detekterade objekten som du angav. Om du till exempel ville detektera en "blå" färgsignatur, och AI-visionssensorn detekterade 3 olika blå objekt, skulle data från alla tre läggas i tupeln.

I det här exemplet lagrar variabeln vision_objects en tupel som innehåller de detekterade "lila"färgsignaturerna från AI-visionssensorn med namnet ai_vision_1. Den visar antalet upptäckta objekt och tar en ny ögonblicksbild var 0,5 sekund.

medan True: 
# Få en ögonblicksbild av alla lila färgsignaturer och lagra den i vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
om vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("Antal objekt:", len(vision_objects))
wait(0.5, SEKUNDER)

Objektegenskaper

Varje objekt från en ögonblicksbild har olika egenskaper som kan användas för att rapportera information om objektet. De tillgängliga fastigheterna är följande:

  • id
  • mittenX och mittenY
  • ursprungX och ursprungY
  • bredd
  • höjd
  • vinkel
  • göra
  • finns

För att komma åt ett objekts egenskap, använd variabelnamnet som lagrar tupeln, följt av objektindexet.

Objektindexet anger vilken specifik objektegenskap du vill hämta. Efter att en ögonblicksbild tagits sorterar AI-visionssensorn automatiskt objekt efter storlek. Det största objektet tilldelas index 0, medan mindre objekt får högre indexnummer.

Om man till exempel anropar det största objektets bredd inuti variabeln vision_objects blir det följande: vision_objects[0].width.

id

Egenskapen id är endast tillgänglig för AprilTags och AI-klassificeringar.

Tre AprilTags spåras av AI Vision Utility. Varje tagg identifieras, lokaliseras och markeras, vilket indikerar att systemet spårar den. AprilTag-ID:na i det här exemplet är 0, 3 och 9.

För enAprilTagrepresenterar id egenskapen det detekteradeAprilTag(s) ID-numret.

Identifiering av specifika AprilTags möjliggör selektiv navigering. Du kan programmera din robot att röra sig mot vissa taggar medan den ignorerar andra, och effektivt använda dem som vägvisare för automatiserad navigering.

Fyra objekt spåras av AI Vision-verktyget, två BuckyBalls och två ringar. Varje objekt identifieras, lokaliseras och kontureras, vilket indikerar dess spårning av systemet. Verktyget noterar objektets ID, i det här exemplet finns det en röd boll, en blå boll, en grön ring och en röd ring.

FörAI-klassificeringarrepresenterar egenskapen id den specifika typen av AI-klassificering som detekterats.

Identifiera specifika AI-klassificeringarlåter roboten bara fokusera på specifika objekt, som att bara vilja navigera mot en röd Buckyball, inte en blå.

Gå till dessa artiklar för mer information om AprilTags och AI-klassificeringar och hur du aktiverar deras detektering i AI Vision Utility.

centerX och centerY

Detta är centrumkoordinaterna för det detekterade objektet i pixlar.

AI-visionssensorn visas spåra en blå Buckyball. Buckyballen har en spårningsrektangel runt sig, och etiketten ovan visar att den har en X-position på 176 och en Y-position på 117. Spårningsrektangelns centrum är markerat för att visa att positionen mäts från centrum.

CenterX- och CenterY-koordinater hjälper till med navigering och positionering. AI-visionssensorn har en upplösning på 320 x 240 pixlar.

AI-visionssensorn visas spåra två Blue Cubes. Kuberna har spårningsrektanglar runt sig, och en av dem är mycket närmare kameran. Den närmaste har en Y-position på 184, och den längre bort har en Y-position på 70.

Du kan se att ett objekt närmare AI-visionssensorn kommer att ha en lägre CenterY-koordinat än ett objekt som är längre bort.

I det här exemplet, eftersom AI-visionssensorns vy är (160, 120), kommer roboten att svänga åt höger tills ett detekterat objekts centrumX-koordinat är större än 150 pixlar, men mindre än 170 pixlar.

medan True:
# Få en ögonblicksbild av alla blåfärgssignaturer och lagra den i vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
if vision_objects[0].exists == True

# Kontrollera om objektet inte är i mitten av AI-visionssensorns synfält.
om vision_objects[0].centerX > 150 och 170 > vision_objects[0].centerX:

# Fortsätt svänga höger tills objektet är i mitten av vyn.
drivetrain.turn(HÖGER)
annars:
drivetrain.stop()
wait(5, MSEC)

ursprung X och ursprung Y

UrsprungX och UrsprungY är koordinaten i det övre vänstra hörnet av det detekterade objektet i pixlar.

AI-visionssensorn visas spåra en blå Buckyball. Buckyballen har en spårningsrektangel runt sig, och etiketten ovan visar att den har en X-position på 176 och en Y-position på 117. Spårningsrektangelns övre vänstra hörn är markerat för att visa att ursprungspositionen mäts från dess övre vänstra hörn.

OriginX- och OriginY-koordinaterna hjälper till med navigering och positionering. Genom att kombinera denna koordinat med objektets bredd och höjd kan du bestämma storleken på objektets avgränsningsram. Detta kan hjälpa till med att spåra rörliga objekt eller navigera mellan objekt.

bredd och höjd

Detta är bredden eller höjden på det detekterade objektet i pixlar.

AI-visionssensorn visas spåra en blå Buckyball. Buckyballen har en spårningsrektangel runt sig, och etiketten ovan visar att den har en bredd på 80 pixlar och en höjd på 78 pixlar. Röda pilar markerar spårningsrektangeln för att visa dess bredd och höjd.

Bredd- och höjdmåtten hjälper till att identifiera olika objekt. Till exempel kommer en Buckyball att ha en större höjd än en ring.

AI-visionssensorn visas spåra två Blue Cubes. Kuberna har spårningsrektanglar runt sig, och en av dem är mycket närmare kameran. Den närmaste har en bredd på 144 och en höjd på 113, och den längre bort har en bredd på 73 och en höjd på 84.

Bredd och höjd anger också ett objekts avstånd från AI-visionssensorn. Mindre mått betyder vanligtvis att objektet är längre bort, medan större mått antyder att det är närmare.

I det här exemplet används objektets bredd för navigering. Roboten kommer att närma sig objektet tills bredden har nått en viss storlek innan den stannar.

medan True:
# Få en ögonblicksbild av alla blåfärgssignaturer och lagra den i vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
if vision_objects[0].exists == True

# Kontrollera om det största objektet är nära AI-visionssensorn genom att mäta dess bredd.
if vision_objects[0].width < 250:

# Kör närmare objektet tills det är bredare än 250 pixlar.
drivetrain.drive(FRAMÅT)
annars:
drivetrain.stop()

wait(5, MSEC)

vinkel

Animering av en röd och en grön fyrkant som roteras tillsammans för att demonstrera 360-graderna av ett vinkelvärde.

Egenskapen vinkel är endast tillgänglig förfärgkoder ochAprilTags

Detta representerar om den detekterade färgkodeller AprilTag är orienterad annorlunda.

AI-visionssensorn visas som spårar en färgkod i grönt och sedan blått. Videoflödet visar en grön kub staplad ovanpå en blå kub. Färgkodens vinkelvärde är markerat och visar 87 grader, vilket indikerar att färgkoden är orienterad vertikalt.

Du kan se om roboten är orienterad annorlunda i förhållande tillFärgkod ellerAprilTag och fatta navigeringsbeslut utifrån det.

AI-visionssensorn visas som spårar en färgkod i grönt och sedan blått. Videoflödet visar en grön kub som sitter bredvid en blå kub, men de är i en obekväm vinkel jämfört med sensorn. Färgkodens vinkelvärde är markerat och visar 0 grader, vilket indikerar att färgkodens vinkel inte kan läsas.

Om till exempel en färgkod inte detekteras i rätt vinkel, kanske objektet den representerar inte kan plockas upp ordentligt av roboten.

göra

Egenskapen poäng används vid detektion avAI-klassificeringar med AI-visionssensorn.

Fyra objekt spåras av AI Vision-verktyget, två BuckyBalls och två ringar. Varje objekt identifieras, lokaliseras och kontureras, vilket indikerar dess spårning av systemet. Verktyget listar också varje objekts AI-klassificeringspoäng, i det här exemplet är varje poäng 99 %.

Konfidenspoängen visar hur säker AI-visionssensorn är på sin detektering. I den här bilden är den 99 % säker på att identifiera dessa fyra objekts AI-klassificeringar. Du kan använda den här poängen för att säkerställa att din robot bara fokuserar på mycket säkra detektioner.

finns

Egenskapen exists används för att detektera om en specificerad visuell signatur har detekterats i den senast tagna ögonblicksbilden.

Detta låter dig kontrollera om några upptäckta objekt upptäcktes i den föregående ögonblicksbilden. Den här egenskapen returnerar ett True (Sant) när ett objekt existerar och ett False (Falskt) när objektet inte existerar.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: