Vize umělé inteligence#

Zavedení#

Senzor obrazu s umělou inteligencí kódovacího robota VEX AIM detekuje a sleduje objekty, barvy a identifikátory AprilTag. To umožňuje robotovi analyzovat své okolí, sledovat objekty a reagovat na základě detekovaných vizuálních dat.

Snímač AI Vision má rozlišení 320×240 pixelů. Počátek (0, 0) se nachází v levém horním rohu, střed snímače je v bodě (160, 120), jak je znázorněno na obrázku níže:

Diagram znázorňující rozlišení kamerového senzoru AIM AI, kde je souřadnice 0, 0 v levém horním rohu diagramu, 320, 0 v pravém horním rohu a 0, 240 v levém dolním rohu, přičemž souřadnice 160, 120 jsou přesně uprostřed.

Níže je uveden seznam všech bloků:

Akce – Ovládání AI Vision a zachycení dat o objektech.

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

Hodnoty – Vrací přítomnost, klasifikaci a vlastnosti objektu.

Akce#

Prohlížeč AI Vision na obrazovce#

Blok Prohlížeč AI Vision na obrazovce povoluje nebo zakazuje živý obraz AI Vision na obrazovce robota. Je-li povolen, obrazovka zobrazuje data ze senzorů v reálném čase a zabraňuje zobrazení jiných obrázků nebo textu. Chcete-li zobrazit jiný obsah, použijte tento blok ke skrytí obrazu.

Zobrazení nebo skrytí bloku zásobníku řídicího panelu AI Vision.#
AI Vision [zobrazit v] prohlížeč na obrazovce

Parametry

Popis

postavení

Řídí zobrazení datového kanálu na obrazovce robota: show zobrazí datový kanál, zatímco hide jej z obrazovky odstraní.

Příklad

Zásobník bloků, který začíná blokem „when started“, následovaným blokem komentáře s textem „View AI Vision Sensor’s feed for fire“. Blok „show AI Vision dashboard“ zobrazí feed a poté blok „wait“ pozastaví provádění na pět sekund. Po uplynutí čekání blok „hide AI Vision dashboard“ odstraní feed ze zobrazení.#
při spuštění
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [zobrazit v] prohlížeč na obrazovce
čekat [5] sekund
AI Vision [skrýt v] prohlížeč na obrazovce

získat data objektu#

Blok zásobníku get object data filtruje data z rámce AI Vision Sensor do jediného podpisu – uloženého popisu něčeho, co senzor dokáže rozpoznat, například předtrénovaného objektu, ID AprilTag nebo nakonfigurované barvy či barevného kódu.

Barvy a barevné kódy je nutné nejprve nakonfigurovat v nástroji AI Vision Utility, než je lze použít s tímto blokem.

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 AI 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 [sportovní míč v] z AI Vision

Parametr

Popis

podpis

Filtruje datovou sadu tak, aby zahrnovala pouze data daného podpisu. Dostupné podpisy jsou:

  • sportovní míč
  • oranžový sud
  • modrý sud
  • robot AIM
  • AprilTag ID 0
  • AprilTag ID 1
  • AprilTag ID 2
  • AprilTag ID 3
  • AprilTag ID 4
  • veškerý náklad - Sportovní míče a všechny sudy
  • NÁZEV - Barva nebo barevný kód, kde NÁZEV je název nakonfigurovaný v nástroji AI Vision Utility

Příklad

Zásobník bloků, který začíná blokem when started, následovaným blokem komentáře s textem Move forward if if a detected Sports Ball. Blok get object data* zachytí obrázek sportovního míče. Blok if poté zkontroluje, zda existuje objekt AI Vision. Pokud je hodnota true, blok move forward posune robota dopředu o 10 milimetrů.#
při spuštění
[Move forward if a sports ball is detected.]
navždy
získat data [sportovní míč v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pohybovat [dopředu v] na [10] [mm v] ▶

Barevné podpisy#

Barevný podpis je jedinečná barva, kterou dokáže senzor AI Vision rozpoznat. Díky těmto podpisům může senzor detekovat a sledovat objekty na základě jejich barvy. Jakmile je barevný podpis nakonfigurován v nástroji AI Vision Utility, senzor dokáže identifikovat objekty s danou barvou ve svém zorném poli.

Barevné signatury se používají v bloku get object data ke zpracování a detekci barevných objektů v reálném čase.

Utilita AI Vision Utility zobrazuje připojený kamerový senzor detekující dva barevné objekty. Levá strana zobrazuje živý obraz z kamery s modrým rámečkem vlevo a červeným rámečkem vpravo, každý ohraničený bílými ohraničovacími rámečky. Černé štítky zobrazují jejich příslušné názvy, souřadnice a rozměry. Pravá strana obsahuje nastavení barevného podpisu s posuvníky pro rozsah odstínu a sytosti pro červený i modrý rámeček. Tlačítka pro přidávání barev, zmrazení videa, kopírování a ukládání obrázku jsou dole a tlačítko pro zavření je v pravém dolním rohu.

Příklad

při spuštění
[Display if any objects matching the Red_Box signature is detected.]
navždy
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
vymazat řádek [1] na obrazovce
[Change the signature to any configured Color Signature.]
získat data [Red_Box v] z AI Vision
pokud <objekt AI Vision existuje?> pak
tisk [Color signature detected!] na obrazovce ▶

Barevné kódy#

Barevný kód je strukturovaný vzor složený ze 2 až 4 barevných podpisů uspořádaných v určitém pořadí. Jakmile je barevný kód nakonfigurován v nástroji AI Vision Utility, senzor dokáže rozpoznávat předdefinované barevné vzory.

Barevné kódy jsou obzvláště užitečné pro identifikaci složitých objektů, zarovnání s herními prvky nebo vytváření jedinečných značek pro autonomní navigaci.

Rozhraní nástroje AI Vision Utility zobrazuje připojený kamerový senzor detekující dva sousední objekty, modrý rámeček vlevo a červený rámeček vpravo, seskupené v jednom bílém ohraničujícím rámečku označeném BlueRed. Informace o detekci zahrnují úhel A:11° , souřadnice X:143, Y:103 , šířku W:233 a výšku H:108 . Na pravém panelu jsou uvedeny tři barevné signatury: Red_Box, Blue_Box a BlueRed s nastavitelnými rozsahy odstínu a sytosti. Signatura BlueRed kombinuje Blue_Box a Red_Box. Pod video kanálem jsou tlačítka označená jako Freeze Video Zmrazit video , Copy Image Kopírovat obrázek , Save Image Uložit obrázek a Close Zavřít .

Příklad

při spuštění
[Display if any objects matching the BlueRed code is detected.]
navždy
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
vymazat řádek [1] na obrazovce
[Change the signature to any configured Color Code.]
získat data [BlueRed v] z AI Vision
pokud <objekt AI Vision existuje?> pak
tisk [Color code detected!] na obrazovce ▶

Nastavení#

nastavit položku objektu AI Vision#

Blok zásobníku set AI 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 AI Vision na (1)

Parametry

Popis

položka

Číslo položky v datové sadě, která se má použít.

Příklad

Zásobník bloků, který začíná blokem when started, následovaným blokem komentáře s textem Display the largest detected AprilTag ID. Uvnitř smyčky forever zachycuje datový blok objektu get obrázek ID AprilTag. Blok if kontroluje, zda existuje objekt AI Vision. Pokud je hodnota true, blok set object item přiřadí počet objektů proměnné a blok print zobrazí na obrazovce ID tagu detekovaného objektu.#
při spuštění
[Display the width of the smallest detected object.]
navždy
získat data [veškerý náklad v] z AI Vision
vymazat řádek [1] na obrazovce
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
pokud <objekt AI Vision existuje?> pak
nastavit položku objektu AI Vision na (počet objektů AI Vision)
tisk (objekt AI Vision [šířka v]) na obrazovce ▶

Hodnoty#

má objekt#

Logický blok has object hlásí, zda má robot aktuálně detekovaný objekt oproti svému Kickeru.

  • Pravda – Robot má objekt.

  • Nepravda — Robot objekt nemá.

<má [sportovní míč v] ? :: custom-ai-vision>

Parametr

Popis

objekt

Předmět, který má být detekován oproti robotickému kopáči:

  • sportovní míč
  • libovolný sud
  • oranžový sud
  • modrý sud

Příklad

Zásobník bloků, který začíná blokem s parametrem when started, následovaným blokem komentáře s textem Kick when robot has a Ball (Kopnout, když robot má míč). Uvnitř nekonečné smyčky blok if kontroluje, zda má robot sportovní míč. Pokud je hodnota true, blok objektu kick se provede se středním výkonem.#
při spuštění
[Kick when the robot has a sports ball.]
navždy
pokud <má [sportovní míč v] ? :: custom-ai-vision> pak
kopnout objekt [střední v]

Objekt AI Vision existuje#

Logický blok Objekt AI Vision existuje hlásí, zda je v datové sadě detekován objekt.

  • True – Datová sada obsahuje detekovaný objekt.

  • Nepravda – Nebyly detekovány žádné objekty.

Objekt AI Vision existuje jako booleovský blok.#
<objekt AI Vision existuje?>

Parametry

Popis

Tento blok nemá žádné parametry.

Příklad

Zásobník bloků, který začíná blokem when started, následovaným blokem komentáře s textem Move forward, pokud je detekován míč. Datový blok objektu get zachytí obrázek sportovního míče. Blok if poté zkontroluje, zda existuje objekt AI Vision. Pokud je hodnota true, blok move forward posune robota dopředu o 10 milimetrů.#
při spuštění
[Move forward if a sports ball is detected.]
navždy
získat data [sportovní míč v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pohybovat [dopředu v] na [10] [mm v] ▶

Objekt AI Vision je#

Booleovský blok Objekt AI Vision hlásí, zda detekovaný objekt odpovídá určité klasifikaci.

  • True – Položka v datové sadě je daný objekt.

  • Nepravda – Položka v datové sadě není daným konkrétním objektem.

Klasifikace AI Vision je objektově booleovský blok.#
<objekt AI Vision je [sportovní míč v]?>

Parametr

Popis

objekt

Ke kterému předmětu porovnat položku:

  • sportovní míč
  • oranžový sud
  • modrý sud
  • robot AIM

Příklad

Zásobník bloků, který začíná blokem s textem when started, následovaným blokem komentáře s textem Display if a sports ball is detected (Zobrazit, pokud je detekován sportovní míč). Uvnitř nekonečné smyčky datový blok objektu get zachytí obrázek pomocí klasifikací AI. Obrazovka se vymaže a kurzor se nastaví na řádek 1, sloupec 1. Blok if kontroluje, zda existuje objekt AI Vision, a pokud je hodnota true, další blok if ověří, zda se jedná o sportovní míč. Pokud ano, blok print zobrazí na obrazovce text Ball detected! (Byl detekován míč!), následovaný blokem wait, který se na 0,5 sekundy pozastaví, než se proces zopakuje.#
při spuštění
[Display if a sports ball is detected.]
navždy
získat data [veškerý náklad v] z AI Vision
vymazat řádek [1] na obrazovce
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
pokud <objekt AI Vision existuje?> pak
pokud <objekt AI Vision je [sportovní míč v]?> pak
tisk [Sports ball detected!] na obrazovce ▶
čekat [0.5] sekund

Objekt AI Vision má ID AprilTag.#

Booleovský blok Objekt AI Vision je AprilTag ID a hlásí, zda detekované AprilTag ID odpovídá specifickému ID.

  • True – ID AprilTag je číslo.

  • Nepravda – ID AprilTag není číslo.

AI Vision detekovala ID AprilTagu jako booleovský blok.#
<AI Vision object is AprilTag ID [1] ?>

Parametry

Popis

ID značky AprilTag

Číslo, které se má porovnat se zjištěným identifikačním číslem AprilTag.

Počet objektů AI Vision#

Blok reportéru AI Vision object count hlásí počet detekovaných objektů v datové sadě jako celé číslo.

počet objektů AI Vision

Parametry

Popis

Tento blok nemá žádné parametry.

Příklad

při spuštění
[Display the amount of sports balls and barrels.]
navždy
vymazat řádek [1] na obrazovce
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
získat data [veškerý náklad v] z AI Vision
pokud <objekt AI Vision existuje?> pak
tisk (počet objektů AI Vision) na obrazovce ▶
konec
čekat [0.5] sekund

Vlastnost objektu AI Vision#

Každý objekt (zobrazený níže) ukládá po použití bloku get object data devět vlastností, které jsou součástí každého objektu (zobrazeného níže).

Blok reportéru vlastností objektu AI Vision.#
objekt AI Vision [šířka v]

Všechny hodnoty vlastnosti kromě tagID 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 na základě rozlišení senzoru 320 x 240 pixelů.

Modrý hlaveň s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Osy x a y jsou označeny od 0 do 320 zleva doprava nahoře a od 0 do 240 shora dolů na levé straně.

Parametr

Popis

vlastnictví

Kterou vlastnost detekovaného objektu použít:

šířka#

Vlastnost width udává šířku detekovaného objektu v pixelech jako celé číslo od 1 do 320.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na šířku.#
objekt AI Vision [šířka v]

Modrý válec s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Dvě svislé červené přerušované čáry se táhnou od horní části rámečku dolů k levému a pravému okraji ohraničovacího rámečku. Oboustranná černá šipka mezi těmito čarami označuje šířku.

Příklad

při spuštění
[Move towards a blue barrel until its width is larger than 100 pixels.]
navždy
získat data [modrý barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [šířka v]) [math_less_than v] [100]> pak
pohybovat [dopředu v]
konec
jinak
zastavit veškerý pohyb

výška#

Vlastnost height udává výšku detekovaného objektu v pixelech jako celé číslo od 1 do 240.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na výšku.#
objekt AI Vision [výška v]

V rámečku je uprostřed modrý válec s oranžovým pruhem, obklopený černým ohraničovacím rámečkem. Z levé strany rámečku k hornímu a dolnímu okraji ohraničovacího rámečku se táhnou dvě vodorovné červené přerušované čáry. Mezi těmito čarami je znázorněna dvojitá černá šipka.

Příklad

při spuštění
[Move towards a blue barrel until its height is larger than 100 pixels.]
navždy
získat data [modrý barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [výška v]) [math_less_than v] [100]> pak
pohybovat [dopředu v]
konec
jinak
zastavit veškerý pohyb

centrumX#

Vlastnost centerX udává souřadnici x středu detekovaného objektu v pixelech jako celé číslo od 0 do 320.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na centerX.#
objekt AI Vision [středX v]

Modrý hlaveň s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Svislá červená přerušovaná čára se táhne od horní části rámečku dolů do středu ohraničovacího rámečku a označuje souřadnici X středu.

Příklad

při spuštění
[Turn slowly until a blue barrel is centered in front of the robot.]
nastavit rychlost otáčení na [30]%
otočit [vpravo v]
navždy
získat data [modrý barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <[140] [math_less_than v] (objekt AI Vision [středX v]) [math_less_than v] [180]> pak
zastavit veškerý pohyb

centrumY#

Vlastnost centerY udává souřadnici y středu detekovaného objektu v pixelech jako celé číslo od 0 do 240.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na centerY.#
objekt AI Vision [středY v]

Modrý hlaveň s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Z levé strany rámečku do středu ohraničovacího rámečku vede vodorovná červená přerušovaná čára, která označuje souřadnici Y středu.

Příklad

při spuštění
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
navždy
získat data [modrý barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [středY v]) [math_less_than v] [140]> pak
pohybovat [dopředu v]
konec
jinak
zastavit veškerý pohyb

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 0 do 320.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na originX.#
objekt AI Vision [počátekX v]

Modrý válec s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Svislá červená přerušovaná čára se táhne od horního okraje rámečku k levému okraji ohraničovacího rámečku a označuje souřadnici X počátku ohraničovacího rámečku.

Příklad

při spuštění
[Display if an orange barrel is to the left or the right.]
navždy
vymazat řádek [1] na obrazovce
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
získat data [oranžový barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [počátekX v]) [math_less_than v] [160]> pak
tisk [To the left!] na obrazovce ▶
jinak
tisk [To the right!] na obrazovce ▶
konec
čekat [0.5] 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 0 do 240.

Poznámka: Hodnoty pixelů jsou relativní vzhledem k souřadnicovému systému senzoru. Viz diagram v úvodu pro referenci.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na originY.#
objekt AI Vision [počátekY v]

Modrý válec s oranžovým pruhem je uprostřed rámečku, obklopený černým ohraničovacím rámečkem. Z levé strany rámečku k hornímu okraji ohraničovacího rámečku vede vodorovná červená přerušovaná čára, která označuje souřadnici Y počátku ohraničovacího rámečku.

Příklad

při spuštění
[Display if an orange barrel is close or far from the robot.]
navždy
vymazat řádek [1] na obrazovce
nastavit kurzor na řádek [1] sloupec [1] na obrazovce
získat data [oranžový barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [počátekY v]) [math_less_than v] [80]> pak
tisk [Far!] na obrazovce ▶
jinak
tisk [Close!] na obrazovce ▶
konec
čekat [0.5] sekund

otáčení#

Vlastnost rotation uvádí orientaci detekovaného ID značky AprilTag nebo barevného kódu jako celé číslo ve stupních od 0 do 359.

Blok zásobníku vlastností objektu AI Vision s parametrem nastaveným na rotaci.#
objekt AI Vision [rotace v]

Rozhraní kamery zobrazuje vertikálně naskládaný objekt s modrou horní polovinou a červenou spodní polovinou, vycentrovaný v záběru. Popisek pod objektem zní Red_Blue A:270° CX:185 CY:81 W:93 H:150, který uvádí název objektu, úhel natočení, souřadnice středu X a Y, šířku a výšku. Rozměry obrazu označují mřížky a číselné osy, přičemž X má rozsah od 0 do 320 a Y od 0 do 240.

Příklad

při spuštění
[Slide left or right depending on how the Color Code is rotated.]
navždy
získat data [Red_Blue v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <[50] [math_less_than v] (objekt AI Vision [rotace v]) [math_less_than v] [100]> pak
pohybovat [vpravo v]
jinak pokud <[270] [math_less_than v] (objekt AI Vision [rotace v]) [math_less_than v] [330]> pak
pohybovat [vlevo v]
jinak
zastavit veškerý pohyb
konec
jinak
zastavit veškerý pohyb

ložisko#

Vlastnost bearing udává, jak daleko se objekt nachází vlevo nebo vpravo od středu pohledu senzoru AI Vision ve stupních. Hodnota 0 znamená, že je objekt vycentrován, kladné hodnoty znamenají, že je objekt vpravo, a záporné hodnoty znamenají, že je objekt vlevo.

Kódovací robot VEX AIM na hřišti se sportovním míčem diagonálně vpřed a vlevo. Mezi středem robota a sportovním míčem je nakreslen úhel označený -30 stupňů. Kódovací robot VEX AIM na hřišti se sportovním míčem diagonálně vpřed a vpravo. Mezi středem robota a sportovním míčem je nakreslen úhel označený jako 30 stupňů.
při spuštění
[Keep the blue barrel directly in front of the robot.]
nastavit rychlost otáčení na [40]%
navždy
získat data [modrý barel v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pokud <(objekt AI Vision [azimut v]) [math_greater_than v] [5]> pak
otočit [vpravo v]
jinak pokud <(objekt AI Vision [azimut v]) [math_less_than v] [-5]> pak
otočit [vlevo v]
jinak
zastavit veškerý pohyb

ID značky#

Vlastnost tagID 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 AI Vision [tagID v]

Příklad

při spuštění
[Move forward when AprilTag ID 0 is detected.]
navždy
získat data [AprilTag ID 0 v] z AI Vision
pokud <objekt AI Vision existuje?> pak
pohybovat [dopředu v]
konec
zastavit veškerý pohyb