Coderen met de AI Vision Sensor in VEXcode EXP-blokken

Zorg ervoor dat u kleurhandtekeningen en kleurcodes hebt geconfigureerd met uw AI Vision Sensor zodat u ze met uw blokken kunt gebruiken. Voor meer informatie over hoe u deze kunt configureren, kunt u de onderstaande artikelen lezen:

De AI Vision Sensor kan ook AI-classificaties en AprilTags detecteren. Voor meer informatie over het inschakelen van deze detectiemodi gaat u hierheen:

Ga naar de API-site voor meer informatie over deze afzonderlijke blokken en hoe u ze in VEXcode kunt gebruiken.


Maak een momentopname

VEXcode EXP Blok Maak een momentopname met de tekst Maak een AIVision1-momentopname van COL1. Er zijn twee vervolgkeuzemenu's: één om de AI Vision Sensor te selecteren en de tweede om de Kleurcode te selecteren.

Met het blokTake Snapshot wordt een foto gemaakt van wat de AI Vision Sensor op dat moment ziet. Vervolgens worden er gegevens uit die momentopname gehaald die vervolgens in een project kunnen worden gebruikt. Wanneer u een momentopname maakt, moet u opgeven van welk type object de AI Vision Sensor gegevens moet verzamelen:

  • Kleursignatuur
  • Kleurcode
  • AI-classificaties
  • AprilTags

Wanneer u een momentopname maakt, wordt er een matrix gemaakt van alle gedetecteerde objecten die u hebt opgegeven. Als u bijvoorbeeld een "rode"kleursignatuurwilt detecteren en de AI Vision-sensor detecteert 3 verschillende rode objecten, worden gegevens van alle drie in de matrix geplaatst.

Ga naar de sectie 'Objectitem instellen' in dit artikel voor meer informatie over hoe u kunt specificeren tussen verschillende objecten.

VEXcode EXP Blok Take Snapshot met de tekst Take a AIVision2 snapshot of Blue.

In dit voorbeeld worden alleen objecten gedetecteerd die overeenkomen met de geconfigureerde kleurhandtekening 'Blauw' en niets anders.

Gegevens afkomstig van een momentopname

Houd er rekening mee dat de AI Vision Sensor de laatst gemaakte momentopname gebruikt voor alle blokken die daarna komen. Om er zeker van te zijn dat u altijd de meest actuele informatie van uw AI Vision Sensor krijgt, maakt u elke keer dat u er gegevens uit wilt halen, opnieuw een momentopname. 

Oplossing

Diagram van de resolutie van de AI Vision-sensor. De linkerbovenhoek is gemarkeerd met 0, 0, de rechterbovenhoek is gemarkeerd met 320, 0 en de linkeronderhoek is gemarkeerd met 0, 240. Het midden van het scherm is gemarkeerd met 160, 120.

Inzicht in de resolutie van de AI Vision Sensor is cruciaal voor nauwkeurige data-interpretatie. De sensor heeft een resolutie van 320x240 pixels, met het exacte middelpunt op de coördinaten (160, 120).

X-coördinaten kleiner dan 160 komen overeen met de linkerhelft van het gezichtsveld van de sensor, terwijl X-coördinaten groter dan 160 overeenkomen met de rechterhelft. Op dezelfde manier geven Y-coördinaten kleiner dan 120 de bovenste helft van het beeld aan, en
-coördinaten groter dan 120 de onderste helft.
Ga naar Inzicht in de gegevens in het AI Vision Utility in VEXcode EXP voor meer informatie over hoe objecten worden gemeten met de AI Vision Sensor.

Breedte en hoogte

Dit is de breedte of hoogte van het gedetecteerde object in pixels.

Er wordt getoond hoe de AI Vision Sensor een Blue Buckyball volgt. De Buckyball heeft een trackingrechthoek om zich heen en het label hierboven laat zien dat de breedte 80 pixels en de hoogte 78 pixels is. Rode pijlen markeren de trackingrechthoek om de breedte en hoogte ervan aan te geven.

