Vize umělé inteligence#
Zavedení#
Senzor AI Vision dokáže detekovat a sledovat 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.
Tato stránka používá ai_vision_1, RED_BOXa BOX_CODE jako příklady názvů senzoru AI Vision, barevného podpisu a barevného kódu. V případě potřeby je nahraďte vlastními nakonfigurovanými názvy.
Níže je uveden seznam všech metod:
Gettery – Získejte data ze senzoru AI Vision.
take_snapshot– Zachytí data pro konkrétní podpis.installed– Zda je AI Vision Sensor připojen k EXP Brain.
Vlastnosti – Data objektu vrácená z take_snapshot.
.exists– Zda objekt existuje v aktuální detekci..width– Width of the detected object..height– Height of the detected object..centerX– Pozice středu objektu na souřadnici X..centerY– Pozice středu objektu v ose Y..angle– Orientace barevného kódu..originX– Pozice X levého horního rohu objektu..originY– Pozice Y levého horního rohu objektu..id– Klasifikace nebo ID tagu objektu..score– Skóre spolehlivosti pro klasifikace umělé inteligence.
Konstruktory – Ručně inicializují a konfigurují senzor AI Vision a jeho signatury.
Gettery#
take_snapshot#
Funkce take_snapshot filtruje data z rámce senzoru AI Vision 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ého barevného podpisu či barevného kódu – a vrací tuple.
Barevné podpisy a Barevné kódy musí být nejprve nakonfigurovány v nástroji Vision Utility, než je lze použít s touto metodou.
N-tice ukládá objekty seřazené od největší po nejmenší podle šířky, počínaje indexem 0. K vlastnostem properties každého objektu lze přistupovat pomocí jeho indexu. Pokud nejsou detekovány žádné odpovídající objekty, vrátí se prázdná n-tice.
Usage:
ai_vision_1.take_snapshot(SIGNATURE)
Parametry |
Popis |
|---|---|
|
Filtruje datovou sadu tak, aby zahrnovala pouze data daného podpisu. Dostupné podpisy jsou:
|
|
Volitelné. Nastavuje maximální počet objektů, které lze vrátit, od 1 do 24. Výchozí hodnota je 8. |
# Drive forward if an object is detected
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
drivetrain.drive_for(FORWARD, 50, MM)
wait(50, MSEC)
Poznámka: Vrácenou n-tici lze seřadit podle libovolné vlastnosti property, nejen podle šířky, pomocí funkce Pythonu sorted Například řazení podle ID AprilTag:
# Print each detected AprilTag ID in ascending order by ID
while True:
apriltags = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=id)
for tag in apriltags:
print(tag.id)
wait(1, SECONDS)
Nebo seřazení podle výšky:
# Print each detected AprilTag ID in ascending order by height
while True:
apriltags_by_height = sorted(ai_vision_1.take_snapshot(AiVision.ALL_TAGS), key=lambda tag: tag.height)
for tag in apriltags_by_height:
print(tag.height)
wait(1, SECONDS)
Klasifikace umělé inteligence#
Senzor AI Vision dokáže detekovat různé objekty v rámci určitých klasifikací AI. V závislosti na modelu klasifikace AI vybraném při konfiguraci senzoru AI Vision v okně Zařízení budou detekovány různé objekty. Aktuálně dostupné modely jsou:
Prvky pro učebnu
Číslo průkazu totožnosti |
Klasifikace umělé inteligence |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
Vysoké sázky v robotické soutěži VEX V5
Číslo průkazu totožnosti |
Klasifikace umělé inteligence |
|---|---|
0 |
|
1 |
|
2 |
|
Odpor vůči soutěži v robotice VEX V5
Číslo průkazu totožnosti |
Klasifikace umělé inteligence |
|---|---|
0 |
|
1 |
|
Přerušení robotické soutěže VEX V5
Číslo průkazu totožnosti |
Klasifikace umělé inteligence |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
Barevné podpisy#
Barevný podpis je jedinečná barva, kterou dokáže AI Vision Sensor rozpoznat. Díky těmto podpisům dokáže AI Vision Sensor detekovat a sledovat objekty na základě jejich barvy. Jakmile je barevný podpis nakonfigurován, může senzor identifikovat objekty s danou barvou ve svém zorném poli. Barevné podpisy se používají s take_snapshot ke zpracování a detekci barevných objektů v reálném čase.
Aby bylo možné v projektu použít nakonfigurovaný barevný podpis, musí být jeho název složen z názvu senzoru, dvou podtržítek a poté názvu barevného podpisu. Například: ai_vision_1__RED_BOX.
# Display if any objects match the RED_BOX signature
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Signature
red_box = ai_vision_1.take_snapshot(ai_vision_1__RED_BOX)
if red_box[0].exists:
brain.screen.print("Color detected!")
wait(100, MSEC)
Barevné kódy#
Barevný kód je strukturovaný vzor složený z barevných podpisů uspořádaných v určitém pořadí. Tyto kódy umožňují senzoru AI Vision Sensor rozpoznávat předdefinované barevné vzory. Barevné kódy jsou užitečné pro identifikaci složitých objektů nebo vytváření jedinečných značek pro autonomní navigaci.
Aby bylo možné v projektu použít nakonfigurovaný barevný kód, jeho název musí být název senzoru, dvě podtržítka a poté název barevného kódu. Například: ai_vision_1__BOX_CODE.
# Display if any objects match the BOX_CODE code
while True:
brain.screen.set_cursor(1, 1)
brain.screen.clear_row(1)
# Change to any configured Color Code
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
brain.screen.print("Code detected!")
wait(100, MSEC)
installed#
installed vrací booleovskou hodnotu označující, zda je AI Vision Sensor aktuálně připojen k EXP Brain.
True– Senzor AI Vision je připojen k EXP Brainu.False– Senzor AI Vision není připojen k EXP Brainu.
Usage:
ai_vision_1.installed()
Parametry |
Popis |
|---|---|
Tato metoda nemá žádné parametry. |
# Display a message if the AI Vision Sensor is connected
if ai_vision_1.installed():
brain.screen.print("Installed!")
Nemovitosti#
Každý objekt uložený v n-tici tuple po použití take_snapshot obsahuje deset vlastností.
All property values except .id and .score describe the detected object’s position and size in the AI Vision Sensor’s view at the moment take_snapshot was used. These values are measured in pixels, based on the sensor’s 320 by 240 pixel resolution.
.exists#
.exists vrací booleovskou hodnotu, která indikuje, zda index v n-tici existuje či nikoli.
True– Index existuje.False– Index neexistuje.
# Check if at least two objects are detected
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[1].exists:
brain.screen.print("At least 2")
else:
brain.screen.print("Less than 2")
wait(50, MSEC)
.width#
.width vrací šířku detekovaného objektu v pixelech, což je celé číslo mezi 1 a 320.
# Approach an object until it's at least 100 pixels wide
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].width < 100:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.height#
.height vrací výšku detekovaného objektu v pixelech, což je celé číslo mezi 1 a 240.
# Approach an object until it's at least 90 pixels tall
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].height < 90:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.centerX#
.centerX vrací souřadnici x středu detekovaného objektu v pixelech, což je celé číslo mezi 0 a 320.
# Turn until an object is directly in front of the sensor
drivetrain.set_turn_velocity(10, PERCENT)
drivetrain.turn(RIGHT)
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if 140 < objects[0].centerX < 180:
drivetrain.stop()
wait(10,MSEC)
.centerY#
.centerY vrací souřadnici y středu detekovaného objektu v pixelech, což je celé číslo mezi 0 a 240.
# Approach an object until the object's center is
# high enough in the field of view
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].centerY < 150:
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.angle#
Funkce .angle vrací orientaci detekovaného barevného kódu nebo ID AprilTag ve stupních, což je celé číslo mezi 0 a 359.
# Turn left or right depending on how a
# configured Color Code is rotated
while True:
box_code = ai_vision_1.take_snapshot(ai_vision_1__BOX_CODE)
if box_code[0].exists:
if 50 < box_code[0].angle < 100:
drivetrain.turn(RIGHT)
elif 270 < box_code[0].angle < 330:
drivetrain.turn(LEFT)
else:
drivetrain.stop()
else:
drivetrain.stop()
wait(50, MSEC)
.originX#
.originX vrací souřadnici x levého horního rohu ohraničovacího rámečku detekovaného objektu v pixelech, což je celé číslo mezi 0 a 320.
# Display if an object is to the left or the right
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originX < 120:
brain.screen.print("To the left!")
else:
brain.screen.print("To the right!")
else:
brain.screen.print("No objects")
wait(100, MSEC)
.originY#
.originY vrací souřadnici y levého horního rohu ohraničovacího rámečku detekovaného objektu v pixelech, což je celé číslo mezi 0 a 240.
# Display if an object is close or far
while True:
brain.screen.clear_screen()
brain.screen.set_cursor(1,1)
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
if objects[0].exists:
if objects[0].originY < 110:
brain.screen.print("Close")
else:
brain.screen.print("Far")
.id#
.id vrací ID detekované klasifikace AI nebo ID AprilTag jako celé číslo.
For an AprilTag ID, the .id property represents the detected AprilTag ID number in the range of 0 to 36. For an AI Classification, the .id property corresponds to the predefined ID in the AI Classifications section.
# Move forward when AprilTag ID 1 is detected
while True:
apriltags = ai_vision_1.take_snapshot(AiVision.ALL_TAGS)
if apriltags[0].exists:
if apriltags[0].id == 1:
robot.drive(FORWARD)
else:
drivetrain.stop()
wait(50, MSEC)
.score#
.score vrací skóre spolehlivosti detekované klasifikace AI jako celé číslo mezi 1 a 100.
Nižší skóre znamená, že si je senzor méně jistý detekovaným objektem, zatímco vyšší skóre znamená, že si je senzor jistější.
Konstruktéři#
Konstruktory se používají k ručnímu vytvoření AiVision, Colordesca Codedesc , které jsou nezbytné pro konfiguraci senzoru AI Vision mimo VEXcode.
AiVision#
AiVision vytváří senzor pro vizuální efekty s umělou inteligencí.
Používání
Vision(smartport, sigs)
Parametry |
Popis |
|---|---|
|
Inteligentní port, ke kterému je připojen AI Vision Sensor, zapsaný jako |
|
Volitelné. Název jednoho nebo více podpisů, oddělený čárkami (
|
# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)
# Create the Color Code
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)
"""
Create an AI Vision Sensor with the following signatures:
- RED_BLUE
- AiVision.ALL_TAGS - for AprilTag IDs
"""
ai_vision_1 = AiVision(Ports.PORT1, RED_BLUE, AiVision.ALL_TAGS)
Colordesc#
Colordesc vytvoří barevný podpis. Na AI Vision senzoru lze uložit až sedm různých barevných podpisů najednou.
Usage:
Colordesc(index, red, green, blue, hangle, hdsat)
Parametr |
Popis |
|---|---|
|
Index objektu |
|
Červená hodnota barvy od 0 do 255. |
|
Zelená hodnota barvy od 0 do 255. |
|
Modrá hodnota barvy od 0 do 255. |
|
Přípustná odchylka odstínu v rozsahu stupňů na barevném kruhu (1–40). Vyšší hodnoty umožňují větší rotační odchylku od základního odstínu. |
|
Přípustná odchylka sytosti od 0,10 do 1,00. Tato hodnota představuje zlomek celého rozsahu sytosti, v němž se barva může posunout (např. 0,10 = ±10 % sytosti). |

"""
Create a Color Signature with the following values:
- index: 1
- red: 255
- green: 0
- blue: 0
- hangle: 20
- hdsat: 0.9
"""
# Create a red Color Signature
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
Codedesc#
Codedesc vytváří barevný kód. Pro jeho použití jsou nutné alespoň dva již definované Barevné signatury. Na obrazovém senzoru lze najednou uložit až osm různých barevných kódů.
Usage:
Codedesc(sig1, sig2, sig3, sig4, sig5)
Parametr |
Popis |
|---|---|
|
Dříve vytvořený Barevný podpis. |
|
Dříve vytvořený Barevný podpis. |
|
Volitelné. Dříve vytvořený Barevný podpis. |
|
Volitelné. Dříve vytvořený Barevný podpis. |
|
Volitelné. Dříve vytvořený Barevný podpis. |
# Create the Color Signatures
RED_BOX = Colordesc(1, 255, 0, 0, 20, 0.9)
BLUE_BOX = Colordesc(0, 26, 255, 0, 20, 0.9)
# Create a Color Code with the Color Signatures
BOX_CODE = Codedesc(RED_BOX, BLUE_BOX)
Tagdesc#
Tagdesc vytvoří ID AprilTag. Můžete ho použít k definování identifikovatelných ID AprilTag, což váš kód usnadní a zpřehlední.
Usage:
Tagdesc(id)
Parametr |
Popis |
|---|---|
|
ID AprilTag, které se má použít. |
# Set AprilTag ID 7 to be the "goal"
goal = Tagdesc(7)