AI-visie#

Invoering#

De AI-visiesensor van de VEX AIM-codeerrobot detecteert en volgt objecten, kleuren en AprilTag-ID’s. Hierdoor kan de robot zijn omgeving analyseren, objecten volgen en reageren op basis van de gedetecteerde visuele gegevens.

De AI-visiesensor heeft een resolutie van 320×240 pixels. Het nulpunt (0, 0) bevindt zich in de linkerbovenhoek, waardoor het midden van de sensor op (160, 120) ligt, zoals weergegeven in het onderstaande diagram:

Een diagram dat de resolutie van de AIM AI Vision Sensor weergeeft, met de coördinaat 0, 0 linksboven in het diagram, 320, 0 rechtsboven en 0, 240 linksonder, met 160, 120 precies in het midden.

Hieronder vindt u een lijst van alle blokken:

Acties — Bedien de AI Vision-feed en leg objectgegevens vast.

  • AI Vision-viewer op het scherm — Hiermee kunt u de live AI Vision-feed op het scherm van de robot in- of uitschakelen.

  • get object data — Legt gegevens vast voor een specifieke signatuur, zoals een geconfigureerde kleur, een vooraf getraind object of een AprilTag ID.

Instellingen — Pas aan welke gedetecteerde objecten worden geopend.

Waarden — Retourneert de aanwezigheid, classificatie en eigenschappen van een object.

Acties#

AI Vision-viewer op het scherm#

Met het stackblok AI Vision viewer on screen kunt u de live AI Vision-feed op het scherm van de robot in- of uitschakelen. Wanneer de feed is ingeschakeld, worden realtime sensorgegevens weergegeven, waardoor andere afbeeldingen of tekst niet zichtbaar zijn. Om andere inhoud weer te geven, kunt u dit blok gebruiken om de feed te verbergen.

Het blok ‘AI Vision dashboard stack weergeven of verbergen’.#
AI Vision [tonen v] viewer op scherm

Parameters

Beschrijving

status

Hiermee regelt u de weergave van de datafeed op het scherm van de robot: show toont de datafeed, terwijl hide de datafeed van het scherm verwijdert.

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst ‘Bekijk de feed van de AI Vision Sensor gedurende vijf seconden’. Een ‘toon AI Vision dashboard’-blok toont de feed, waarna een ‘wacht’-blok de uitvoering vijf seconden pauzeert. Na de wachttijd verwijdert een ‘verberg AI Vision dashboard’-blok de feed uit het zicht.#
wanneer gestart
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [tonen v] viewer op scherm
wacht [5] seconden
AI Vision [verbergen v] viewer op scherm

objectgegevens ophalen#

Het stackblok get object data filtert gegevens uit het frame van de AI Vision Sensor tot één enkele signatuur: een opgeslagen beschrijving van iets dat de sensor kan herkennen, zoals een vooraf getraind object, een AprilTag ID of een geconfigureerde kleur of kleurcode.

Kleuren en kleurcodes moeten eerst worden geconfigureerd in de AI Vision Utility voordat ze met dit blok kunnen worden gebruikt.

De dataset bevat objecten die van groot naar klein zijn gesorteerd op breedte, beginnend bij index 0. De eigenschappen van elk object kunnen worden opgevraagd via het blok AI Vision object property. Er wordt een lege dataset gerapporteerd als er geen overeenkomende objecten worden gevonden.

Het Get object data stack-blok.#
haal [sportbal v] gegevens op uit AI Vision

Parameter

Beschrijving

handtekening

Filtert de dataset zodat alleen gegevens met de opgegeven signatuur worden weergegeven. Beschikbare signaturen zijn:

  • sportbal
  • oranje vat
  • blauw vat
  • AIM-robot
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • alle lading - Sportballen en alle vaten
  • NAAM - Een kleur of kleurcode, waarbij NAAM de naam is die is geconfigureerd in de AI Vision Utility

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst “Beweeg vooruit als een sportbal wordt gedetecteerd”. Een objectgegevens ophalen-blok legt een afbeelding van een sportbal vast. Een ‘als’-blok controleert vervolgens of er een AI Vision-object bestaat. Indien dit waar is, beweegt een ‘beweeg vooruit’-blok de robot 10 millimeter vooruit.#
wanneer gestart
[Move forward if a sports ball is detected.]
altijd
haal [sportbal v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
beweeg [vooruit v] voor [10] [mm v] ▶

Kleursignaturen#

Een kleursignatuur is een unieke kleur die de AI Vision Sensor kan herkennen. Deze signaturen stellen de sensor in staat objecten te detecteren en te volgen op basis van hun kleur. Zodra een kleursignatuur is geconfigureerd in de AI Vision Utility, kan de sensor objecten met die specifieke kleur in zijn gezichtsveld identificeren.

Kleursignaturen worden in het get object data blok gebruikt om gekleurde objecten in realtime te verwerken en te detecteren.

De AI Vision Utility toont een aangesloten beeldsensor die twee gekleurde objecten detecteert. Aan de linkerkant wordt een live camerabeeld weergegeven met een blauw kader links en een rood kader rechts, beide omlijnd met witte kaders. Zwarte labels tonen hun respectievelijke namen, coördinaten en afmetingen. Aan de rechterkant bevinden zich instellingen voor de kleursignatuur, met schuifregelaars voor de tint en verzadiging van zowel het rode als het blauwe kader. Onderaan bevinden zich knoppen voor het toevoegen van kleuren, het pauzeren van de video, het kopiëren en opslaan van de afbeelding, samen met een sluitknop in de rechterbenedenhoek.

Voorbeeld

wanneer gestart
[Display if any objects matching the Red_Box signature is detected.]
altijd
stel cursor in op rij [1] kolom [1] op scherm
wis rij [1] op scherm
[Change the signature to any configured Color Signature.]
haal [Red_Box v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
druk [Color signature detected!] af op scherm ▶

Kleurcodes#

Een kleurcode is een gestructureerd patroon dat bestaat uit 2 tot 4 kleursignaturen die in een specifieke volgorde zijn gerangschikt. Zodra een kleurcode is geconfigureerd in de AI Vision Utility, kan de sensor vooraf gedefinieerde kleurpatronen herkennen.

Kleurcodes zijn bijzonder handig voor het identificeren van complexe objecten, het afstemmen op spelelementen of het creëren van unieke markeringen voor autonome navigatie.

De interface van AI Vision Utility toont een aangesloten beeldsensor die twee naast elkaar gelegen objecten detecteert: een blauwe doos aan de linkerkant en een rode doos aan de rechterkant. Deze objecten zijn samen gegroepeerd in één wit kader met het label BlauwRood. De detectiegegevens omvatten de hoek (A:11°), coördinaten (X:143, Y:103), breedte (W:233) en hoogte (H:108). In het rechterpaneel worden drie kleursignaturen weergegeven: Rood_Doos, Blauw_Doos en BlauwRood, met instelbare tint- en verzadigingsbereiken. De BlauwRood-signatuur combineert de Blauw_Doos en de Rood_Doos. Onder de videostream bevinden zich knoppen met de labels Video bevriezen, Afbeelding kopiëren, Afbeelding opslaan en Sluiten.

Voorbeeld

wanneer gestart
[Display if any objects matching the BlueRed code is detected.]
altijd
stel cursor in op rij [1] kolom [1] op scherm
wis rij [1] op scherm
[Change the signature to any configured Color Code.]
haal [BlueRed v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
druk [Color code detected!] af op scherm ▶

Instellingen#

stel AI Vision-objectitem in#

Het stackblok set AI Vision object item bepaalt welk item in de dataset gebruikt moet worden.

Het Set AI Vision object item stack block.#
stel AI Vision object-item in op (1)

Parameters

Beschrijving

item

Het nummer van het item in de dataset dat gebruikt moet worden.

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst “Toon de grootste gedetecteerde AprilTag ID”. Binnen een oneindige lus legt een blok ‘Get object data’ een afbeelding vast van de AprilTag ID’s. Een ‘if’-blok controleert of een AI Vision-object bestaat. Zo ja, dan wijst een blok ‘Set AI Vision object item’ het aantal objecten toe aan een variabele, en een printblok toont de tag-ID van het gedetecteerde object op het scherm.#
wanneer gestart
[Display the width of the smallest detected object.]
altijd
haal [alle lading v] gegevens op uit AI Vision
wis rij [1] op scherm
stel cursor in op rij [1] kolom [1] op scherm
als <AI Vision object bestaat?> dan
stel AI Vision object-item in op (AI Vision object aantal)
druk (AI Vision object [breedte v]) af op scherm ▶

Waarden#

heeft object#

Het Booleaanse blok heeft object rapporteert of de robot momenteel een gedetecteerd object heeft ten opzichte van zijn Kicker.

  • Klopt — De robot heeft het object.

  • Onjuist — De robot heeft het object niet.

<heeft [sportbal v] ? :: custom-ai-vision>

Parameter

Beschrijving

voorwerp

Het object dat de robot moet detecteren:

  • sportbal
  • elk willekeurig vat
  • oranje vat
  • blauw vat

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst ‘Schop wanneer de robot een bal heeft’. Binnen een oneindige lus controleert een ‘als’-blok of de robot een sportbal heeft. Zo ja, dan wordt een ‘schop’-objectblok met gemiddelde kracht uitgevoerd.#
wanneer gestart
[Kick when the robot has a sports ball.]
altijd
als <heeft [sportbal v] ? :: custom-ai-vision> dan
schop object [gemiddeld v]

Het AI Vision-object bestaat#

Het Booleaanse blok AI Vision object exists geeft aan of er een object in de dataset is gedetecteerd.

  • Waar — De dataset bevat een gedetecteerd object.

  • Onjuist — Er zijn geen objecten gedetecteerd.

Het AI Vision-object bestaat in een Booleaanse blok.#
<AI Vision object bestaat?>

Parameters

Beschrijving

Dit blok heeft geen parameters.

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst ‘Beweeg vooruit als een bal wordt gedetecteerd’. Een ‘get object data’-blok legt een afbeelding van een sportbal vast. Een ‘if’-blok controleert vervolgens of er een AI Vision-object bestaat. Indien dit waar is, beweegt een ‘beweeg vooruit’-blok de robot 10 millimeter vooruit.#
wanneer gestart
[Move forward if a sports ball is detected.]
altijd
haal [sportbal v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
beweeg [vooruit v] voor [10] [mm v] ▶

Het AI Vision-object is#

Het AI Vision-object is een Booleaanse code die aangeeft of een gedetecteerd object overeenkomt met een specifieke classificatie.

  • Waar — Het item in de dataset is het specifieke object.

  • Onjuist — Het item in de dataset is niet het specifieke object.

De AI Vision AI Classification is een object Boolean-blok.#
<AI Vision object is [sportbal v]?>

Parameter

Beschrijving

voorwerp

Met welk object moet het item vergeleken worden:

  • sportbal
  • oranje vat
  • blauw vat
  • AIM-robot

Voorbeeld

Een stapel blokken die begint met een ‘wanneer gestart’-blok, gevolgd door een commentaarblok met de tekst “Weergeven als een sportbal is gedetecteerd”. Binnen een oneindige lus legt een blok voor het ophalen van objectgegevens een afbeelding vast met behulp van AI-classificaties. Het scherm wordt gewist en de cursor wordt ingesteld op rij 1, kolom 1. Een ‘if’-blok controleert of een AI Vision-object bestaat en, zo ja, controleert een ander ‘if’-blok of de classificatie een sportbal is. Zo ja, dan geeft een printblok “Bal gedetecteerd!” weer op het scherm, gevolgd door een wachtblok dat 0,5 seconde pauzeert voordat het proces wordt herhaald.#
wanneer gestart
[Display if a sports ball is detected.]
altijd
haal [alle lading v] gegevens op uit AI Vision
wis rij [1] op scherm
stel cursor in op rij [1] kolom [1] op scherm
als <AI Vision object bestaat?> dan
als <AI Vision object is [sportbal v]?> dan
druk [Sports ball detected!] af op scherm ▶
wacht [0.5] seconden

Het AI Vision-object is het AprilTag-ID.#

Het Booleaanse blok AI Vision object is AprilTag ID geeft aan of een gedetecteerde AprilTag ID overeenkomt met een specifieke ID.

  • Klopt — De AprilTag ID is het nummer.

  • Onjuist — De AprilTag ID is niet het nummer.

De AI Vision heeft vastgesteld dat de AprilTag ID een Booleaanse waarde is.#
<AI Vision object is AprilTag ID [1] ?>

Parameters

Beschrijving

AprilTag ID

Het nummer dat vergeleken moet worden met het gedetecteerde AprilTag ID-nummer.

AI Vision object count#

Het AI Vision object count reporterblok rapporteert het aantal gedetecteerde objecten in de dataset als een geheel getal.

AI Vision object aantal

Parameters

Beschrijving

Dit blok heeft geen parameters.

Voorbeeld

wanneer gestart
[Display the amount of sports balls and barrels.]
altijd
wis rij [1] op scherm
stel cursor in op rij [1] kolom [1] op scherm
haal [alle lading v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
druk (AI Vision object aantal) af op scherm ▶
einde
wacht [0.5] seconden

AI Vision-objecteigenschap#

Er zijn negen eigenschappen die bij elk object worden meegeleverd (zie hieronder) en die worden opgeslagen nadat het get object data blok is gebruikt.

Het objecteigenschapsrapportageblok van AI Vision.#
AI Vision object [breedte v]

Alle eigenschapswaarden, behalve tagID, beschrijven de positie, grootte, oriëntatie of richting van het gedetecteerde object op het moment dat het blok objectgegevens ophalen werd gebruikt. Deze waarden worden gemeten in pixels of graden, gebaseerd op de resolutie van de sensor van 320 bij 240 pixels.

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. De x- en y-assen zijn respectievelijk gelabeld van 0 tot 320 van links naar rechts aan de bovenkant en van 0 tot 240 van boven naar beneden aan de linkerkant.

Parameter

Beschrijving

eigendom

Welke eigenschap van het gedetecteerde object te gebruiken:

breedte#

De eigenschap width geeft de breedte van het gedetecteerde object in pixels weer als een geheel getal van 1 tot 320.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op breedte.#
AI Vision object [breedte v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Twee verticale rode stippellijnen lopen vanaf de bovenkant van het kader naar de linker- en rechterrand van het kader. Een dubbele zwarte pijl tussen deze lijnen geeft de breedte aan.

Voorbeeld

wanneer gestart
[Move towards a blue barrel until its width is larger than 100 pixels.]
altijd
haal [blauwe ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [breedte v]) [math_less_than v] [100]> dan
beweeg [vooruit v]
einde
anders
stop alle beweging

hoogte#

De eigenschap hoogte geeft de hoogte van het gedetecteerde object in pixels weer als een geheel getal van 1 tot 240.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ‘height’ ingesteld.#
AI Vision object [hoogte v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Twee horizontale rode stippellijnen lopen vanaf de linkerkant van het kader naar de boven- en onderrand van het kader. Een dubbele zwarte pijl tussen deze lijnen geeft de hoogte aan.

Voorbeeld

wanneer gestart
[Move towards a blue barrel until its height is larger than 100 pixels.]
altijd
haal [blauwe ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [hoogte v]) [math_less_than v] [100]> dan
beweeg [vooruit v]
einde
anders
stop alle beweging

centrumX#

De eigenschap centerX geeft de x-coördinaat van het middelpunt van het gedetecteerde object in pixels weer als een geheel getal van 0 tot 320.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op centerX.#
AI Vision object [centerX v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Een verticale rode stippellijn loopt vanaf de bovenkant van het kader naar het midden van het kader en geeft de X-coördinaat van het middelpunt aan.

Voorbeeld

wanneer gestart
[Turn slowly until a blue barrel is centered in front of the robot.]
stel draaisnelheid in op [30]%
draai [rechts v]
altijd
haal [blauwe ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <[140] [math_less_than v] (AI Vision object [centerX v]) [math_less_than v] [180]> dan
stop alle beweging

centrumY#

De eigenschap centerY geeft de y-coördinaat van het middelpunt van het gedetecteerde object in pixels weer als een geheel getal van 0 tot 240.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op centerY.#
AI Vision object [centerY v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Een horizontale rode stippellijn loopt vanaf de linkerkant van het kader naar het midden van het kader en geeft de Y-coördinaat van het middelpunt aan.

Voorbeeld

wanneer gestart
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
altijd
haal [blauwe ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [centerY v]) [math_less_than v] [140]> dan
beweeg [vooruit v]
einde
anders
stop alle beweging

oorsprongX#

De eigenschap originX geeft de x-coördinaat van de linkerbovenhoek van het begrenzingskader van het gedetecteerde object weer in pixels als een geheel getal van 0 tot 320.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op originX.#
AI Vision object [originX v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Een verticale rode stippellijn loopt van de bovenkant van het kader naar de linkerrand van het kader en geeft de X-coördinaat van het middelpunt van het kader aan.

Voorbeeld

wanneer gestart
[Display if an orange barrel is to the left or the right.]
altijd
wis rij [1] op scherm
stel cursor in op rij [1] kolom [1] op scherm
haal [oranje ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [originX v]) [math_less_than v] [160]> dan
druk [To the left!] af op scherm ▶
anders
druk [To the right!] af op scherm ▶
einde
wacht [0.5] seconden

oorsprong#

De eigenschap originY geeft de y-coördinaat van de linkerbovenhoek van het begrenzingskader van het gedetecteerde object weer in pixels als een geheel getal van 0 tot 240.

Opmerking: Pixelwaarden zijn relatief ten opzichte van het coördinatensysteem van de sensor. Zie het diagram in de Inleiding ter referentie.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op originY.#
AI Vision object [originY v]

Een blauw vat met een oranje streep is gecentreerd in het kader, omgeven door een zwart kader. Een horizontale rode stippellijn loopt van de linkerkant van het kader naar de bovenrand van het kader en geeft de Y-coördinaat van het beginpunt van het kader aan.

Voorbeeld

wanneer gestart
[Display if an orange barrel is close or far from the robot.]
altijd
wis rij [1] op scherm
stel cursor in op rij [1] kolom [1] op scherm
haal [oranje ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [originY v]) [math_less_than v] [80]> dan
druk [Far!] af op scherm ▶
anders
druk [Close!] af op scherm ▶
einde
wacht [0.5] seconden

rotatie#

De eigenschap rotatie geeft de oriëntatie van de gedetecteerde AprilTag ID of kleurcode weer als een geheel getal in graden van 0 tot 359.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op rotatie.#
AI Vision object [rotatie v]

Een camera-interface toont een verticaal gestapeld object met een blauwe bovenhelft en een rode onderhelft, gecentreerd in het beeld. Een label onder het object luidt Rood_Blauw A:270° CX:185 CY:81 W:93 H:150, met de naam van het object, de rotatiehoek, de X- en Y-coördinaten van het middelpunt, de breedte en de hoogte. Rasterlijnen en numerieke assen markeren de afmetingen van het beeld, waarbij X varieert van 0 tot 320 en Y van 0 tot 240.

Voorbeeld

wanneer gestart
[Slide left or right depending on how the Color Code is rotated.]
altijd
haal [Red_Blue v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <[50] [math_less_than v] (AI Vision object [rotatie v]) [math_less_than v] [100]> dan
beweeg [rechts v]
anders als <[270] [math_less_than v] (AI Vision object [rotatie v]) [math_less_than v] [330]> dan
beweeg [links v]
anders
stop alle beweging
einde
anders
stop alle beweging

handelswijze#

De eigenschap richting geeft aan hoe ver een object zich links of rechts van het midden van het gezichtsveld van de AI Vision Sensor bevindt, uitgedrukt in graden. Een waarde van 0 betekent dat het object in het midden staat, positieve waarden betekenen dat het object zich rechts bevindt en negatieve waarden betekenen dat het object zich links bevindt.

Een VEX AIM-codeerrobot op een veld, met een sportbal diagonaal voor en links. Er is een hoek getekend tussen het midden van de robot en de sportbal, die is aangeduid met -30 graden. Een VEX AIM-codeerrobot op een veld, met een sportbal diagonaal voor en rechts. Er is een hoek getekend tussen het midden van de robot en de sportbal, die is aangeduid met 30 graden.
wanneer gestart
[Keep the blue barrel directly in front of the robot.]
stel draaisnelheid in op [40]%
altijd
haal [blauwe ton v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
als <(AI Vision object [koers v]) [math_greater_than v] [5]> dan
draai [rechts v]
anders als <(AI Vision object [koers v]) [math_less_than v] [-5]> dan
draai [links v]
anders
stop alle beweging

tagID#

De eigenschap tagID geeft het identificatienummer van de gedetecteerde AprilTag ID weer als een geheel getal.

Het eigenschappenblok van het AI Vision-object met de parameter ingesteld op tagID.#
AI Vision object [tagID v]

Voorbeeld

wanneer gestart
[Move forward when AprilTag ID 0 is detected.]
altijd
haal [AprilTag ID 0 v] gegevens op uit AI Vision
als <AI Vision object bestaat?> dan
beweeg [vooruit v]
einde
stop alle beweging