Kódování s využitím AI Vision Sensor ve VEXcode V5 v Pythonu

Ujistěte se, že máte u senzoru AI Vision nakonfigurováno barevných podpisů a barevných kódů , aby je bylo možné použít s vašimi bloky. Chcete-li se dozvědět více o tom, jak je nakonfigurovat, můžete si přečíst níže uvedené články:

Senzor AI Vision dokáže také detekovat klasifikace AI a AprilTags. Chcete-li se dozvědět, jak tyto režimy detekce povolit, přejděte sem:

Chcete-li se dozvědět více podrobností o těchto jednotlivých příkazech a o tom, jak je používat ve VEXcode, přejděte na stránky API.


Získejte vizuální data pomocí senzoru s umělou inteligencí

Každý příkaz senzoru AI Vision bude začínat názvem nakonfigurovaného senzoru AI Vision. Pro všechny příklady v tomto článku bude název použitého senzoru AI Vision Sensor ai_vision_1.

pořídit_snímek

Metoda take_snapshot pořídí snímek toho, co AI Vision Sensor aktuálně vidí, a z tohoto snímku načte data, která pak lze použít v projektu. Při pořízení snímku je třeba určit, o jaký typ objektu má senzor AI Vision shromažďovat data:

  • ABarevný podpis neboBarevný kód
    • Tyto vizuální podpisy začínají názvem senzoru AI Vision, dvojitým podtržítkem a poté názvem vizuálního podpisu, například: ai_vision_1__Blue.
  • AI AiVision.ALL_AIOBJS
  • dubenŠtítky- AiVision.VŠECHNY_ŠTÍTKY

Pořízením snímku se vytvoří n-tice všech detekovaných objektů, které jste zadali. Například, pokud byste chtěli detekovat „modrou“ barevnou signaturu a senzor AI Vision Sensor detekoval 3 různé modré objekty, data ze všech tří by byla vložena do n-tice.

V tomto příkladu proměnná vision_objects ukládá n-tici obsahující detekované barevné podpisy „fialové“barvy ze senzoru AI Vision s názvem ai_vision_1. Zobrazuje počet detekovaných objektů a každých 0,5 sekundy pořizuje nový snímek.

while True: 
# Získání snímku všech fialových barevných podpisů a jeho uložení do vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Před načtením dat zkontrolujeme, zda byl ve snímku detekován objekt.
pokud vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("Počet objektů:", len(vision_objects))
wait(0,5, SEKUND)

Vlastnosti objektu

Každý objekt ze snímku má různé vlastnosti, které lze použít k hlášení informací o daném objektu. Dostupné vlastnosti jsou následující:

  • identifikační číslo
  • střed X a střed Y
  • původX a původY
  • šířka
  • výška
  • úhel
  • skóre
  • existuje

Pro přístup k vlastnosti objektu použijte název proměnné, která ukládá n-tici, následovaný indexem objektu.

Index objektu označuje vlastnost, kterou konkrétní objekt chcete načíst. Po pořízení snímku senzor AI Vision automaticky seřadí objekty podle velikosti. Největšímu objektu je přiřazen index 0, menší objekty dostávají vyšší indexová čísla.

Například volání šířky největšího objektu uvnitř proměnné vision_objects by bylo: vision_objects[0].width.

identifikační číslo

Vlastnost id je k dispozici pouze pro AprilTags a klasifikace AI.

Tři čtvercové identifikační značky označené ID 0, 9 a 3, každá s odpovídajícími souřadnicemi a rozměry zobrazenými bílým textem. ID 0 je vlevo, ID 9 je vpravo a ID 3 je dole uprostřed. Každá značka má uvnitř čtverce jedinečný černobílý vzor.

ProAprilTagpředstavuje vlastnost id detekovanéidentifikační číslo AprilTag(s)

Identifikace konkrétních AprilTags umožňuje selektivní navigaci. Svého robota můžete naprogramovat tak, aby se pohyboval směrem k určitým značkám, zatímco jiné ignoroval, a efektivně je tak využíval jako ukazatele pro automatickou navigaci.

Na obrázku jsou vyznačeny dva míčky a dva kroužky s popisky označujícími jejich polohu, velikost a skóre. Červený míč je vlevo, modrý míč je vpravo, zelený kruh je vlevo dole a červený kruh je vpravo dole. Každý objekt je ohraničen bílým rámečkem a podrobnosti, jako jsou souřadnice X a Y, šířka, výška a skóre 99 %, jsou zobrazeny bílým textem.

Proklasifikací AIpředstavuje vlastnost id specifický typ detekované klasifikace AI.

Identifikace specifických Klasifikace umělé inteligenceumožňuje robotovi soustředit se pouze na konkrétní objekty, například se chtít pohybovat pouze směrem k červenému Buckyballu, nikoli k modrému.

Další informace o dubnTagy a Klasifikace AI a o tom, jak povolit jejich detekci v nástroji AI Vision Utility, naleznete v těchto článcích.

střed X a střed Y

Toto jsou středové souřadnice detekovaného objektu v pixelech.

Modrý Buckyball sledován systémem počítačového vidění. Objekt je ohraničen bílým čtvercem a uvnitř obrysu je menší červený čtverec obklopující bílý kříž uprostřed. V levém horním rohu obrázku je označení, že objekt je modrý, se souřadnicemi X:176, Y:117 a rozměry Š:80, V:78.

Souřadnice CenterX a CenterY pomáhají s navigací a určováním polohy. Snímač AI Vision má rozlišení 320 x 240 pixelů.

Dva modré krychlové objekty sledované systémem vidění. Horní objekt je označen souřadnicemi X:215, Y:70 a rozměry Š:73, V:84, s bílým obrysem a bílým křížkem uprostřed. Spodní objekt je označen souřadnicemi X:188, Y:184 a rozměry Š:144, V:113, a je také bíle ohraničen bílým křížkem uprostřed.

Vidíte, že objekt blíže k AI Vision Sensor bude mít nižší souřadnici CenterY než objekt, který je dále.

V tomto příkladu, protože střed pohledu senzoru AI Vision je (160, 120), robot se bude otáčet doprava, dokud souřadnice středu X detekovaného objektu nebude větší než 150 pixelů, ale menší než 170 pixelů.

while True:
# Získání snímku všech modrých barevných podpisů a jeho uložení do vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Před načtením dat zkontrolujeme, zda byl ve snímku detekován objekt.
pokud vision_objects[0].exists == True

# Zkontroluje, zda se objekt nenachází ve středu pohledu AI Vision Sensor.
if vision_objects[0].centerX > 150 and 170 > vision_objects[0].centerX:

# Pokračujte v otáčení doprava, dokud se objekt nedostane do středu pohledu.
drivetrain.turn(DOPRAVA)
jinak:
drivetrain.stop()
wait(5, MSEC)

původX a původY

OriginX a OriginY jsou souřadnice v levém horním rohu detekovaného objektu v pixelech.

Modrý Buckyball sledován systémem vidění. Objekt je obklopen bílým obrysem, uvnitř kterého je uprostřed bílý kříž. Popisek vlevo nahoře označuje modrou barvu objektu spolu se souřadnicemi X:176, Y:117 a rozměry Š:80, V:78. Malý červený čtvereček zvýrazňuje levý horní roh objektu.

Souřadnice OriginX a OriginY pomáhají s navigací a určováním polohy. Kombinací této souřadnice se šířkou a výškou objektu můžete určit velikost ohraničujícího rámečku objektu. To může pomoci se sledováním pohybujících se objektů nebo s navigací mezi objekty.

šířka a výška

Toto je šířka nebo výška detekovaného objektu v pixelech.

Obrázek ukazuje modrý Buckyball s bílým čtvercovým obrysem, který ho sleduje. V levém horním rohu je popisek označující, že se jedná o modrý objekt se souřadnicemi X:176, Y:117 a rozměry Š:80, V:78. Červené šipky zvýrazňují šířku a výšku objektu.

Rozměry šířky a výšky pomáhají identifikovat různé objekty. Například Buckyball bude mít větší výšku než Ring.

Dva modré krychlové objekty sledované systémem vizuálního rozpoznávání. Horní krychle má bílý obrys s popiskem označujícím její polohu jako X:215, Y:70 a rozměry Š:73, V:84. Spodní krychle má podobný bílý obrys s popiskem zobrazujícím X:188, Y:184 a rozměry Š:144, V:113. Každá krychle má uprostřed bílý kříž, pravděpodobně označující ústřední bod pro sledování. Štítky zvýrazňují měření a data sledování pro každý objekt.

Šířka a výška také označují vzdálenost objektu od senzoru AI Vision. Menší rozměry obvykle znamenají, že je objekt dále, zatímco větší rozměry naznačují, že je blíž.

V tomto příkladu se pro navigaci používá šířka objektu. Robot se bude přibližovat k objektu, dokud jeho šířka nedosáhne určité velikosti, než se zastaví.

while True:
# Získání snímku všech modrých barevných podpisů a jeho uložení do vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Před načtením dat zkontrolujeme, zda byl ve snímku detekován objekt.
pokud vision_objects[0].exists == True

# Zkontroluje, zda se největší objekt nachází blízko senzoru AI Vision, změřením jeho šířky.
if vision_objects[0].width < 250:

# Přibližte se k objektu, dokud nebude širší než 250 pixelů.
drivetrain.drive(VPŘED)
jinak:
drivetrain.stop()

wait(5, MSEC)

úhel

Rotující GIF zobrazující červené a zelené bloky. Když jsou bloky umístěny dokonale vodorovně od červené po zelenou, je zobrazen úhel 0 stupňů. Pokud je červený blok svisle nad zeleným blokem, svírá úhel 90 stupňů. Pokud jsou bloky vodorovně zelené až červené, je to 180 stupňů. Pokud je zelený blok svisle nad červeným blokem, je to 20 stupňů.

Vlastnost úhlu je k dispozici pouze probarevné kódy a, AprilTagsa
.
Toto představuje, zda je detekovaný barevný kód nebo AprilTag orientován odlišně.

Stoh dvou krychlí, jedna zelená nahoře a jedna modrá dole, sledovaný systémem vidění. Obě krychle obklopuje bílý obrys s bílým křížem uprostřed zelené krychle. Popisek ve spodní části obrázku zobrazuje Zelená_Modrá A:87°, což označuje detekované barvy a naměřený úhel. Níže jsou uvedeny souřadnice X:117, Y:186 s rozměry Š:137, V:172, které představují polohu a velikost naskládaných krychlí v rámečku.

Můžete vidět, zda je robot orientován odlišně vzhledem kBarevný kód neboAprilTag , a podle toho činit navigační rozhodnutí.

Dvě krychle, jedna zelená a jedna modrá, umístěné vedle sebe a sledované systémem vidění. Obě krychle obklopuje bílý obrys s bílým křížem uprostřed. Vlevo nahoře je uvedena zelená_modrá A:0°, která odkazuje na detekované barvy a naměřený úhel. Níže jsou zobrazeny souřadnice X:150, Y:102 s rozměry Š:179, V:109, které představují polohu a velikost krychlí v rámci.

Například pokud není barevný kód detekován ve správném úhlu, pak robot nemusí být schopen objekt, který představuje, správně zvednout.

skóre

Vlastnost skóre se používá při detekciklasifikací AI pomocí senzoru AI Vision.

Obrázek ukazuje čtyři objekty sledované systémem vidění: dvě koule a dva prstence. Červená koule je označena souřadnicemi X:122, Y:84, W:67, H:66 a má skóre 99 %. Modrý míč má X:228, Y:86, Š:70, V:68, se skóre 99 %. Zelený kruh má souřadnice X:109, Y:186, W:98, H:92 a skóre 99 %. Červený kruh je označen X:259, Y:187, W:89, H:91, se skóre 99 %. Každý objekt je ohraničen bílou barvou, což značí přesnost sledování.

Skóre spolehlivosti udává, jak si je senzor AI Vision jistý svou detekcí. Na tomto obrázku je 99% jistota v identifikaci klasifikací umělé inteligence těchto čtyř objektů. Toto skóre můžete použít k zajištění toho, aby se váš robot zaměřoval pouze na vysoce spolehlivé detekce.

existuje

Vlastnost exists se používá k detekci

To vám umožní zkontrolovat, zda byly v předchozím snímku detekovány nějaké detekované objekty. Tato vlastnost vrátí hodnotu True, pokud objekt existuje, a hodnotu False, pokud objekt neexistuje.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: