Mākslīgā intelekta redzes sensors#
Ievads#
IQ AI redzes sensors var noteikt un izsekot objektus, krāsas un AprilTag ID. Tas ļauj robotam analizēt apkārtni, sekot objektiem un reaģēt, pamatojoties uz noteiktajiem vizuālajiem datiem.
Tālāk sniegtajos piemēros konfigurētais IQ AI redzes sensors tiks nosaukts par ai_vision_1, un konfigurētie krāsu paraksta objekti, piemēram, RED_BOX, tiks izmantoti visos turpmākajos piemēros šajā API dokumentācijā, atsaucoties uz AiVision klases metodēm.
Zemāk ir visu metožu saraksts:
Iegūtāji — iegūstiet datus no IQ AI redzes sensora.
take_snapshot— Iegūst datus konkrētam parakstam.installed— Vai IQ AI redzes sensors ir savienots ar IQ (2. paaudzes) smadzenēm.
Īpašības — No take_snapshot atgrieztie objekta dati.
.exists— Whether the object exists in the current detection..width— Noteiktā objekta platums..height— Noteiktā objekta augstums..centerX— X position of the object’s center..centerY— objekta centra Y pozīcija..angle— Krāsas koda vai AprilTag ID orientācija..originX— objekta augšējā kreisā stūra X pozīcija..originY— objekta augšējā kreisā stūra Y pozīcija..id— Classification or tag ID of the object..score— AI klasifikāciju ticamības rādītājs.
Konstruktori — manuāli inicializējiet un konfigurējiet sensorus.
Getteri#
take_snapshot#
take_snapshot filtrē datus no IQ AI redzes sensora kadra līdz vienam parakstam — saglabātam aprakstam par kaut ko tādu, ko sensors var atpazīt, piemēram, iepriekš apmācītu objektu, AprilTag ID vai konfigurētu krāsas parakstu vai krāsas kodu — un atgriež tuple.
Krāsu paraksti un Krāsu kodi vispirms ir jākonfigurē Vision utilītā, pirms tos var izmantot ar šo metodi.
Kortežs saglabā objektus, kas sakārtoti no lielākā līdz mazākajam pēc platuma, sākot ar indeksu 0. Katra objekta īpašībām var piekļūt, izmantojot tā indeksu. Ja netiek atrasti atbilstoši objekti, tiek atgriezts tukšs kortežs.
Usage:
ai_vision_1.take_snapshot(SIGNATURE)
Parametri |
Apraksts |
|---|---|
|
Filtrē datu kopu, lai iekļautu tikai dotā paraksta datus. Pieejamie paraksti ir:
|
|
Neobligāti. Iestata maksimālo atgriezto objektu skaitu no 1 līdz 24 (pēc noklusējuma: 8). |
# Move 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)
Piezīme: Atgriezto kortežu var kārtot pēc jebkuras īpašības, ne tikai pēc platuma, izmantojot Python sorted funkciju. Piemēram, kārtojot pēc AprilTag ID:
# 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)
Vai arī kārtot pēc augstuma:
# 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)
Mākslīgā intelekta klasifikācijas#
IQ AI redzes sensors var noteikt dažādus objektus saskaņā ar noteiktām AI klasifikācijām. Atkarībā no AI klasifikācijas modeļa, kas atlasīts, konfigurējot AI redzes sensoru ierīču logā, tiks noteikti dažādi objekti. Pašlaik pieejamie modeļi ir:
Klases priekšmeti
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
VEX IQ robotikas sacensību mikslis un saskaņošana
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
VEX IQ robotikas sacensību līmenis paaugstinās
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
Krāsu paraksti#
Krāsas paraksts ir unikāla krāsa, ko IQ AI redzes sensors spēj atpazīt. Šie paraksti ļauj IQ AI redzes sensoram noteikt un izsekot objektus, pamatojoties uz to krāsu. Kad krāsas paraksts ir konfigurēts, sensors var identificēt objektus ar šo konkrēto krāsu tā redzes laukā. Krāsu paraksti tiek izmantoti kopā ar take_snapshot, lai apstrādātu un noteiktu krāsainus objektus reāllaikā.
Lai projektā izmantotu konfigurētu krāsas parakstu, tā nosaukumam jāsastāv no sensora nosaukuma, divām pasvītrojuma zīmēm un pēc tam krāsas paraksta nosaukuma. Piemēram: 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)
Krāsu kodi#
Krāsu kods ir strukturēts raksts, kas sastāv no noteiktā secībā sakārtotiem krāsu parakstiem. Šie kodi ļauj IQ AI redzes sensoram atpazīt iepriekš definētus krāsu rakstus. Krāsu kodi ir noderīgi sarežģītu objektu identificēšanai vai unikālu marķieru izveidei autonomai navigācijai.
Lai projektā izmantotu konfigurētu krāsu kodu, tā nosaukumam ir jābūt sensora nosaukumam, divām pasvītrojuma zīmēm un pēc tam krāsas koda nosaukumam. Piemēram: 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 atgriež Būla vērtību, kas norāda, vai IQ AI redzes sensors pašlaik ir savienots ar IQ (2. paaudzes) smadzenēm.
True— IQ AI redzes sensors ir savienots ar IQ (2. paaudzes) smadzenēm.False— IQ AI redzes sensors nav savienots ar IQ (2. paaudzes) smadzenēm.
Usage:
ai_vision_1.installed()
Parametri |
Apraksts |
|---|---|
Šai metodei nav parametru. |
# Display a message if the AI Vision Sensor is connected
if ai_vision_1.installed():
brain.screen.print("Installed!")
Īpašumi#
Pēc take_snapshot izmantošanas katrā objektā, kas tiek glabāts tuple, ir iekļautas desmit īpašības.
All property values except .id and .score describe the detected object’s position and size in the IQ 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 atgriež Būla vērtību, kas norāda, vai indekss eksistē kortežā vai nē.
True— Indekss pastāv.False— Indekss nepastāv.
# 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 atgriež noteiktā objekta platumu pikseļos, kas ir vesels skaitlis no 1 līdz 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 atgriež noteiktā objekta augstumu pikseļos, kas ir vesels skaitlis no 1 līdz 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 atgriež noteiktā objekta centra x koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 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 atgriež noteiktā objekta centra y koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 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#
.angle atgriež noteiktā krāsas koda vai AprilTag ID orientāciju grādos, kas ir vesels skaitlis no 0 līdz 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 atgriež noteiktā objekta ierobežojošā lodziņa augšējā kreisā stūra x koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 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 atgriež noteiktā objekta ierobežojošā lodziņa augšējā kreisā stūra y koordinātu pikseļos, kas ir vesels skaitlis no 0 līdz 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 atgriež noteiktās AI klasifikācijas vai AprilTag ID kā veselu skaitli. AI klasifikācijas ir atkarīgas no modeļa, kas ir konfigurēts AI Vision utilītā.
AprilTag ID gadījumā īpašība .id apzīmē noteikto AprilTag ID numuru diapazonā no 0 līdz 36. AI klasifikācijas gadījumā īpašība .id atbilst iepriekš definētajam ID sadaļā AI klasifikācijas.
# 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 atgriež noteiktās AI klasifikācijas ticamības rādītāju kā veselu skaitli no 1 līdz 100.
Zemāks rādītājs nozīmē, ka sensors ir mazāk pārliecināts par noteikto objektu, savukārt augstāks rādītājs nozīmē, ka sensors ir pārliecinātāks.
# Display if a score is confident
while True:
objects = ai_vision_1.take_snapshot(AiVision.ALL_AIOBJS)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
if objects[0].exists:
if objects[0].score > 95:
brain.screen.print("Confident")
else:
brain.screen.print("Not confident")
wait(50, MSEC)
Konstruktori#
Konstruktori tiek izmantoti, lai manuāli izveidotu AiVision, Colordescun Codedesc objektus, kas ir nepieciešami IQ AI redzes sensora konfigurēšanai ārpus VEXcode.
AI Vision Sensor#
AiVision izveido IQ AI redzes sensoru.
Lietošana
Vision(port, sigs)
Parametri |
Apraksts |
|---|---|
|
Kuram viedajam portam ir pievienots IQ AI redzes sensors (no 1 līdz 12). |
|
Neobligāti. Viena vai vairāku parakstu nosaukums:
|
Piemērs
ai_vision_1 = AiVision(Ports.PORT1, AiVision.ALL_AIOBJS)
# Move 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)
Color Signature#
Colordesc izveido krāsas parakstu. IQ AI redzes sensorā vienlaikus var saglabāt līdz septiņiem dažādiem krāsu parakstiem.
Lietojums:
Colordesc(index, uMin, uMax, uMean, vMin, vMax, vMean, rgb, type)
Parametrs |
Apraksts |
|---|---|
|
|
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
|
Vērtība no |
Lai iegūtu vērtības krāsu paraksta izveidei, dodieties uz Vision Utility. Kad krāsu paraksts ir konfigurēts, kopējiet parametru vērtības no konfigurācijas loga.
Piemērs
# Create a new Signature RED_BOX with the Colordesc class
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440,2.5, 1)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX Signature.
ai_vision_1 = AiVision(Ports.PORT1, 100, RED_BOX)
# Move forward if a red object is detected
while True:
red_object = ai_vision_1.take_snapshot(RED_BOX)
if red_object[0].exists:
drivetrain.drive_for(FORWARD, 10, MM)
wait(5, MSEC)
Color Code#
Codedesc izveido krāsu kodu. Lai to izmantotu, nepieciešami vismaz divi jau definēti krāsu paraksti. Redzes sensorā vienlaikus var saglabāt līdz astoņiem dažādiem krāsu kodiem.
Lietojums:
Codedesc(sig1, sig2, sig3, sig4, sig5)
Parametrs |
Apraksts |
|---|---|
|
Iepriekš izveidots Krāsu paraksts. |
|
Iepriekš izveidots Krāsu paraksts. |
|
Pēc izvēles. Iepriekš izveidots Krāsu paraksts. |
|
Pēc izvēles. Iepriekš izveidots Krāsu paraksts. |
|
Pēc izvēles. Iepriekš izveidots Krāsu paraksts. |
Piemērs
# Create two new Signatures for a red and blue box
RED_BOX = Colordesc(1, 10121, 10757, 10439,-1657, -1223, -1440, 2.5, 1)
BLUE_BOX = Colordesc(2, -4443, -3373, -3908,6253, 7741, 6997, 2.5, 1)
# Create a Color Code for a red box to the left of a blue box
RED_BLUE = Codedesc(RED_BOX, BLUE_BOX)
# Create a new AI Vision Sensor "ai_vision_1" with the AiVision
# class, with the RED_BOX and BLUE_BOX Signatures.
ai_vision_1 = AiVision(Ports.PORT1, RED_BOX, BLUE_BOX)
# Display a message if Color Code is detected
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(RED_BLUE)
if box_code[0].exists:
brain.screen.print("Code detected!")
wait(100, MSEC)