Visie#

Invoering#

De VEX AIR-drone heeft twee vision-sensoren die AprilTag-ID’s detecteren en volgen. Hierdoor kan de drone zijn omgeving analyseren, objecten volgen en reageren op basis van de gedetecteerde visuele gegevens.

Hieronder vindt u een lijst met alle beschikbare blokken:

Acties — Bedien de beeldfeed en leg objectgegevens vast.

Instellingen — Pas aan welke gedetecteerde objecten worden geopend.

Waarden — Haal de aanwezigheid, classificatie en eigenschappen van objecten op.

Acties#

objectgegevens ophalen#

Het stackblok get object data filtert gegevens uit het frame van de Vision Sensor. De Vision Sensors kunnen AprilTag ID’s detecteren.

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 Vision object property. Er wordt een lege dataset gerapporteerd als er geen overeenkomende objecten worden gevonden.

Het Get object data stack-blok.#
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera

Parameter

Beschrijving

handtekening

Filtert de dataset zodat alleen gegevens met de opgegeven signatuur worden weergegeven. De beschikbare signatuur is alle AprilTags.

camera

De beeldsensor kan gegevens ophalen, zowel voorwaarts als neerwaarts.

Voorbeeld

wanneer gestart
[Climb upward when an AprilTag ID is detected.]
stijg op naar [300] [mm v] ▶
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
als <Vision object bestaat?> dan
klim [omhoog v] voor [200] [mm v] ▶

Instellingen#

stel het Vision-objectitem in#

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

Het Set AI Vision object item stack block.#
stel Vision object-item in op [1]

Parameters

Beschrijving

item

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

Voorbeeld

wanneer gestart
[Display the smallest-appearing AprilTag ID.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
stel Vision object-item in op (Vision object aantal)
druk (Vision object [id v]) af op console ▶

Waarden#

Het visieobject bestaat#

Het Booleaanse blok Vision object exists geeft aan of de opgegeven Vision Sensor momenteel objecten detecteert.

  • Waar — De opgegeven beeldsensor detecteert een object.

  • Onjuist — De opgegeven beeldsensor detecteert geen object.

Het blok ‘AI Vision dashboard stack weergeven of verbergen’.#
<Vision object bestaat?>

Parameter

Beschrijving

Dit blok heeft geen parameters.

Voorbeeld

wanneer gestart
[Climb upward when an AprilTag ID is detected.]
stijg op naar [300] [mm v] ▶
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
als <Vision object bestaat?> dan
klim [omhoog v] voor [200] [mm v] ▶

Het Vision-object is AprilTag ID#

Het Booleaanse blok Vision object is AprilTag ID geeft aan of de AprilTag ID een specifiek ID-nummer is.

  • 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.#
<Vision object is AprilTag ID [1]>

Parameters

Beschrijving

AprilTag ID-nummer

Het getal dat vergeleken moet worden met het gedetecteerde AprilTag ID-nummer (van 0 tot 37).

Voorbeeld

wanneer gestart
[Display when the target AprilTag ID is detected.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
als <Vision object is AprilTag ID [21]> dan
druk [Target found!] af op console ▶
einde

Aantal objecten in het gezichtsveld#

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

Het Set AI Vision object item stack block.#
(Vision object aantal)

Parameters

Beschrijving

Dit blok heeft geen parameters.

Voorbeeld

wanneer gestart
[Display how many AprilTag IDs are detected.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
druk (Vision object aantal) af op console ▶
wacht [0.2] seconden

Eigenschap van het Vision-object#

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

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

Alle eigenschapswaarden, behalve id, beschrijven de positie, grootte, oriëntatie of richting van het gedetecteerde object op het moment dat het blok get object data werd gebruikt. Deze waarden worden gemeten in pixels of graden. Elke Vision Sensor heeft een andere resolutie:

  • Vooraanzicht: 640 x 480 pixels

  • Naar beneden gericht: 640 x 400 pixels

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

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

Voorbeeld

wanneer gestart
[Show if the AprilTag ID appears large or small.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
als <(Vision object [breedte v]) [math_greater_than v] [100]> dan
druk [Large] af op console ▶
anders
druk [Small] af op console ▶
einde
einde
wacht [0.2] seconden

hoogte#

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

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

Voorbeeld

wanneer gestart
[Show if the AprilTag ID appears large or small.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
als <(Vision object [hoogte v]) [math_greater_than v] [100]> dan
druk [Large] af op console ▶
anders
druk [Small] af op console ▶
einde
einde
wacht [0.2] seconden

centrumX#

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

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

Voorbeeld

wanneer gestart
[Show if an AprilTag ID is to the left or the right of the camera.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
als <(Vision object [centerX v]) [math_less_than v] [320]> dan
druk [To the left] af op console ▶
anders
druk [To the right] af op console ▶
einde
einde
wacht [0.2] seconden

centrumY#

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

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

Voorbeeld

wanneer gestart
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
stijg op naar [800] [mm v] ▶
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
als <Vision object bestaat?> dan
als <(Vision object [centerY v]) [math_less_than v] [240]> dan
druk [Below the target!] af op console ▶
anders
druk [Above the target!] af op console ▶
einde
anders
druk [No target found!] af op console ▶

handelswijze#

De eigenschap richting geeft een hoek weer die de positie van een object ten opzichte van de drone aangeeft. Het gedrag is afhankelijk van de gebruikte beeldsensor.

Een waarde van 0° geeft aan dat het middelpunt van het object en de sensor op één lijn liggen. Positieve waarden betekenen dat het object zich rechts bevindt, terwijl negatieve waarden betekenen dat het object zich links bevindt.

Sensor

Retourneert

Omlaag

Het aantal graden waarmee de voorkant van de drone moet draaien om zich uit te lijnen met het midden van het object, van –180º tot 180º.

Vooruit

De hoek waarin het object zich links of rechts van het midden van de Vision Sensor bevindt, varieert van –180º tot 180º.

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

Voorbeelden

wanneer gestart
[Align the front of the drone to an AprilTag ID.]
stel draaisnelheid in op (15)%
stijg op naar [500] [mm v] ▶
altijd
haal [alle AprilTags v] gegevens op van Vision [naar beneden v] camera
als <Vision object bestaat?> dan
als <[-20] [math_less_than v] (Vision object [koers v]) [math_less_than v] [20]> dan
[Hover once sensor is centered on the AprilTag ID.]
zweef
speel geluid [succes v] ▶
anders als <(Vision object [koers v]) [math_less_than v] [-21]> dan
draai [links v]
anders
draai [rechts v]

rotatie#

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

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

Voorbeeld

wanneer gestart
[Turn left or right based on the rotation of an AprilTag ID.]
stijg op naar [1000] [mm v] ▶
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
als <Vision object bestaat?> dan
als <[240] [math_less_than v] (Vision object [rotatie v]) [math_less_than v] [300]> dan
draai [links v] voor [90] graden ▶
anders als <[60] [math_less_than v] (Vision object [rotatie v]) [math_less_than v] [120]> dan
draai [rechts v] voor [90] graden ▶
anders
zweef

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 1 tot 640.

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

Voorbeeld

wanneer gestart
[Draw lines to the AprilTag ID origin from all corners.]
altijd
wis scherm
get [all AprilTags v] data from vision [forward v] camera
als <Vision object bestaat?> dan
teken lijn [0] [0] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [0] [480] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [640] [0] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [640] [480] (Vision object [originX v]) (Vision object [originY v]) op scherm
einde
wacht [0.2] 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 1 tot 480.

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

Voorbeeld

wanneer gestart
[Draw lines to the AprilTag ID origin from all corners.]
altijd
wis scherm
get [all AprilTags v] data from vision [forward v] camera
als <Vision object bestaat?> dan
teken lijn [0] [0] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [0] [480] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [640] [0] (Vision object [originX v]) (Vision object [originY v]) op scherm
teken lijn [640] [480] (Vision object [originX v]) (Vision object [originY v]) op scherm
einde
wacht [0.2] seconden

id#

De eigenschap id 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.#
(Vision object [id v])

Voorbeeld

wanneer gestart
[Display the detected AprilTag ID.]
altijd
haal [alle AprilTags v] gegevens op van Vision [vooruit v] camera
wis console
als <Vision object bestaat?> dan
druk (Vision object [id v]) af op console ▶
einde
wacht [0.2] seconden