Kodning med AI-visionssensorn i VEXcode V5-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

Ett block som innehåller kommandot "ta en ögonblicksbild" med två rullgardinsmenyer: ett märkt AIVision1 och det andra märkt COL1. Det här blocket är utformat för att ta en ögonblicksbild från en AI Vision-sensor och referera till ett specifikt objekt eller en färg från de angivna variablerna i en visuell kodningsmiljö. Blockets form har svaga kurvor i ändarna, typiskt för blockbaserade kodningsgränssnitt.

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.

Ett ljusblått kodblock med kommandot att ta en ögonblicksbild av ett objekt eller en färg. Det finns två rullgardinsmenyer: ett märkt AIVision2 och det andra märkt Blå. Blocket är utformat för användning i en blockbaserad kodningsmiljö, där det tar en ögonblicksbild från en AI Vision-sensor och spårar ett objekt eller en färg definierad som Blå. Blocket har svaga kurvor, typiskt för kodningsgränssnitt som använder modulära block.

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

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 V5 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.

Bilden visar en blå Buckyball med en vit fyrkantig kontur som spårar den. Det övre vänstra hörnet har en etikett som anger att det är ett blått objekt, med koordinaterna X:176, Y:117 och måtten B:80, H:78. Röda pilar markerar objektets 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.

Två blå kubiska objekt spåras av ett visuellt igenkänningssystem. Den övre kuben har en vit kontur med en etikett som anger dess position som X:215, Y:70 och måtten B:73, H:84. Den nedre kuben har en liknande vit kontur med etiketten som visar X:188, Y:184 och måtten B:144, H:113. Varje kub har ett centrerat vitt kors, vilket sannolikt indikerar fokuspunkten för spårning. Etiketterna markerar mätningar och spårningsdata för varje objekt.

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.

Programmet börjar med blocket när det startas, följt av en evighetsloop. Inuti loopen tar programmet en ögonblicksbild med hjälp av AI Vision-sensorn (AIVision1) för att upptäcka ett blått objekt. Om objektet finns kontrollerar programmet om objektets bredd är mindre än 250 pixlar. Om detta är sant kör roboten framåt; annars slutar den köra. Blocken är staplade tillsammans, vilket indikerar programmets flöde i en modulär kodningsmiljö.

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.

En blå Buckyball som spåras av ett datorseendesystem. Objektet är konturerat med en vit fyrkant, och inuti konturen finns en mindre röd fyrkant som omger ett centrerat vitt kors. I bildens övre vänstra hörn anger en etikett att objektet är blått, med koordinaterna X:176, Y:117 och måtten B:80, H:78.

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

Två blå kubiska objekt spårade av ett visionssystem. Det övre objektet är märkt med koordinaterna X:215, Y:70 och måtten B:73, H:84, med en vit kontur och ett centrerat vitt kors. Det nedre objektet är märkt med koordinaterna X:188, Y:184 och måtten B:144, H:113, också markerade med vitt med ett centrerat vitt kors.

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.

En blockbaserad kodningssekvens som börjar med when started följt av en forever-loop. Inuti loopen tar programmet en ögonblicksbild med hjälp av AIVision1 för att upptäcka ett blått objekt. Om ett objekt finns roterar programmet tills objektet är centrerat i AI Vision-sensorns vy. Objektet anses centrerat om dess centerX-värde är mellan 150 och 170. Om objektet inte är centrerat svänger roboten åt höger; annars slutar den köra. Blocken indikerar flödet och logiken i det visuella programmet.

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

Vinkel är en egenskap som endast är tillgänglig förfärgkoder ochAprilTags. Detta representerar om den detekteradeFärgkodeller AprilTag är orienterad annorlunda.

En stapel med två kuber, en grön på toppen och en blå på botten, som spåras av ett visionssystem. En vit kontur omger båda kuberna, med ett vitt kors centrerat på den gröna kuben. Etiketten längst ner på bilden visar Grön_Blå A:87°, vilket indikerar de detekterade färgerna och en vinkelmätning. Nedanför det listas koordinaterna som X:117, Y:186, med måtten B:137, H:172, vilket representerar positionen och storleken på de staplade kuberna i ramen.

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

Två kuber, en grön och en blå, placerade sida vid sida och spårade av ett visionssystem. En vit kontur omger båda kuberna med ett vitt kors i mitten. Etiketten längst upp till vänster indikerar Grön_Blå A:0°, vilket refererar till de detekterade färgerna och en vinkelmätning. Nedanför visas koordinaterna som X:150, Y:102, med måtten B:179, H:109, vilket representerar kubernas position och storlek inom ramen.

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.

En blå Buckyball som spåras av ett visionssystem. En vit kontur omger objektet, med ett centrerat vitt kors inuti konturen. Etiketten längst upp till vänster anger objektets färg som blå, tillsammans med koordinaterna X:176, Y:117 och måtten B:80, H:78. En liten röd fyrkant markerar objektets ö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.

En blockbaserad kodningssekvens som börjar med when started följt av en evighetsloop. Inuti loopen tar programmet en ögonblicksbild med hjälp av AIVision1 för att upptäcka ett blått objekt. Om objektet existerar kommer programmet att rita en rektangel på hjärnskärmen baserat på objektets position och storlek. Rektangeln ritas med hjälp av objektets värden för originX, originY, width och height, vilka tillhandahålls av AIVision1-sensorn. Detta program spårar och markerar visuellt det detekterade objektet på hjärnskärmen.

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 fyrkantiga kort med AprilTags som spåras av ett visionssystem. Varje kort är märkt med ett ID-nummer och tillhörande spårningsdata. Kortet till vänster är märkt ID:0 och visar koordinaterna A:350°, X:110, Y:96, W:41, H:41. Det mellersta kortet, märkt ID:3, har koordinaterna A:1°, X:187, Y:180, W:57, H:57. Kortet till höger är märkt ID:9, med koordinaterna A:3°, X:237, Y:89, W:38, H:38. Varje kort har en vit kontur, och systemet spårar deras positioner och orienteringar.

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.

Bilden visar fyra objekt som spåras av ett visionssystem: två bollar och två ringar. Den röda bollen är märkt med koordinaterna X:122, Y:84, B:67, H:66 och en poäng på 99 %. Den blå bollen har X:228, Y:86, B:70, H:68, med en poäng på 99%. Den gröna ringen har koordinaterna X:109, Y:186, W:98, H:92 och en poäng på 99 %. Den röda ringen är märkt X:259, Y:187, B:89, H:91, med en poäng på 99 %. Varje objekt är konturerat i vitt, vilket indikerar spårningsnoggrannhet.

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.

Ett ljusblått kodblock. Den innehåller ett kommando för att ställa in objektet för AIVision1 till 1. Det här blocket är en del av en blockbaserad kodningsmiljö, som vanligtvis används för att definiera vilket objekt eller objekt AI Vision-sensorn ska fokusera på eller spåra. Blockets form har lätta kurvor, vilket passar in i den visuella kodningsplattformens modulära natur.

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 Vision Utility-gränssnittet med två blå kuber detekterade på vänster sida, var och en markerad med sina X- och Y-koordinater och dimensioner. Systemet är anslutet och AprilTags är påslagna, medan AI-klassificering är avstängd. Till höger visas de blå färginställningarna med justerbara nyans- och mättnadsområden, inställda på 22 respektive 0,34. Det finns ett alternativ att lägga till eller ställa in färg och frysa video. Firmware-programmet är uppdaterat och kör version 1.0.0.b16, och en stängningsknapp finns längst ner.

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 Vision Utility-gränssnittet, som spårar två blå kuber märkta med deras X-, Y- och dimensionsdata. Den vänstra kuben har koordinaterna X:127, Y:179 och måtten B:136, H:123, medan den högra kuben har koordinaterna X:233, Y:74 och måtten B:78, H:87. Systemet är anslutet, AprilTags är påslaget och AI-klassificering är avstängd. De blå färginställningarna har ett nyansintervall på 22 och en mättnad på 0,34. En knapp för att frysa video och information om den inbyggda programvaran (version 1.0.0.b16) visas längst ner.

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.

Finns det ett ljusblått hexagonalt kodblock med texten AIVision1-objektet? Det här blocket är en del av en blockbaserad kodningsmiljö, som vanligtvis används för att kontrollera om ett objekt detekteras av AI Vision-sensorn märkt som AIVision1. Blocket är utformat för att passa in i en modulär kodningsstruktur, med de svaga kurvor och den form som är karakteristiska för sådana miljöer.

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.

En blockbaserad kodningssekvens som börjar med "when started" följt av en evighetsloop. Inuti loopen tar AI Vision-sensorn (AIVision2) en ögonblicksbild för att detektera färgen blå. Om ett objekt med den blå visuella signaturen detekteras kommer roboten att köra framåt. Om inget föremål detekteras kommer roboten att sluta köra. Blocken är staplade för att representera programmets villkorliga logik, där närvaron av ett detekterat objekt styr robotens rörelse.

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

Ett ljusblått, rundat kodblock märkt AIVision1 objektantal. Det här blocket används i en blockbaserad kodningsmiljö för att hämta antalet objekt som detekterats av AI Vision-sensorn märkt som AIVision1. Blocket passar in i en modulär struktur, som vanligtvis används i visuella programmeringsgränssnitt för robotik eller visionssystem.

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 Vision Utility-gränssnittet med två blå kuber detekterade till vänster. Systemet är anslutet, med AprilTags aktiverat och AI-klassificering avstängt. Gränssnittet visar inställningar för att detektera färgen blå, med nyans inställd på 22 och mättnad på 0,34. Knappar för att frysa videon och lägga till eller ställa in färg finns. Firmware indikeras som uppdaterad och kör version 1.0.0.b16. Det finns också en knapp för att koppla bort anslutningen eller stänga verktyget.

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

En blockbaserad kodningssekvens som börjar med when started, följt av en evighetsloop. Inuti loopen tar programmet en ögonblicksbild med hjälp av AIVision2 för att detektera den blå visuella signaturen. Den rensar och återställer konsolen innan den kontrollerar om några blå objekt upptäcks. Om ett blått objekt finns skrivs objektantalet ut till konsolen. Programmet väntar sedan i två sekunder innan processen upprepas. Blocken representerar visuellt en kontinuerlig kontroll av blå objekt och visar resultaten i konsolen.En konsolutgång med siffran 2 tryckt. Konsolen är en del av ett större gränssnitt som sannolikt visar resultat från ett program som körs i en blockbaserad kodningsmiljö. Överst på konsolen finns knappar för ytterligare åtgärder eller kontroller, och programmet som körs här matar ut data till utskriftskonsolen, vilket visar resultatet 2 på skärmen.

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

En rullgardinsmeny för att välja objektegenskaper relaterade till AIVision1. Det valda alternativet är bredd, och menyn listar andra alternativ inklusive höjd, centrumX, centrumY, vinkel, originX, originY, taggID och poäng. Dessa alternativ låter användaren hämta specifika datapunkter från objektet som detekterats av AI Vision-sensorn, vilket ger flexibilitet för att spåra eller mäta olika attribut hos objektet.

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

Ett ljusblått hexagonalt block från ett kodningsgränssnitt. Den innehåller kommandot för att kontrollera om den upptäckta AprilTag av AIVision1 matchar värdet 1. Detta block används i en blockbaserad kodningsmiljö och är utformat för att utvärdera om en specifik AprilTag finns. Formen och strukturen gör att den passar in i andra logikblock, som vanligtvis används i visuell programmering för robotik eller AI-visionsuppgifter.

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 ett visionssystem. Varje tagg har ett ID och tillhörande koordinater. Den vänstra taggen är märkt ID:0, med koordinaterna X:110, Y:96, W:41, H:41. Mitttaggen är märkt ID:3, med koordinaterna X:187, Y:180, B:57, H:57. Den högra taggen är märkt ID:9, med koordinaterna X:237, Y:89, W:38, H:38.

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

Ett ljusblått hexagonalt block från en blockbaserad kodningsmiljö. Blocket innehåller kommandot AIVision1. Är AI-klassificeringen BlueBall? Detta block kontrollerar om AI Vision-sensorn (AIVision1) har klassificerat det detekterade objektet som en BlueBall. Blocket har rullgardinsmenyer som gör det möjligt för användare att välja olika objekt eller AI-klassificeringar för spårning och beslutsfattande i ett visuellt programmeringsgränssnitt.

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: