Kodning med AI-visionssensorn i VEXcode EXP-block

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 enskilda block och hur du använder dem i VEXcode, gå till API-webbplatsen.


Ta en ögonblicksbild

VEXcode EXP Ta ögonblicksbild-block som läser Ta en AIVision1-ögonblicksbild av COL1. Det finns två rullgardinsmenyer, en för att välja AI-visionssensorn och den andra för att välja färgkod.

BlocketTa ögonblicksbild 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:

  • Färgsignatur
  • Färgkod
  • AI-klassificeringar
  • AprilTaggar

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

För mer information om hur man anger mellan olika objekt, gå till avsnittet "Ange objektpost" i den här artikeln.

VEXcode EXP Ta ögonblicksbild-block som läser Ta en AIVision2-ögonblicksbild av Blue.

I det här exemplet kommer den bara att detektera objekt som matchar dess konfigurerade "Blå" Färgsignatur och inget annat.

Data hämtad från en ögonblicksbild

Tänk på att AI-visionssensorn kommer att använda sin senast tagna ögonblicksbild för alla block som kommer efteråt. För att säkerställa att du alltid får den mest aktuella informationen från din AI-visionssensor, ta om din ögonblicksbild varje gång du vill hämta data från den. 

Upplösning

Diagram över AI-visionssensorns upplösning. Det övre vänstra hörnet är märkt 0, 0, det övre högra hörnet är märkt 320, 0 och det nedre vänstra hörnet är märkt 0, 240. Mitten av skärmen är märkt 160, 120.

Att förstå AI-visionssensorns upplösning är avgörande för korrekt datatolkning. Sensorn har en upplösning på 320x240 pixlar, med det exakta centrumet vid koordinaterna (160, 120).

X-koordinater mindre än 160 motsvarar den vänstra halvan av sensorns synfält, medan de större än 160 representerar den högra halvan. På liknande sätt anger Y-koordinater mindre än 120 den övre halvan av vyn, och de större än 120 representerar den nedre halvan

Gå till Förstå data i AI Vision Utility i VEXcode EXP för mer information om hur objekt mäts med AI Vision Sensor.

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.

VEXcode Blocks-projekt där roboten närmar sig objektet tills bredden har nått en viss storlek innan den stannar. Projektet börjar med ett When started-block och en Forever-loop. Resten av projektet ligger inuti Forever-slingan. Först, ta en AIVision1-ögonblicksbild av Blue, sedan är resten av projektet inuti ett If-block som läser om AIVision1-objektet finns? Inuti detta If-block finns ett If Else-block som läser om AIVision1-objektets bredd är mindre än 250, kör då framåt, annars sluta köra.

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.

CentrumX och Centrum Y

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.

VEXcode Blocks-projekt där roboten vänder sig mot ett detekterat objekt tills det är i mitten av AI-visionssensorns synfält. Projektet börjar med ett When started-block och en Forever-loop. Resten av projektet ligger inuti Forever-slingan. Först, ta en AIVision1-ögonblicksbild av Blue, sedan är resten av projektet inuti ett If-block som läser om AIVision1-objektet finns? Inuti detta If-block finns ett If Else-block som läser om AIVision1 objektcentrumX är större än 150 och AIVision1 objektcentrumX är mindre än 170, sväng då höger, annars sluta köra.

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.

Vinkel

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

Vinkel är en egenskap som endast är tillgänglig förfärgkoder ochAprilTags. Detta representerar om den detekteradeFä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.

UrsprungX och UrsprungY

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.

VEXcode Blocks-projekt där roboten ritar ett detekterat objekt på skärmen som en rektangel. Projektet börjar med ett When started-block och en Forever-loop. Resten av projektet ligger inuti Forever-slingan. Först, ta en AIVision1-ögonblicksbild av Blue, sedan är resten av projektet inuti ett If-block som läser om AIVision1-objektet finns? Inuti detta If-block finns ett Draw rectangle-block som läser draw rectangle AIVision1 object originX, AIVision1 object originY, AIVision1 object width, AIVision1 object height på Brain.

I det här exemplet kommer en rektangel att ritas på hjärnan med hjälp av de exakta koordinaterna för dess origo, bredd och höjd.

tagg-ID

TagID är endast tillgängligt förAprilTags. Detta är ID-numret för den angivnaAprilTag.

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.

Att identifiera 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.

Göra

Egenskapen poäng används vid detektering 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.


Ange objektobjekt

När ett objekt detekteras av AI-visionssensorn placeras det i en array. Som standard hämtar AI-visionssensorn data från det första objektet i arrayen, eller objektet med index 1. Om din AI-visionssensor bara har upptäckt ett objekt, kommer det objektet att väljas som standard.

När din AI-visionssensor har upptäckt flera objekt samtidigt måste du använda blocketAnge objektpost för att ange vilket objekt du vill hämta data från.

VEXcode EXP Ställ in objektelementblock som läser Ställ in AIVision1-objektelement till 1. Det finns en rullgardinsmeny för att välja AI-visionssensorn och ett textfält för att ange objektindexet.

När flera objekt detekteras av AI-visionssensorn ordnas de i matrisen från störst till minst. Det betyder att det största detekterade objektet alltid kommer att ställas in på objektindex 1, och det minsta objektet alltid kommer att ställas in på det högsta numret.

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å 136, och den längre bort har en bredd på 78.

I det här exemplet har två objekt detekterats med färgsignaturen "Blå". Båda kommer att placeras i arrayen när blocketTake Snapshot används.

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 kuben är märkt 1 och den bortre kuben är märkt 2.

Här skulle objektet längst fram bli objektindex 1, eftersom det är det största objektet, och det minsta objektet skulle bli objektindex 2.


Objektet finns

Innan du hämtar data från en ögonblicksbild är det viktigt kontrollera att AI-visionssensorn har upptäckt alla objekt från den ögonblicksbilden först. Det är här blocketObjektet finns kommer in i bilden.

VEXcode EXP-objekt finns block som läser AIVision1 objekt finns? Det finns en rullgardinsmeny för att välja AI-visionssensorn.

Detta block returnerar ett värde påTrue ellerFalse för huruvida den senast tagna ögonblicksbilden har några objekt detekterade.

Detta block böralltid användas för att säkerställa att du inte försöker hämta data från en potentiellt tom ögonblicksbild.

VEXcode Blocks-projekt där roboten kör mot ett detekterat blått objekt. Projektet börjar med ett When started-block och en Forever-loop. Resten av projektet ligger inuti Forever-slingan. Ta först en AIVision2-ögonblicksbild av Blue, sedan ett If Else-block som läser om AIVision2-objektet finns, kör sedan framåt, annars sluta köra.

Till exempel, här kommer roboten ständigt att ta ögonblicksbilder med AI-visionssensorn. Om den identifierar vilket objekt som med den "blå" färgsignaturen, kommer den att köra framåt.


Om någon ögonblicksbild inte har färgsignaturen "Blå" , kommer roboten att sluta röra sig.


Antal objekt

VEXcode EXP Objektantalblock som läser AIVision1-objektantal. Det finns en rullgardinsmeny för att välja AI-visionssensorn.

Genom att använda blocket Objektantal kan du se hur många objekt med en specifik färgssignatur AI-visionssensorn kan se i sin senaste ögonblicksbild. 

AI-visionssensorn visas spåra två Blue Cubes. Kuberna har spårningsrektanglar runt sig, och en av dem är mycket närmare kameran.

Här ser vi att AI-visionssensorn har den konfigurerade färgsignaturen "Blå", och detekterar två objekt.

VEXcode Blocks-projekt där roboten skriver ut antalet detekterade blå objekt till utskriftskonsolen. Projektet börjar med ett When started-block och en Forever-loop. Resten av projektet ligger inuti Forever-slingan. Ta först en AIVision2-ögonblicksbild av Blue, rensa alla rader i konsolen och placera sedan markören på nästa rad i konsolen. Nästa är ett If-block som läser om AIVision2-objektet finns, skriv sedan ut AIVision2-objektantal i konsolen och sätt markören till nästa rad. Utanför If-blocket finns ett Wait-block som är inställt på att vänta i 2 sekunder.Utskriftskonsolens utdata från det föregående VEXcode Blocks-projektet med ett utskrivet meddelande som läser 2.

I den här koden skulle AI-visionssensorn ta en ögonblicksbild och skriva ut "2" på VEXcode-konsolen, eftersom den bara detekterar två "blå" färgsignaturer.


Objekt

VEXcode EXP AI Vision-objektblock som läser AIVision1-objektets bredd. Det finns en rullgardinsmeny för att välja AI-visionssensorn och en öppen rullgardinsmeny för att välja objektets attribut för avkänning. Listan med alternativ läser bredd, höjd, mittpunktX, mittpunktY, vinkel, originX, originY, taggID och poäng.

BlocketObjekt låter dig rapportera egenskapen för ditt angivna objekt. Detta låter dig använda all tillgänglig data som hämtats från den senast tagna ögonblicksbilden.

Objektegenskaper som kan hämtas från tagna ögonblicksbilder är:

  • bredd
  • höjd
  • centerX
  • centerY
  • vinkel
  • ursprungX
  • ursprungY
  • tagg-ID
  • göra

Läs avsnittet "Data hämtad från ögonblicksbild" i den här artikeln för mer information om dessa egenskaper.


Upptäckt AprilTag är

VEXcode EXP Detected AprilTag är ett block som läser AIVision1 detected AprilTag är 1? Det finns en rullgardinsmeny för att välja AI-visionssensorn.

Detected AprilTag är blocket är endast tillgängligt närAprilTag-detekteringsläget är aktiverat.

Detta block kommer att rapportera Sant eller Falskt beroende på om det angivna objektet är en viss AprilTag.

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.

När flera AprilTags detekteras i en enda ögonblicksbild, ordnas de i arrayen baserat på deras identifierade ID, inte efter storlek

I den här bilden detekteras tre AprilTags med ID:na 0, 3 och 9. De kommer att organiseras i stigande ordning efter deras ID i arrayen. Objektet vid index 1 skulle motsvara AprilTag med ID 0, vid index 2 AprilTag med ID 3 och vid index 3 AprilTag med ID 9.

För mer information om vad AprilTags är och hur du aktiverar deras detektering med AI-visionssensorn, läs den här artikeln.


AI-klassificering är

VEXcode EXP AI-klassificering är ett block som läser AIVision1. Är AI-klassificeringen BlueBall? Det finns en rullgardinsmeny för att välja AI-visionssensorn och en annan rullgardinsmeny för att välja målobjektet för AI-klassificering.

AI-klassificering är blocket är endast tillgängligt närAI-klassificeringsdetekteringsläge är aktiverat.

 

Detta block kommer att rapportera Sant eller Falskt beroende på om det angivna objektet är en viss AI-klassificering.

Vilka AI-klassificeringar som kan detekteras av AI-visionssensorn varierar beroende på vilken modell du använder. För mer information om vilka AI-klassificeringar som finns tillgängliga och hur du aktiverar deras detektering med AI-visionssensorn, läs den här artikeln.

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

Last Updated: