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

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 typisch is voor op blokken gebaseerde coderingsinterfaces.

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.

Een lichtblauw codeblok met de opdracht om een momentopname van een object of kleur te maken. Er zijn twee vervolgkeuzemenuopties: één met het label AIVision2 en de andere met het label Blauw. Het blok is ontworpen voor gebruik in een op blokken gebaseerde coderingsomgeving, waarin 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 modulaire blokken gebruiken.

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

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

De afbeelding toont een blauwe Buckyball met een witte vierkante omtrek die hem volgt. In de linkerbovenhoek staat een label dat aangeeft dat het een blauw object is, met de coördinaten X:176, Y:117 en de 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 omtreklijn met op het label de volgende afmetingen: X:188, Y:184 en B:144, H:113. In het midden van elke kubus staat een wit kruis. Dit kruis geeft waarschijnlijk het brandpunt voor de tracking aan. 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 met behulp van de AI Vision-sensor (AIVision1) een momentopname 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 zo 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 worden 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 verder weg is.

Een op blokken gebaseerde coderingsreeks die begint met when started, 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 zicht 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 zijn omlijnd met een witte rand, 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 omtreklijn, 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 afmetingen geven de positie en grootte van de kubussen binnen het frame weer.

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.

Een blauwe Buckyball wordt gevolgd door een visiesysteem. Het object wordt omlijnd door een witte omtreklijn, met in het midden een wit kruis. Het label linksboven geeft de kleur van het object aan als 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 het omsluitende kader 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 when started, 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 de 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.

tagID

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. Op elke kaart staat 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, gemarkeerd met ID:3, heeft de coördinaten A:1°, X:187, Y:180, B:57, H:57. De kaart rechts heeft het label ID:9, met de coördinaten A:3°, X:237, Y:89, B:38, H:38. Elke kaart heeft een witte omtrek en het systeem houdt de posities en oriëntaties ervan bij.

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.

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 coderingsomgeving, die doorgaans wordt gebruikt om te definiëren op welk object of item de AI Vision-sensor zich moet richten 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 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 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 zijn 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 sluitknop 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 linkerkubus heeft coördinaten X:127, Y:179 en afmetingen B:136, H:123, terwijl de rechterkubus 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 blauwe kleurinstellingen 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.

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.

Bestaat er een lichtblauw hexagonaal 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 afhankelijk 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.

Een op blokken gebaseerde coderingsreeks die start met when started, gevolgd door een oneindige 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 het objecten met de “Blauwe” identificeert, zal het 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.

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 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 kleur kunt toevoegen of instellen. De firmware wordt aangegeven als up-to-date 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 eeuwige 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. De resultaten worden weergegeven in de console.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 draait, 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 die betrekking hebben op 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 bij 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 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

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 in visuele programmering voor robotica of AI-visietaken.

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 een visiesysteem. Elke tag heeft een ID en bijbehorende coördinaten. De linker tag heeft het label ID:0, met de coördinaten X:110, Y:96, B:41, H:41. Het middelste label is voorzien van ID:3, met de coördinaten X:187, Y:180, B:57, H:57. De rechter tag 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 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

Een lichtblauw hexagonaal 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: