Coderen met de AI Vision Sensor in VEXcode V5-blokken

Zorg ervoor dat u kleurhandtekeningen en kleurcodes hebt geconfigureerd met uw AI Vision Sensor, zodat deze met uw blokken kunnen worden gebruikt. 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 klikt u hier:

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


Maak snapshot

Een blok dat de opdracht bevat om een momentopname te maken met twee vervolgkeuzemenu's: één met het label AIVision1 en de andere met het label COL1. Dit blok is ontworpen om een momentopname te maken van een AI Vision-sensor en te verwijzen naar een specifiek object of een specifieke kleur uit de aangewezen variabelen in een visuele coderingsomgeving. De vorm van het blok heeft lichte rondingen aan de uiteinden, wat typerend is voor op blokken gebaseerde coderingsinterfaces.

Met het blokTake Snapshot wordt een foto gemaakt van wat de AI Vision Sensor op dat moment ziet en 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:

  • Kleur handtekening
  • 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 de gegevens van alle drie in de matrix geplaatst.

Ga naar de sectie "Objectitem instellen" in dit artikel voor meer informatie over het opgeven van verschillende objecten.

Een lichtblauw codeblok met de opdracht om een momentopname van een object of kleur te maken. Er zijn twee vervolgkeuzemenu's: één met het label AIVision2 en de andere met het label Blauw. Het blok is ontworpen voor gebruik in een op blokken gebaseerde codeeromgeving, waar het een momentopname maakt van een AI Vision-sensor en een object of kleur volgt die is gedefinieerd als Blauw. Het blok heeft lichte rondingen, wat kenmerkend is voor coderingsinterfaces die gebruikmaken van modulaire blokken.

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

Gegevens uit 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 ontvangt, maakt u elke keer dat u er gegevens uit wilt halen, een nieuwe momentopname. 

Oplossing

Voor een nauwkeurige interpretatie van gegevens is het van cruciaal belang dat u de resolutie van de AI Vision Sensor begrijpt. 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 de weergave aan, en Y-coördinaten groter dan 120 de onderste helft.

Ga naar De gegevens in het AI Vision Utility in VEXcode V5 begrijpen 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.

Op de afbeelding is een blauwe Buckyball te zien met een witte, vierkante omtrek die hem volgt. In de linkerbovenhoek staat een label dat aangeeft dat het een blauw object is, met coördinaten X:176, Y:117 en afmetingen B:80, H:78. Rode pijlen markeren de breedte en hoogte van het object.

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

Twee blauwe kubusvormige objecten worden gevolgd door een visueel herkenningssysteem. De bovenste kubus heeft een witte omtrek met een label dat de positie aangeeft: X:215, Y:70 en de afmetingen B:73, H:84. De onderste kubus heeft een vergelijkbare witte omtrek met op het label de volgende afmetingen: X:188, Y:184 en B:144, H:113. Elke kubus heeft een wit kruis in het midden, wat waarschijnlijk het brandpunt voor het volgen aangeeft. De labels markeren de metingen en trackinggegevens voor elk object.

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.

Het programma start met het blok waarmee het werd gestart, gevolgd door een oneindige lus. Binnen de lus maakt het programma een momentopname met behulp van de AI Vision-sensor (AIVision1) om een blauw object te detecteren. Als het object bestaat, controleert het programma of de breedte van het object kleiner is dan 250 pixels. Als dit het geval is, rijdt de robot vooruit. Anders stopt hij met rijden. De blokken zijn op elkaar gestapeld en geven de stroom van het programma in een modulaire codeeromgeving weer.

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.

Een blauwe Buckyball wordt gevolgd door een computer vision-systeem. Het object wordt omlijnd door een wit vierkant. Binnen de omlijning bevindt zich een kleiner rood vierkant met een wit kruis in het midden. In de linkerbovenhoek van de afbeelding staat een label dat aangeeft dat het object blauw is, met coördinaten X:176, Y:117 en afmetingen B:80, H:78.

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

Twee blauwe kubusvormige objecten gevolgd door een visueel systeem. Het bovenste object is gemarkeerd met de coördinaten X:215, Y:70 en de afmetingen B:73, H:84, met een witte omtrek en een wit kruis in het midden. Het onderste object is gemarkeerd met de coördinaten X:188, Y:184 en de afmetingen B:144, H:113, ook aangegeven met een witte rand en een wit kruis in het midden.

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

Een op blokken gebaseerde coderingsreeks die begint met het moment van starten, gevolgd door een oneindige lus. Binnen de lus maakt het programma met behulp van AIVision1 een momentopname om een blauw object te detecteren. Als er een object bestaat, draait het programma totdat het object in het midden van het beeld van de AI Vision-sensor staat. Het object wordt als gecentreerd beschouwd als de centerX-waarde tussen 150 en 170 ligt. Als het object niet in het midden staat, draait de robot naar rechts. Is dit niet het geval, dan stopt hij met rijden. De blokken geven de stroom en logica van het visuele programma weer.

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

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

Een stapel van twee kubussen, één groen aan de bovenkant en één blauw aan de onderkant, wordt gevolgd door een visueel systeem. Beide kubussen worden omgeven door een witte omtrek, met een wit kruis in het midden van de groene kubus. Het label onder aan de afbeelding geeft Groen_Blauw A:87° weer, wat de gedetecteerde kleuren en een hoekmeting aangeeft. Daaronder worden de coördinaten weergegeven als X:117, Y:186, met de afmetingen B:137, H:172. Deze geven de positie en grootte van de gestapelde kubussen in het frame weer.

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

Twee kubussen, één groene en één blauwe, naast elkaar geplaatst en gevolgd door een visueel systeem. Beide kubussen zijn omgeven door een witte omtrek, met in het midden een wit kruis. Het label linksboven geeft Groen_Blauw A:0° aan en verwijst naar de gedetecteerde kleuren en een hoekmeting. Daaronder worden de coördinaten weergegeven als X:150, Y:102, met afmetingen B:179, H:109. Deze geven de positie en grootte van de kubussen binnen het frame weer.

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

OriginX en OriginY

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

Een blauwe Buckyball wordt gevolgd door een visiesysteem. Het object wordt omgeven door een witte omtrek, met in het midden een wit kruis. Het label linksboven geeft de kleur van het object aan in het blauw, samen met de coördinaten X:176, Y:117 en de afmetingen B:80, H:78. Een klein rood vierkantje markeert de linkerbovenhoek van het object.

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 de omsluitende doos van het object bepalen. Dit kan helpen bij het volgen van bewegende objecten of bij het navigeren tussen objecten.

Een op blokken gebaseerde coderingsreeks die begint met het moment waarop de reeks is gestart, gevolgd door een oneindige lus. Binnen de lus maakt het programma met behulp van AIVision1 een momentopname om een blauw object te detecteren. Als het object bestaat, tekent het programma een rechthoek op het Brain-scherm op basis van de positie en grootte van het object. De rechthoek wordt getekend met behulp van de waarden van originX, originY, breedte en hoogte van het object, die worden aangeleverd door de AIVision1-sensor. Dit programma volgt en markeert visueel het gedetecteerde object op het Brain-scherm.

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

tag-ID

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

Drie vierkante kaarten met AprilTags die door een visiesysteem worden gevolgd. Elke kaart is voorzien van een ID-nummer en bijbehorende trackinggegevens. De kaart links heeft het label ID:0 en toont de coördinaten A:350°, X:110, Y:96, B:41, H:41. De middelste kaart, gelabeld ID:3, heeft de coördinaten A:1°, X:187, Y:180, W:57, H:57. De kaart rechts heeft het label ID:9, met de coördinaten A:3°, X:237, Y:89, W:38, H:38. Elke kaart heeft een witte omtrek en het systeem houdt hun posities en oriëntaties bij.

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

Score

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

De afbeelding toont vier objecten die door een visueel systeem worden gevolgd: twee ballen en twee ringen. De rode bal is gemarkeerd met de coördinaten X:122, Y:84, B:67, H:66 en een score van 99%. De blauwe bal heeft X:228, Y:86, B:70, H:68, met een score van 99%. De groene ring heeft de coördinaten X:109, Y:186, B:98, H:92 en een score van 99%. De rode ring is gelabeld als X:259, Y:187, B:89, H:91, met een score van 99%. Elk object is met een witte rand omlijnd, wat de nauwkeurigheid van de tracking aangeeft.

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.

Een lichtblauw codeerblok. Het bevat een opdracht om het object item voor AIVision1 in te stellen op 1. Dit blok maakt deel uit van een op blokken gebaseerde codeeromgeving, die doorgaans wordt gebruikt om te definiëren op welk object of item de AI Vision-sensor moet focussen of moet volgen. De vorm van het blok heeft lichte rondingen, wat past bij de modulaire aard van het visuele coderingsplatform.

Wanneer de AI Vision Sensor meerdere objecten detecteert, worden deze in de 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 interface van AI Vision Utility met twee blauwe kubussen aan de linkerkant, elk gemarkeerd met hun X- en Y-coördinaten en afmetingen. Het systeem is verbonden en AprilTags is ingeschakeld, terwijl AI-classificatie is uitgeschakeld. Rechts worden de instellingen voor de blauwe kleur weergegeven met instelbare tinten en verzadigingsbereiken, respectievelijk ingesteld op 22 en 0,34. Er is een optie om kleur toe te voegen of in te stellen en video te bevriezen. De firmware is up-to-date en draait op versie 1.0.0.b16. Onderaan is een knop om te sluiten beschikbaar.

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 Utility-interface, met twee blauwe kubussen die zijn gelabeld met hun X-, Y- en dimensiegegevens. De linker kubus heeft coördinaten X:127, Y:179 en afmetingen B:136, H:123, terwijl de rechter kubus coördinaten X:233, Y:74 en afmetingen B:78, H:87 heeft. Het systeem is verbonden, AprilTags is ingeschakeld en AI-classificatie is uitgeschakeld. De kleurinstellingen voor blauw hebben een tintbereik van 22 en een verzadiging van 0,34. Onderaan worden een knop Video bevriezen en firmware-informatie (versie 1.0.0.b16) weergegeven.

In dit geval 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 omte of de AI Vision Sensor eerst objecten uit die momentopname heeft gedetecteerd. Hier komt het blokObject Exists in het spel.

Bestaat er een lichtblauw zeshoekig codeblok met de tekst AIVision1 object? Dit blok maakt deel uit van een op blokken gebaseerde coderingsomgeving, die doorgaans wordt gebruikt om te controleren of een object wordt gedetecteerd door de AI Vision-sensor met het label AIVision1. Het blok is ontworpen om te passen binnen een modulaire coderingsstructuur, met de lichte rondingen en vormen die kenmerkend zijn voor dergelijke omgevingen.

Dit blok retourneert de waardeTrue ofFalse als er objecten zijn gedetecteerd in de laatst genomen momentopname.

Dit blok moetworden gebruikt om ervoor te dat u niet probeert gegevens te halen uit een mogelijk lege momentopname.

Een op blokken gebaseerde coderingsreeks die begint met wanneer gestart, gevolgd door een eeuwige lus. Binnen de lus maakt de AI Vision-sensor (AIVision2) een momentopname om de kleur blauw te detecteren. Als een object met de blauwe visuele handtekening wordt gedetecteerd, rijdt de robot vooruit. Als er geen object wordt gedetecteerd, stopt de robot met rijden. De blokken worden gestapeld om de voorwaardelijke logica van het programma weer te geven, waarbij de aanwezigheid van een gedetecteerd object de beweging van de robot bestuurt.

Zo maakt de robot bijvoorbeeld voortdurend snapshots met de AI Vision Sensor. Als hij object met de “Blauwe” kleurensignatuuridentificeert, zal hij vooruit rijden.


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


Aantal objecten

Een lichtblauw, afgerond coderingsblok met het label AIVision1-objecttelling. Dit blok wordt gebruikt in een op blokken gebaseerde coderingsomgeving om het aantal objecten op te halen dat is gedetecteerd door de AI Vision-sensor met het label AIVision1. Het blok past in een modulaire structuur die vaak wordt gebruikt in visuele programmeerinterfaces voor robotica of visiesystemen.

Door het blok Objectaantal te gebruiken, kunt u zien hoeveel objecten van een specifieke kleurensignatuur de AI Vision Sensor kan zien in de laatste momentopname. 

De interface van AI Vision Utility met twee blauwe kubussen aan de linkerkant. Het systeem is verbonden, AprilTags is ingeschakeld en AI-classificatie is uitgeschakeld. De interface geeft instellingen weer voor het detecteren van de kleur blauw, waarbij de tint is ingesteld op 22 en de verzadiging op 0,34. Er zijn knoppen aanwezig waarmee u de video kunt bevriezen en kleuren kunt toevoegen of instellen. De firmware wordt als up-to-date aangegeven en draait op versie 1.0.0.b16. Er is ook een knop om de verbinding te verbreken of het hulpprogramma te sluiten.

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

Een op blokken gebaseerde coderingsreeks die begint met het moment van starten, gevolgd door een oneindige lus. Binnen de lus maakt het programma met behulp van AIVision2 een momentopname om de blauwe visuele handtekening te detecteren. Hiermee wordt de console gewist en opnieuw ingesteld voordat wordt gecontroleerd of er blauwe objecten worden gedetecteerd. Als er een blauw object bestaat, wordt het aantal objecten op de console afgedrukt. Vervolgens wacht het programma twee seconden voordat het proces wordt herhaald. De blokken representeren visueel een continue controle op blauwe objecten, waarbij de resultaten in de console worden weergegeven.Een console-uitvoer met het getal 2 afgedrukt. De console is onderdeel van een grotere interface die waarschijnlijk resultaten weergeeft van een programma dat in een op blokken gebaseerde codeeromgeving wordt uitgevoerd. Bovenaan de console bevinden zich knoppen voor extra acties of bedieningselementen. Het programma dat hier wordt uitgevoerd, stuurt gegevens naar de Print Console, die het resultaat 2 op het scherm weergeeft.

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

Een vervolgkeuzemenu voor het selecteren van objecteigenschappen gerelateerd aan AIVision1. De geselecteerde optie is breedte. In het menu staan andere opties, waaronder hoogte, centerX, centerY, hoek, originX, originY, tagID en score. Met deze opties kan de gebruiker specifieke datapunten ophalen van het object dat door de AI Vision-sensor is gedetecteerd. Zo beschikt u over flexibiliteit voor het volgen of meten van verschillende kenmerken van het object.

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

Objecteigenschappen die uit gemaakte momentopnamen kunnen worden gehaald, zijn:

  • breedte
  • hoogte
  • centrumX
  • centrumY
  • hoek
  • oorsprongX
  • oorsprongY
  • tag-ID
  • score

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


Gedetecteerd AprilTag is

Een lichtblauw zeshoekig blok van een codeerinterface. Het bevat de opdracht om te controleren of de door AIVision1 gedetecteerde AprilTag overeenkomt met de waarde 1. Dit blok wordt gebruikt in een op blokken gebaseerde coderingsomgeving en is ontworpen om te evalueren of een specifieke AprilTag aanwezig is. De vorm en structuur zorgen ervoor dat het in andere logische blokken past, die doorgaans worden gebruikt bij visuele programmering voor robotica of AI-visietaken.

Het blokgedetecteerde AprilTag is 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 een visiesysteem. Elke tag heeft een ID en bijbehorende coördinaten. De linker tag is gelabeld ID:0, met coördinaten X:110, Y:96, B:41, H:41. Het middelste label is gelabeld ID:3, met de coördinaten X:187, Y:180, B:57, H:57. De rechtertag heeft het label ID:9, met de coördinaten X:237, Y:89, B:38, H:38.

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 worden drie AprilTags gedetecteerd met ID's 0, 3 en 9. Ze worden in oplopende volgorde van hun ID in de matrix 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

Een lichtblauw zeshoekig blok uit een op blokken gebaseerde codeeromgeving. Het blok bevat de opdracht AIVision1 AI-classificatie is BlueBall? Dit blok controleert of de AI Vision-sensor (AIVision1) het gedetecteerde object heeft geclassificeerd als een BlueBall. Het blok bevat vervolgkeuzemenu's waarmee gebruikers verschillende objecten of AI-classificaties kunnen selecteren voor tracking- en besluitvormingsdoeleinden in een visuele programmeerinterface.

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: