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.
hämta objektdata — Samlar in data för AprilTag-ID:n.
Inställningar — Justera vilka detekterade objekt som ska nås.
ställ in Vision-objekt — Väljer ett specifikt objekt från listan över detekterade objekt.
Värden — Hämta objektets närvaro, klassificering och egenskaper.
Visionsobjekt finns — Rapporterar om ett objekt har upptäckts.
Vision-objektet är AprilTag ID — Kontrollerar om ett upptäckt AprilTag ID matchar ett specifikt ID.
Antal visionsobjekt — Rapporterar antalet detekterade objekt.
Visionsobjektets egenskap — Hämtar detaljer såsom:
centerX & centerY — Koordinaterna för mittpositionen i sensorns vy.
bäring — Objektets vinkel i förhållande till den främre synsensorn eller de grader som behövs för att drönaren ska vara vänd mot objektet.
rotation — Objektets orientering.
originX & originY — Koordinater för övre vänstra hörnet i sensorns vy.
id — Identifieringsnummer för ett AprilTag-ID.
Å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.
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.
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.
<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.
<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.
(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.
(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.
(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.
(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.
(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.
(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º. |
(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.
(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.
(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.
(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.
(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