Vidění#
Zavedení#
Dron VEX AIR má dva vizuální senzory, které detekují a sledují identifikátory AprilTag. Ty umožňují dronu analyzovat okolí, sledovat objekty a reagovat na základě detekovaných vizuálních dat.
Níže je uveden seznam všech dostupných bloků:
Akce – Ovládání informačního kanálu Vision a zachycení dat objektu.
get object data — Zachytí data pro ID objektů AprilTag.
Nastavení – Upravte, ke kterým detekovaným objektům se má přistupovat.
set Vision object item — Vybere konkrétní objekt ze seznamu detekovaných objektů.
Hodnoty – Načte přítomnost, klasifikaci a vlastnosti objektu.
Objekt Vision existuje — Hlásí, zda byl detekován objekt.
Objekt Vision je AprilTag ID — Zkontroluje, zda detekované AprilTag ID odpovídá specifickému ID.
Počet objektů ve viditelnosti — Ukazuje počet detekovaných objektů.
Vlastnost objektu Vision — Načte podrobnosti, jako například:
centerX a centerY — Souřadnice středové polohy v pohledu senzoru.
bearing — Úhel objektu vzhledem k přednímu vizuálnímu senzoru nebo stupně potřebné k tomu, aby se dron natočil k objektu.
rotace — Orientace objektu.
originX a originY — Souřadnice polohy levého horního rohu v pohledu senzoru.
id — Identifikační číslo ID AprilTag.
Akce#
získat data objektu#
Blok zásobníku get object data filtruje data z rámce senzoru Vision Sensor. Senzory Vision Sensors dokáží detekovat ID AprilTag.
Datová sada ukládá objekty seřazené od největší po nejmenší podle šířky, počínaje indexem 0. Vlastnosti každého objektu lze zobrazit pomocí bloku Vision object property. Pokud nejsou detekovány žádné odpovídající objekty, je hlášena prázdná datová sada.
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
Parametr |
Popis |
|---|---|
podpis |
Filtruje datovou sadu tak, aby zahrnovala pouze data daného podpisu. Dostupný podpis je all AprilTags. |
fotoaparát |
Vizuální senzor, ze kterého se mají načítat data, buď vpřed nebo dolů. |
Příklad
při spuštění
[Climb upward when an AprilTag ID is detected.]
vzlétnout na [300] [mm v] ▶
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
pokud <objekt Vision existuje?> pak
stoupat [nahoru v] na [200] [mm v] ▶
Nastavení#
nastavit položku objektu Vision#
Blok zásobníku set Vision object item nastavuje, která položka v datové sadě se má použít.
nastavit položku objektu Vision na [1]
Parametry |
Popis |
|---|---|
položka |
Číslo položky v datové sadě, která se má použít. |
Příklad
při spuštění
[Display the smallest-appearing AprilTag ID.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
nastavit položku objektu Vision na (počet objektů Vision)
tisk (objekt Vision [id v]) v konzoli ▶
Hodnoty#
Objekt vidění existuje#
Logický blok Objekt Vision existuje hlásí, zda zadaný senzor Vision aktuálně detekuje nějaké objekty.
True – Zadaný vizuální senzor detekuje objekt.
Nepravda — Zadaný vizuální senzor nedetekuje objekt.
<objekt Vision existuje?>
Parametr |
Popis |
|---|---|
Tento blok nemá žádné parametry. |
Příklad
při spuštění
[Climb upward when an AprilTag ID is detected.]
vzlétnout na [300] [mm v] ▶
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
pokud <objekt Vision existuje?> pak
stoupat [nahoru v] na [200] [mm v] ▶
Objekt Vision je AprilTag ID.#
Logický blok Objekt Vision je AprilTag ID a hlásí, zda je AprilTag ID specifické ID.
True – ID AprilTag je číslo.
Nepravda – ID AprilTag není číslo.
<Vision object is AprilTag ID [1]>
Parametry |
Popis |
|---|---|
ID značky AprilTag |
Číslo, které se má porovnat s detekovaným ID AprilTag od 0 do 37. |
Příklad
při spuštění
[Display when the target AprilTag ID is detected.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
pokud <Vision object is AprilTag ID [21]> pak
tisk [Target found!] v konzoli ▶
konec
Počet objektů ve vidění#
Blok reportéru Počet objektů Vision hlásí množství detekovaných objektů v datové sadě jako celé číslo.
(počet objektů Vision)
Parametry |
Popis |
|---|---|
Tento blok nemá žádné parametry. |
Příklad
při spuštění
[Display how many AprilTag IDs are detected.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
tisk (počet objektů Vision) v konzoli ▶
čekat [0.2] sekund
Vlastnost objektu Vision#
Každý objekt (zobrazený níže) ukládá po použití bloku get object data několik vlastností, které jsou součástí jeho obsahu.
(objekt Vision [šířka v])
Všechny hodnoty vlastnosti kromě id popisují polohu, velikost, orientaci nebo azimut detekovaného objektu v okamžiku použití bloku get object data. Tyto hodnoty se měří v pixelech nebo stupních. Každý vizuální senzor má jiné rozlišení:
Přední displej: 640 x 480 pixelů
Směr dolů: 640 x 400 pixelů
Parametr |
Popis |
|---|---|
vlastnictví |
Which property of the detected object to use: |
šířka#
Vlastnost width udává šířku detekovaného objektu v pixelech jako celé číslo od 1 do 640.
(objekt Vision [šířka v])
Příklad
při spuštění
[Show if the AprilTag ID appears large or small.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
pokud <(objekt Vision [šířka v]) [math_greater_than v] [100]> pak
tisk [Large] v konzoli ▶
jinak
tisk [Small] v konzoli ▶
konec
konec
čekat [0.2] sekund
výška#
Vlastnost height udává výšku detekovaného objektu v pixelech jako celé číslo od 1 do 480.
(objekt Vision [výška v])
Příklad
při spuštění
[Show if the AprilTag ID appears large or small.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
pokud <(objekt Vision [výška v]) [math_greater_than v] [100]> pak
tisk [Large] v konzoli ▶
jinak
tisk [Small] v konzoli ▶
konec
konec
čekat [0.2] sekund
centrumX#
Vlastnost centerX udává souřadnici x středu detekovaného objektu v pixelech jako celé číslo od 1 do 640.
(objekt Vision [středX v])
Příklad
při spuštění
[Show if an AprilTag ID is to the left or the right of the camera.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
pokud <(objekt Vision [středX v]) [math_less_than v] [320]> pak
tisk [To the left] v konzoli ▶
jinak
tisk [To the right] v konzoli ▶
konec
konec
čekat [0.2] sekund
centrumY#
Vlastnost centerY udává souřadnici y středu detekovaného objektu v pixelech jako celé číslo od 1 do 480.
(objekt Vision [středY v])
Příklad
při spuštění
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
vzlétnout na [800] [mm v] ▶
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
pokud <objekt Vision existuje?> pak
pokud <(objekt Vision [středY v]) [math_less_than v] [240]> pak
tisk [Below the target!] v konzoli ▶
jinak
tisk [Above the target!] v konzoli ▶
konec
jinak
tisk [No target found!] v konzoli ▶
ložisko#
Vlastnost bearing udává úhel označující polohu objektu vzhledem k dronu. Chování závisí na použitém vizuální senzoru.
Hodnota 0° značí, že střed objektu a senzor jsou zarovnány. Kladné hodnoty znamenají, že objekt je vpravo, zatímco záporné hodnoty znamenají, že objekt je vlevo.
Senzor |
Vrácení zboží |
|---|---|
Dolů |
Úhly, o které se musí přední část dronu otočit, aby se zarovnala se středem objektu, od –180º do 180º. |
Vpřed |
Úhel posunutí objektu doleva nebo doprava od středu obrazového senzoru od –180º do 180º. |
(objekt Vision [azimut v])
Příklady
při spuštění
[Align the front of the drone to an AprilTag ID.]
nastavit rychlost otáčení na (15)%
vzlétnout na [500] [mm v] ▶
navždy
získat data [všechny AprilTags v] z Vision kamery [dolů v]
pokud <objekt Vision existuje?> pak
pokud <[-20] [math_less_than v] (objekt Vision [azimut v]) [math_less_than v] [20]> pak
[Hover once sensor is centered on the AprilTag ID.]
vznášet se
přehrát zvuk [úspěch v] ▶
jinak pokud <(objekt Vision [azimut v]) [math_less_than v] [-21]> pak
otočit [vlevo v]
jinak
otočit [vpravo v]
otáčení#
Vlastnost rotation udává orientaci detekovaného ID AprilTag jako celé číslo ve stupních od 1 do 359.
(objekt Vision [rotace v])
Příklad
při spuštění
[Turn left or right based on the rotation of an AprilTag ID.]
vzlétnout na [1000] [mm v] ▶
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
pokud <objekt Vision existuje?> pak
pokud <[240] [math_less_than v] (objekt Vision [rotace v]) [math_less_than v] [300]> pak
otočit [vlevo v] o [90] stupňů ▶
jinak pokud <[60] [math_less_than v] (objekt Vision [rotace v]) [math_less_than v] [120]> pak
otočit [vpravo v] o [90] stupňů ▶
jinak
vznášet se
původX#
Vlastnost originX udává souřadnici x levého horního rohu ohraničovacího rámečku detekovaného objektu v pixelech jako celé číslo od 1 do 640.
(objekt Vision [počátekX v])
Příklad
při spuštění
[Draw lines to the AprilTag ID origin from all corners.]
navždy
vymazat obrazovku
get [all AprilTags v] data from vision [forward v] camera
pokud <objekt Vision existuje?> pak
nakreslit čáru [0] [0] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [0] [480] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [640] [0] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [640] [480] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
konec
čekat [0.2] sekund
původY#
Vlastnost originY udává souřadnici y levého horního rohu ohraničovacího rámečku detekovaného objektu v pixelech jako celé číslo od 1 do 480.
(objekt Vision [počátekY v])
Příklad
při spuštění
[Draw lines to the AprilTag ID origin from all corners.]
navždy
vymazat obrazovku
get [all AprilTags v] data from vision [forward v] camera
pokud <objekt Vision existuje?> pak
nakreslit čáru [0] [0] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [0] [480] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [640] [0] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
nakreslit čáru [640] [480] (objekt Vision [počátekX v]) (objekt Vision [počátekY v]) na obrazovce
konec
čekat [0.2] sekund
identifikační číslo#
Vlastnost id uvádí identifikační číslo detekovaného ID AprilTag jako celé číslo.
(objekt Vision [id v])
Příklad
při spuštění
[Display the detected AprilTag ID.]
navždy
získat data [všechny AprilTags v] z Vision kamery [dopředu v]
vymazat konzoli
pokud <objekt Vision existuje?> pak
tisk (objekt Vision [id v]) v konzoli ▶
konec
čekat [0.2] sekund