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.

Nastavení – Upravte, ke kterým detekovaným objektům se má přistupovat.

Hodnoty – Načte přítomnost, klasifikaci a vlastnosti objektu.

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.

Blok zásobníku dat objektu Get.#
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.

Blok zásobníku položek objektu Set AI Vision.#
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.

Zobrazení nebo skrytí bloku zásobníku řídicího panelu AI Vision.#
<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.

AI Vision detekovala ID AprilTagu jako booleovský blok.#
<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.

Blok zásobníku položek objektu Set AI Vision.#
(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.

Blok reportéru vlastností objektu AI Vision.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na šířku.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na výšku.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na centerX.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na centerY.#
(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º.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na centerY.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na rotaci.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na originX.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na originY.#
(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.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na tagID.#
(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