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:
- Konfigurera färgsignaturer med AI Vision Signature i VEXcode EXP
- Konfigurera färgkoder med AI Vision Signature i VEXcode EXP
AI-visionssensorn kan även upptäcka AI-klassificeringar och AprilTags. För att lära dig hur du aktiverar dessa detekteringslägen, gå hit:
- AI-klassificeringar med AI-visionssensorn i VEXcode EXP
- AprilTags med AI-visionssensorn i VEXcode EXP
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 använda AI-visionssensorn att vara AIVision.
taSnapshot
Metoden takeSnapshot 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:
AIVision1__Blue.
- Dessa visuella signaturer börjar med namnet på AI-visionssensorn, ett dubbelt understreck och sedan namnet på den visuella signaturen, till exempel:
-
AI-klassificeringar -
aivision::ALL_AIOBJS -
aprilTaggar-
aivision::ALL_TAGS
Att ta en ögonblicksbild skapar en array 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 arrayen.
I det här exemplet tas en ögonblicksbild av den "blå" färgsignaturenfrån AI-visionssensorn med namnet AIVision1. Den visar antalet objekt som upptäckts i matrisen och tar en ny ögonblicksbild var 0,5 sekund.
medan (true) {
// Få en ögonblicksbild av alla blåfärgade objekt.
AIVision.takeSnapshot(AIVision1__Blue);
// Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
om (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
vänta(5, ms);
}
föremål
Varje objekt från en ögonblicksbild har olika egenskaper som kan användas för att rapportera information om objektet. Metoden objekt ger dig åtkomst till dessa egenskaper.
De tillgängliga fastigheterna är följande:
- id
- mittenX och mittenY
- ursprungX och ursprungY
- bredd
- höjd
- vinkel
- finns
- göra
För att komma åt ett objekts egenskap, använd namnet på AI Vision Sensor, följt av metoden objects och sedan objektets index.
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.
Till exempel, om man anropar det största objektets bredd skulle det vara AIVision1.objects[0].width.
id
Egenskapen id är endast tillgänglig för AprilTags och AI-klassificeringar.
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.
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.
CenterX- och CenterY-koordinater hjälper till med navigering och positionering. AI-visionssensorn har en upplösning på 320 x 240 pixlar.
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ärgade objekt.
AIVision.takeSnapshot(AIVision__Blue);
// Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
om (AIVision.objectCount > 0) {
om (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Drivlina.sväng(höger);
} annars {
Drivlina.stopp();
}
}
vänta(5, ms);
}
ursprung X och ursprung Y
UrsprungX och UrsprungY är koordinaten i det övre vänstra hörnet av det detekterade objektet i pixlar.
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.
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.
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å objekt.
AIVision.takeSnapshot(AIVision1__Blue);
// Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
om (AIVision.objectCount > 0) {
om (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(framåt);
} annars {
Drivetrain.stop();
}
}
vänta(5, ms);
}
vinkel
Egenskapen vinkel är endast tillgänglig förfärgkoder ochAprilTags
Detta representerar om den detekterade färgkodeneller AprilTag är orienterad annorlunda.
Du kan se om roboten är orienterad annorlunda i förhållande tillFärgkod ellerAprilTag och fatta navigeringsbeslut utifrån det.
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 detektering avAI-klassificeringar med AI-visionssensorn.
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.
objektAntal
Metoden objectCount returnerar antalet upptäckta objekt i den senaste ögonblicksbilden.
I det här exemplet har två objekt detekterats med färgsignaturen "Blå". Båda kommer att placeras i arrayen när metoden takeSnapshot används.
Detta kodavsnitt uppdaterar kontinuerligt EXP Brain med antalet upptäckta objekt. Baserat på det givna exemplet kommer den upprepade gånger att skicka värdet 2, vilket indikerar att två objekt har detekterats.
medan (true) {
// Få en ögonblicksbild av alla blå objekt.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Kontrollera att ett objekt upptäcktes i ögonblicksbilden innan data hämtas.
om (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
vänta(5, ms);
}