Vision#

Introduktion#

VEX AIR-drönaren har två visuella sensorer som detekterar och spårar AprilTag-ID:n. Dessa gör det möjligt för drönaren att analysera sin omgivning, följa objekt och reagera baserat på detekterad visuell data.

Nedan följer en lista över alla tillgängliga block:

Åtgärder — Styr Vision-flödet och samla in objektdata.

Inställningar — Justera vilka detekterade objekt som ska nås.

Värden — Hämta objektets närvaro, klassificering och egenskaper.

Åtgärder#

hämta objektdata#

Stackblocket get object data filtrerar data från Vision Sensors ram. Vision Sensors kan upptäcka AprilTag ID:n.

Datasetet lagrar objekt sorterade från störst till minst efter bredd, med början vid index 0. Varje objekts egenskaper kan nås med hjälp av blocket Vision object property. En tom dataset rapporteras om inga matchande objekt upptäcks.

Blocket Hämta objektdatastacken.#
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera

Parameter

Beskrivning

signatur

Filtrerar datamängden så att den endast inkluderar data från den givna signaturen. Den tillgängliga signaturen är alla AprilTags.

kamera

Visionssensorn att hämta data från, antingen framåt eller nedåt.

Exempel

när startad
[Climb upward when an AprilTag ID is detected.]
lyft till [300] [mm v] ▶
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
om <Vision-objekt finns?> då
klättra [upp v] i [200] [mm v] ▶

Inställningar#

ange Vision-objekt#

Stackblocket set Vision object item anger vilket objekt i datamängden som ska användas.

Objektstackblocket Set AI Vision-objektet.#
ställ in Vision-objektpost till [1]

Parametrar

Beskrivning

punkt

Numret på objektet i datauppsättningen som ska användas.

Exempel

när startad
[Display the smallest-appearing AprilTag ID.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
ställ in Vision-objektpost till (antal Vision-objekt)
skriv ut (Vision-objekt [id v]) i konsolen ▶

Värden#

Visionsobjektet finns#

Det booleska blocket Vision-objektet finns rapporterar om den angivna Vision-sensorn för närvarande detekterar några objekt.

  • Sant — Den angivna synsensorn detekterar ett objekt.

  • Falskt — Den angivna synsensorn detekterar inte ett objekt.

Visa eller dölj stackblocket för AI Vision-instrumentpanelen.#
<Vision-objekt finns?>

Parameter

Beskrivning

Det här blocket har inga parametrar.

Exempel

när startad
[Climb upward when an AprilTag ID is detected.]
lyft till [300] [mm v] ▶
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
om <Vision-objekt finns?> då
klättra [upp v] i [200] [mm v] ▶

Visionobjektet är AprilTag ID#

Vision-objektet är AprilTag ID Det booleska blocket rapporterar om AprilTag ID är ett specifikt ID-nummer.

  • Sant — AprilTag-ID:t är numret.

  • Falskt — AprilTag-ID:t är inte numret.

AI Vision upptäckte att AprilTag-ID:t är ett booleskt block.#
<Vision object is AprilTag ID [1]>

Parametrar

Beskrivning

AprilTag ID-nummer

Siffran som ska jämföras med det detekterade AprilTag-ID-numret från 0 till 37.

Exempel

när startad
[Display when the target AprilTag ID is detected.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
om <Vision object is AprilTag ID [21]> då
skriv ut [Target found!] i konsolen ▶
avsluta

Antal visionsobjekt#

Rapporteringsblocket Vision-objektantal rapporterar antalet detekterade objekt i datamängden som ett heltal.

Objektstackblocket Set AI Vision-objektet.#
(antal Vision-objekt)

Parametrar

Beskrivning

Det här blocket har inga parametrar.

Exempel

när startad
[Display how many AprilTag IDs are detected.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
skriv ut (antal Vision-objekt) i konsolen ▶
vänta [0.2] sekunder

Vision-objektets egenskap#

Det finns flera egenskaper som ingår i varje objekt (visas nedan) som lagras efter att blocket get object data har använts.

Rapporteringsblocket för AI Vision-objektets egenskap.#
(Vision-objekt [bredd v])

Alla egenskapsvärden utom id beskriver det detekterade objektets position, storlek, orientering eller bäring vid det ögonblick då blocket get object data användes. Dessa värden mäts i pixlar eller grader. Varje synsensor har en annan upplösning:

  • Framåtriktad: 640 x 480 pixlar

  • Nedåtvänd: 640 x 400 pixlar

Parameter

Beskrivning

egendom

Vilken egenskap för det detekterade objektet som ska användas:

bredd#

Egenskapen width rapporterar bredden på det detekterade objektet i pixlar som ett heltal från 1 till 640.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på width.#
(Vision-objekt [bredd v])

Exempel

när startad
[Show if the AprilTag ID appears large or small.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
om <(Vision-objekt [bredd v]) [math_greater_than v] [100]> då
skriv ut [Large] i konsolen ▶
annars
skriv ut [Small] i konsolen ▶
avsluta
avsluta
vänta [0.2] sekunder

höjd#

Egenskapen höjd rapporterar höjden på det detekterade objektet i pixlar som ett heltal från 1 till 480.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på höjd.#
(Vision-objekt [höjd v])

Exempel

när startad
[Show if the AprilTag ID appears large or small.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
om <(Vision-objekt [höjd v]) [math_greater_than v] [100]> då
skriv ut [Large] i konsolen ▶
annars
skriv ut [Small] i konsolen ▶
avsluta
avsluta
vänta [0.2] sekunder

centerX#

Egenskapen centerX rapporterar x-koordinaten för det detekterade objektets centrum i pixlar som ett heltal från 1 till 640.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på centerX.#
(Vision-objekt [centerX v])

Exempel

när startad
[Show if an AprilTag ID is to the left or the right of the camera.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
om <(Vision-objekt [centerX v]) [math_less_than v] [320]> då
skriv ut [To the left] i konsolen ▶
annars
skriv ut [To the right] i konsolen ▶
avsluta
avsluta
vänta [0.2] sekunder

centerY#

Egenskapen centerY rapporterar y-koordinaten för det detekterade objektets centrum i pixlar som ett heltal från 1 till 480.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på centerY.#
(Vision-objekt [centerY v])

Exempel

när startad
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
lyft till [800] [mm v] ▶
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
om <Vision-objekt finns?> då
om <(Vision-objekt [centerY v]) [math_less_than v] [240]> då
skriv ut [Below the target!] i konsolen ▶
annars
skriv ut [Above the target!] i konsolen ▶
avsluta
annars
skriv ut [No target found!] i konsolen ▶

lager#

Egenskapen bearing rapporterar en vinkel som indikerar ett objekts position i förhållande till drönaren. Beteendet beror på vilken Vision Sensor som används.

Ett värde på 0° indikerar att objektets och sensorns mitt är i linje. Positiva värden betyder att objektet är till höger, medan negativa värden betyder att objektet är till vänster.

Sensor

Returer

Nedåt

Grader som drönarens framsida måste vridas för att passa in i objektets mitt, från –180º till 180º.

Fram

Grader som objektet är förskjutet till vänster eller höger om synsensorns centrum från –180º till 180º.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på centerY.#
(Vision-objekt [bäring v])

Exempel

när startad
[Align the front of the drone to an AprilTag ID.]
ställ in svänghastighet till (15)%
lyft till [500] [mm v] ▶
för alltid
hämta [alla AprilTags v]-data från Vision [nedåt v]-kamera
om <Vision-objekt finns?> då
om <[-20] [math_less_than v] (Vision-objekt [bäring v]) [math_less_than v] [20]> då
[Hover once sensor is centered on the AprilTag ID.]
hovra
spela ljud [lyckat v] ▶
annars om <(Vision-objekt [bäring v]) [math_less_than v] [-21]> då
sväng [vänster v]
annars
sväng [höger v]

rotation#

Egenskapen rotation rapporterar orienteringen för det detekterade AprilTag-ID:t som ett heltal i grader från 1 till 359.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på rotation.#
(Vision-objekt [rotation v])

Exempel

när startad
[Turn left or right based on the rotation of an AprilTag ID.]
lyft till [1000] [mm v] ▶
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
om <Vision-objekt finns?> då
om <[240] [math_less_than v] (Vision-objekt [rotation v]) [math_less_than v] [300]> då
sväng [vänster v] i [90] grader ▶
annars om <[60] [math_less_than v] (Vision-objekt [rotation v]) [math_less_than v] [120]> då
sväng [höger v] i [90] grader ▶
annars
hovra

ursprungX#

Egenskapen originX rapporterar x-koordinaten för det övre vänstra hörnet av det detekterade objektets avgränsningsram i pixlar som ett heltal från 1 till 640.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på originX.#
(Vision-objekt [originX v])

Exempel

när startad
[Draw lines to the AprilTag ID origin from all corners.]
för alltid
rensa skärm
get [all AprilTags v] data from vision [forward v] camera
om <Vision-objekt finns?> då
rita linje [0] [0] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [0] [480] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [640] [0] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [640] [480] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
avsluta
vänta [0.2] sekunder

ursprungY#

Egenskapen originY rapporterar y-koordinaten för det övre vänstra hörnet av det detekterade objektets avgränsningsram i pixlar som ett heltal från 1 till 480.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på originY.#
(Vision-objekt [originY v])

Exempel

när startad
[Draw lines to the AprilTag ID origin from all corners.]
för alltid
rensa skärm
get [all AprilTags v] data from vision [forward v] camera
om <Vision-objekt finns?> då
rita linje [0] [0] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [0] [480] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [640] [0] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
rita linje [640] [480] (Vision-objekt [originX v]) (Vision-objekt [originY v]) på skärmen
avsluta
vänta [0.2] sekunder

id#

Egenskapen id rapporterar identifieringsnumret för det upptäckta AprilTag-ID:t som ett heltal.

AI Vision-objektets egenskapsstackblock med dess parameter inställd på tagID.#
(Vision-objekt [id v])

Exempel

när startad
[Display the detected AprilTag ID.]
för alltid
hämta [alla AprilTags v]-data från Vision [framåt v]-kamera
rensa konsolen
om <Vision-objekt finns?> då
skriv ut (Vision-objekt [id v]) i konsolen ▶
avsluta
vänta [0.2] sekunder