De breedte- en hoogtematen helpen bij het identificeren van verschillende objecten. Een Buckyball is bijvoorbeeld hoger dan een Ring.

De AI Vision Sensor volgt twee blauwe kubussen. De Cubes zijn voorzien van tracking-rechthoeken eromheen, en één daarvan bevindt zich veel dichter bij de camera. De dichtstbijzijnde heeft een breedte van 144 en een hoogte van 113, en de verdere heeft een breedte van 73 en een hoogte van 84.

De breedte en hoogte geven ook de afstand van een object tot de AI Vision Sensor aan. Kleinere metingen betekenen meestal dat het object verder weg is, terwijl grotere metingen aangeven dat het dichterbij is.

VEXcode Blocks-project waarin de robot het object nadert totdat de breedte een bepaalde grootte heeft bereikt, voordat hij stopt. Het project begint met een When started-blok en een Forever-lus. De rest van het project bevindt zich in de Forever-lus. Maak eerst een AIVision1-snapshot van Blue. De rest van het project bevindt zich in een If-blok dat aangeeft of het AIVision1-object bestaat. In dit If-blok bevindt zich een If Else-blok dat aangeeft dat als de breedte van het AIVision1-object kleiner is dan 250, er vooruit gereden moet worden, anders moet er gestopt worden.

In dit voorbeeld wordt de breedte van het object gebruikt voor navigatie. De robot nadert het object totdat de breedte een bepaalde grootte heeft bereikt, waarna hij stopt.

CenterX en Center Y

Dit zijn de middelpuntcoördinaten van het gedetecteerde object in pixels.

Er wordt getoond hoe de AI Vision Sensor een Blue Buckyball volgt. De Buckyball is voorzien van een trackingrechthoek en het label hierboven laat zien dat de X-positie 176 en de Y-positie 117 is. Het midden van de trackingrechthoek is gemarkeerd om aan te geven dat de positie vanuit het midden wordt gemeten.

CenterX- en CenterY-coördinaten helpen bij navigatie en positionering. De AI Vision Sensor heeft een resolutie van 320 x 240 pixels.

De AI Vision Sensor volgt twee blauwe kubussen. De Cubes zijn voorzien van tracking-rechthoeken eromheen, en één daarvan bevindt zich veel dichter bij de camera. Hoe dichterbij, hoe hoger de Y-positie: 184. Hoe verder weg, hoe hoger de Y-positie: 70.

Zoals u ziet, heeft een object dat zich dichter bij de AI Vision Sensor bevindt een lagere CenterY-coördinaat dan een object dat verder weg is.

VEXcode Blocks-project waarin de robot zich naar een gedetecteerd object draait totdat het zich in het midden van het zicht van de AI Vision Sensor bevindt. Het project begint met een When started-blok en een Forever-lus. De rest van het project bevindt zich in de Forever-lus. Maak eerst een AIVision1-snapshot van Blue. De rest van het project bevindt zich in een If-blok dat aangeeft of het AIVision1-object bestaat. In dit If-blok bevindt zich een If Else-blok dat aangeeft dat als AIVision1 object centerX groter is dan 150 en AIVision1 object centerX kleiner is dan 170, dan moet u rechtsaf slaan, anders moet u stoppen met rijden.

In dit voorbeeld draait de robot naar rechts, omdat het middelpunt van het gezichtsveld van de AI Vision Sensor (160, 120) is, totdat de centerX-coördinaat van een gedetecteerd object groter is dan 150 pixels, maar kleiner dan 170 pixels.

Hoek

Animatie van een rood vierkant en een groen vierkant die samen worden gedraaid om de 360 graden van een hoekwaarde te demonstreren.

Hoek is een eigenschap die alleen beschikbaar is voorkleurcodes enAprilTags. Dit geeft aan of de gedetecteerdeKleurcodeof AprilTag anders is georiënteerd.

De AI Vision-sensor volgt een kleurcode van groen en daarna blauw. De video toont een groene kubus die op een blauwe kubus is gestapeld. De hoekwaarde van de kleurcode is gemarkeerd en bedraagt 87 graden, wat aangeeft dat de kleurcode verticaal is georiënteerd.

U kunt zien of de robot anders is georiënteerd ten opzichte van dekleurcode ofAprilTag en op basis daarvan navigatiebeslissingen nemen.

De AI Vision-sensor volgt een kleurcode van groen en daarna blauw. De videofeed toont een Groene Kubus naast een Blauwe Kubus, maar ze staan in een vreemde hoek ten opzichte van de sensor. De hoekwaarde van de kleurcode is gemarkeerd en geeft 0 graden aan, wat aangeeft dat de hoek van de kleurcode niet kan worden gelezen.

Als bijvoorbeeld eenkleurcode niet onder de juiste hoek wordt gedetecteerd, kan het object dat het vertegenwoordigt mogelijk niet goed door de robot worden opgepakt.

OriginX en OriginY

OriginX en OriginY zijn de coördinaten in de linkerbovenhoek van het gedetecteerde object in pixels.

Er wordt getoond hoe de AI Vision Sensor een Blue Buckyball volgt. De Buckyball is voorzien van een tracking-rechthoek en het label hierboven laat zien dat de X-positie 176 is en de Y-positie 117. De linkerbovenhoek van de trackingrechthoek is gemarkeerd om aan te geven dat de oorspronkelijke positie wordt gemeten vanaf de linkerbovenhoek.

OriginX- en OriginY-coördinaten helpen bij navigatie en positionering. Door deze coördinaat te combineren met de breedte en hoogte van het object, kunt u de grootte van het omsluitende kader van het object bepalen. Dit kan helpen bij het volgen van bewegende objecten of bij het navigeren tussen objecten.

VEXcode Blocks-project waarin de robot een gedetecteerd object als een rechthoek op het scherm tekent. Het project begint met een When started-blok en een Forever-lus. De rest van het project bevindt zich in de Forever-lus. Maak eerst een AIVision1-snapshot van Blue. De rest van het project bevindt zich in een If-blok dat aangeeft of het AIVision1-object bestaat. In dit If-blok bevindt zich een Draw rectangle-blok met de tekst draw rectangle AIVision1 object originX, AIVision1 object originY, AIVision1 object width, AIVision1 object height op Brain.

In dit voorbeeld wordt een rechthoek op de Brain getekend met behulp van de exacte coördinaten van de oorsprong, breedte en hoogte.

tagID

De tagID is alleen beschikbaar voorAprilTags. Dit is het ID-nummer voor de opgegevenAprilTag.

Drie AprilTags worden gevolgd door de AI Vision Utility. Elke tag wordt geïdentificeerd, gelokaliseerd en omlijnd, waardoor wordt aangegeven hoe het systeem de tag volgt. De AprilTag-ID's in dit voorbeeld zijn 0, 3 en 9.

Door specifieke AprilTags te identificeren, is selectieve navigatie mogelijk. U kunt uw robot programmeren om naar bepaalde tags te bewegen en andere te negeren. Zo kunt u de tags gebruiken als wegwijzers voor geautomatiseerde navigatie.

Score

De score-eigenschap wordt gebruikt bij het detecteren vanAI-classificaties met de AI Vision-sensor.

Vier objecten worden door het hulpprogramma AI Vision gevolgd: twee BuckyBalls en twee Rings. Elk object wordt geïdentificeerd, gelokaliseerd en omlijnd, waardoor duidelijk wordt welke route het systeem volgt. Het hulpprogramma geeft ook de AI-classificatiescore van elk object weer. In dit voorbeeld is de score 99%.

De betrouwbaarheidsscore geeft aan hoe zeker de AI Vision Sensor is van de detectie. In deze afbeelding is 99% zekerheid aanwezig dat de AI-classificaties van deze vier objecten worden geïdentificeerd. Met deze score kunt u ervoor zorgen dat uw robot zich alleen richt op detecties die zeer betrouwbaar zijn.


Objectitem instellen

Wanneer de AI Vision Sensor een object detecteert, wordt het in een array geplaatst. Standaard haalt de AI Vision Sensor gegevens op uit het eerste object in de matrix of uit het object met index 1. Als uw AI Vision Sensor slechts één object heeft gedetecteerd, wordt dat object standaard geselecteerd.

Wanneer uw AI Vision Sensor echter meerdere objecten tegelijk heeft gedetecteerd, moet u het blokSet Object Item gebruiken om op te geven van welk object u gegevens wilt ophalen.

VEXcode EXP Stel object-itemblok in met de tekst Stel AIVision1-object-item in op 1. Er is een vervolgkeuzemenu om de AI Vision Sensor te selecteren en een tekstveld om de objectindex in te voeren.

Wanneer de AI Vision Sensor meerdere objecten detecteert, worden deze in een matrix gerangschikt van groot naar klein. Dat betekent dat het grootste gedetecteerde object altijd op objectindex 1 wordt ingesteld en het kleinste object altijd op het hoogste nummer.

De AI Vision Sensor volgt twee blauwe kubussen. De Cubes zijn voorzien van tracking-rechthoeken eromheen, en één daarvan bevindt zich veel dichter bij de camera. De dichtstbijzijnde heeft een breedte van 136, en de verdere 78.

In dit voorbeeld zijn twee objecten gedetecteerd met de kleursignatuur "Blauw". Ze worden beide in de array geplaatst wanneer het blokTake Snapshot wordt gebruikt.

De AI Vision Sensor volgt twee blauwe kubussen. De Cubes zijn voorzien van tracking-rechthoeken eromheen, en één daarvan bevindt zich veel dichter bij de camera. De kubus die het dichtstbij is, krijgt het nummer 1, en de kubus die verder weg is, krijgt het nummer 2.

Hierbij zou het object op de voorgrond objectindex 1 krijgen, omdat dit het grootste object is. Het kleinste object zou objectindex 2 krijgen.


Object bestaat

Voordat u gegevens uit een momentopname haalt, is het belangrijk te controleren of de AI Vision Sensor eerst objecten uit die momentopname heeft gedetecteerd. Hier komt het blokObject Exists in het spel.

VEXcode EXP Object bestaat blok dat AIVision1 object bestaat? Er is een vervolgkeuzemenu om de AI Vision Sensor te selecteren.

Dit blok retourneert de waardeTrue ofFalse
van of er in de laatst genomen momentopname objecten zijn gedetecteerd.
Dit blok moetaltijd worden gebruikt om er zeker van te zijn dat u niet probeert gegevens uit een mogelijk lege momentopname te halen.

VEXcode Blocks-project waarin de robot naar een gedetecteerd blauw object rijdt. Het project begint met een When started-blok en een Forever-lus. De rest van het project bevindt zich in de Forever-lus. Maak eerst een AIVision2-snapshot van Blue en vervolgens een If Else-blok dat aangeeft of het AIVision2-object bestaat. Rijd dan verder, anders stopt u met rijden.

Zo maakt de robot bijvoorbeeld voortdurend snapshots met de AI Vision Sensor. Als het objecten met de “Blauwe” identificeert, zal het vooruit rijden.


Als een momentopname niet de “Blauwe” kleursignatuurheeft, stopt de robot met bewegen.


Aantal objecten

VEXcode EXP Object count-blok dat het AIVision1-objectaantal leest. Er is een vervolgkeuzemenu om de AI Vision Sensor te selecteren.

Met het blok Object count kunt u zien hoeveel objecten van een specifieke Color Signature de AI Vision Sensor in de laatste momentopname kan zien. 

De AI Vision Sensor volgt twee blauwe kubussen. De Cubes zijn voorzien van tracking-rechthoeken eromheen, en één daarvan bevindt zich veel dichter bij de camera.

Hier zien we dat de AI Vision Sensor de geconfigureerde kleursignatuur "Blauw" heeft en twee objecten detecteert.

VEXcode Blocks-project waarin de robot het aantal gedetecteerde blauwe objecten op de Print Console afdrukt. Het project begint met een When started-blok en een Forever-lus. De rest van het project bevindt zich in de Forever-lus. Maak eerst een AIVision2-snapshot van Blue, wis alle rijen op de console en plaats de cursor vervolgens op de volgende rij op de console. Hierna volgt een If-blok dat aangeeft of een AIVision2-object bestaat. Vervolgens wordt het aantal AIVision2-objecten op de console weergegeven en wordt de cursor op de volgende rij geplaatst. Buiten het If-blok is er een Wait-blok dat is ingesteld om 2 seconden te wachten.De Print Console-uitvoer van het vorige VEXcode Blocks-project met een afgedrukt bericht met de tekst 2.

In deze code zou de AI Vision Sensor een momentopname maken en "2" afdrukken op de VEXcode-console, omdat deze slechts twee "blauwe" -kleurhandtekeningendetecteert.


Voorwerp

VEXcode EXP AI Vision-objectblok dat de breedte van het AIVision1-object leest. Er is een vervolgkeuzemenu waarin u de AI Vision Sensor kunt selecteren en er is een vervolgkeuzemenu geopend waarin u het kenmerk van het object voor detectie kunt selecteren. De lijst met opties bestaat uit breedte, hoogte, centerX, centerY, hoek, originX, originY, tagID en score.

Met het blokObject kunt u de eigenschap van het door u opgegeven object rapporteren. Hiermee kunt u alle beschikbare gegevens uit de laatst genomen momentopname gebruiken.

Objecteigenschappen die uit gemaakte momentopnamen kunnen worden gehaald, zijn:

  • breedte
  • hoogte
  • centrumX
  • centrumY
  • hoek
  • oorsprongX
  • oorsprongY
  • tagID
  • score

Lees het gedeelte 'Gegevens uit momentopname' in dit artikel voor meer informatie over deze eigenschappen.


Gedetecteerd AprilTag is

VEXcode EXP Gedetecteerd AprilTag is een blok met de tekst AIVision1 gedetecteerd AprilTag is 1? Er is een vervolgkeuzemenu om de AI Vision Sensor te selecteren.

Degedetecteerde AprilTag is blok is alleen beschikbaar wanneer deAprilTag-detectiemodus is ingeschakeld.

Dit blok rapporteert True of False, afhankelijk van of het opgegeven object een bepaalde AprilTag is.

Drie AprilTags worden gevolgd door de AI Vision Utility. Elke tag wordt geïdentificeerd, gelokaliseerd en omlijnd, waardoor duidelijk wordt welke tracking het systeem uitvoert. De AprilTag-ID's in dit voorbeeld zijn 0, 3 en 9.

Wanneer er meerdere AprilTags in één momentopname worden gedetecteerd, worden ze in de matrix gerangschikt op basis van hun geïdentificeerde ID, niet op grootte

In deze afbeelding zijn drie AprilTags gedetecteerd met ID's 0, 3 en 9. Ze worden in oplopende volgorde van hun ID in de array georganiseerd. Het object op index 1 zou overeenkomen met de AprilTag met ID 0, op index 2 met de AprilTag met ID 3 en op index 3 met de AprilTag met ID 9.

Lees dit artikel voor meer informatie over wat AprilTags zijn en hoe u detectie ervan met de AI Vision Sensor kunt inschakelen.


AI-classificatie is

VEXcode EXP AI Classificatie is een blok met de tekst AIVision1 AI classificatie is BlueBall? Er is een vervolgkeuzemenu om de AI Vision Sensor te selecteren en een ander vervolgkeuzemenu om het doel-AI-classificatieobject te selecteren.

DeAI-classificatie is blok is alleen beschikbaar wanneer deAI-classificatiedetectiemodus is ingeschakeld.

 

Dit blok rapporteert True of False, afhankelijk van of het opgegeven object een bepaalde AI-classificatie is.

Welke AI-classificaties door de AI Vision Sensor kunnen worden gedetecteerd, hangt af van het model dat u gebruikt. Lees dit artikel voor meer informatie over welke AI-classificaties beschikbaar zijn en hoe u detectie ervan kunt inschakelen met de AI Vision Sensor.

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

Last Updated: