Mākslīgā intelekta redzes sensors#
Ievads#
aivision klase tiek izmantota, lai kontrolētu un piekļūtu datiem no EXP AI redzes sensora. AI redzes sensors var noteikt:
Mākslīgā intelekta klasifikācijas (piemēram, spēļu objekti)
AprilTag ID
Pielāgoti krāsu paraksti
Pielāgoti krāsu kodi
Tas sniedz objekta datus, tostarp pozīciju, izmēru, orientāciju, klasifikācijas ID un ticamības rādītāju.
Sensors apstrādā vizuālo informāciju, izmantojot iebūvētu mākslīgā intelekta modeli, kas atlasīts VEXcode ietvaros esošajā AI Vision Utility. Atlasītais modelis nosaka, kuras mākslīgā intelekta klasifikācijas sensors var noteikt. Izmantojot VS Code, mākslīgā intelekta modelis vispirms ir jākonfigurē VEXcode, pirms to var izmantot programmā. Atklātie objekti tiek atgriezti, izmantojot masīvu objects pēc takeSnapshot izsaukšanas.
Klases konstruktori#
aivision(
int32_t index,
Args&... sigs );
Parametri#
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Viedā pieslēgvieta, kurai ir pievienots AI redzes sensors, kas pierakstīta kā |
|
|
Viens vai vairāki noteikšanas veidi, kas jāreģistrē sensorā:
|
Mākslīgā intelekta modeļi un klasifikācijas#
AI redzes sensors var noteikt dažādus objektus ar noteiktām AI klasifikācijām. Atkarībā no AI klasifikācijas modeļa, kas atlasīts, konfigurējot AI redzes sensoru ierīcēs, var noteikt dažādus objektus. Pašlaik pieejamie modeļi ir:
Klases elementi
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
VEX V5 robotikas sacensības ar augstām likmēm
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
VEX V5 robotikas sacensību pretošanās
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
VEX V5 robotikas sacensību ignorēšana
ID numurs |
AI klasifikācija |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
Piemēri#
// Create Color Signatures
aivision::colordesc AIVision1__greenBox(
1, // index
85, // red
149, // green
46, // blue
23, // hangle
0.23 ); // hdsat
aivision::colordesc AIVision1__blueBox(
2, // index
77, // red
135, // green
125, // blue
27, // hangle
0.29 ); // hdsat
// Create a Color Code from two color signatures
aivision::codedesc AIVision1__greenBlue(
1, // code index
AIVision1__greenBox, // first color signature
AIVision1__blueBox ); // second color signature
// Create the AI Vision Sensor instance
aivision AIVision1(
PORT11, // Smart Port
AIVision1__greenBlue, // color code
aivision::ALL_AIOBJS ); // enable AI Classifications
Dalībnieku funkcijas#
aivision klasē ir iekļautas šādas dalībfunkcijas:
takeSnapshot— Ietver datus konkrētam krāsu parakstam, krāsu kodam, AI klasifikācijas grupai vai AprilTag ID grupai.installed— Atgriež, vai AI redzes sensors ir pievienots EXP smadzenēm.
Lai piekļūtu noteiktajiem objekta datiem pēc takeSnapshot izsaukšanas, izmantojiet pieejamās Properties īpašības.
Pirms jebkuru aivision dalībfunkciju izsaukšanas ir jāizveido aivision instance, kā parādīts zemāk:
/* This constructor is required when using VS Code.
AI Vision Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create Color Signatures
aivision::colordesc AIVision1__greenBox(
1, // index
85, // red
149, // green
46, // blue
23, // hangle
0.23 ); // hdsat
aivision::colordesc AIVision1__blueBox(
2, // index
77, // red
135, // green
125, // blue
27, // hangle
0.29 ); // hdsat
// Create a Color Code from two color signatures
aivision::codedesc AIVision1__greenBlue(
1, // code index
AIVision1__greenBox, // first color signature
AIVision1__blueBox ); // second color signature
// Create the AI Vision Sensor instance
aivision AIVision1(
PORT1, // Smart Port
AIVision1__greenBlue, // color code
aivision::ALL_AIOBJS ); // enable AI Classifications
takeSnapshot#
Uztver attēlu no AI redzes sensora, apstrādā to, izmantojot atlasīto AI modeli vai konfigurētus krāsu parakstus, un atjaunina objects masīvu.
Katrs izsaukums atsvaidzina masīvu objects ar jaunākajiem noteikšanas rezultātiem. Objekti tiek sakārtoti no lielākā līdz mazākajam (pēc platuma), sākot ar indeksu 0Ja objekti netiek atrasti, objectCount būs 0 un objects[i].exists būs false.
1 — Uzņem momentuzņēmumu, izmantojot objekta ID un objekta tipu.
int32_t takeSnapshot( uint32_t id, objectType type, uint32_t count );
2 — Uzņem momentuzņēmumu, izmantojot Krāsu parakstu.
int32_t takeSnapshot( const colordesc &desc, int32_t count = 8 );
3 — Uzņem momentuzņēmumu, izmantojot Krāsu kodu.
int32_t takeSnapshot( const codedesc &desc, int32_t count = 8 );
4 — Uzņem momentuzņēmumu, izmantojot AprilTag ID.
int32_t takeSnapshot( const tagdesc &desc, int32_t count = 8 );
5 — Uzņem momentuzņēmumu, izmantojot AI klasifikāciju.
int32_t takeSnapshot( const aiobjdesc &desc, int32_t count = 8 );
Parameters6 — Uzņem momentuzņēmumu, izmantojot objekta deskriptoru.
int32_t takeSnapshot( const objdesc &desc, int32_t count = 8 );
Parametrs |
Tips |
Apraksts |
|---|---|---|
|
|
Nosakāmā objekta identifikators, izmantojot funkciju
Piezīme: VEXcode AI klasifikācijas nosaukumus (piemēram, blueBall) var izmantot tieši. VS Code ir jāizmanto skaitliskais ID. |
|
|
Norāda ar
|
|
|
Deskriptors, ko izmanto konkrēta objekta noteikšanai. Tiek nodots tieši funkcijai
|
|
|
Maksimālais momentuzņēmumā saglabāto objektu skaits. Noklusējuma vērtība ir 8. |
Atgriešanas vērtības
Atgriež int32_t , kas apzīmē noteikto objektu skaitu, kas atbilst norādītajam parakstam vai noteikšanas tipam.
Piezīmes
Pirms piekļuves objekta datiem, mākslīgā intelekta redzes sensoram ir jāuzņem momentuzņēmums.
Masīvs
objectstiek atsvaidzināts katrā izsaukumā.Ja ir norādīts
count, tiek saglabāti tikai lielākie atklātie objekti (līdz norādītajam skaitam).
Mākslīgā intelekta klasifikācijas ir atkarīgas no modeļa, kas atlasīts VEXcode AI Vision utilītā.
piemēri
// Move forward if an object is detected
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
Drivetrain.driveFor(forward, 50, mm);
}
wait(50, msec);
}
installed#
Atgriež, vai AI redzes sensors ir savienots ar EXP Brain.
Pieejamās funkcijas
bool installed();
Parametri
Šī funkcija nepieņem nekādus parametrus.
Atgriešanas vērtības
Atgriež Būla vērtību, kas norāda, vai ir pievienots AI redzes sensors:
true— AI redzes sensors ir pievienots.false— Mākslīgā intelekta redzes sensors nav pievienots.
// Display a message if the AI Vision Sensor is connected
if (AIVision1.installed()){
Brain.Screen.print("Installed!");
}
Īpašumi#
Izsaucot takeSnapshot, tiek atjaunināti AI redzes sensora noteikšanas rezultāti. Katrs momentuzņēmums atsvaidzina objects masīvu, kurā ir noteiktie objekti pieprasītajai AI klasifikācijai, krāsas parakstam, krāsas kodam vai AprilTag ID.
AI Vision data is accessed through properties of objects stored in AIVisionSensor.objects[index], where index begins at 0.
Objekti ir sakārtoti no lielākā līdz mazākajam (pēc laukuma).
AI redzes sensora attēla izšķirtspēja ir 320 × 240. Objekta pozīcijas un izmēra vērtības tiek ziņotas pikseļu vienībās attiecībā pret sensora pašreizējo skatu.
Ir pieejami šādi īpašumi:
objectCount— Atgriež no jaunākā momentuzņēmuma noteikto objektu skaitu.largestObject— Atlasa lielāko noteikto objektu no jaunākā momentuzņēmuma.objects— Masīvs, kas satur atrastos objektus, kurus atjauninatakeSnapshot..exists— Vai objekta ieraksts satur derīgus datus..width— Noteiktā objekta platums pikseļos..height— Noteiktā objekta augstums pikseļos..centerX— X position of the object’s center in pixels..centerY— objekta centra Y pozīcija pikseļos..originX— objekta augšējā kreisā stūra X pozīcija pikseļos..originY— objekta augšējā kreisā stūra Y pozīcija pikseļos..angle— Krāsas koda vai AprilTag ID orientācija grādos..id— Classification ID or AprilTag ID..score— AI klasifikāciju ticamības rādītājs.
objectCount#
objectCount atgriež masīvā objects esošo elementu skaitu kā veselu skaitli.
AIVisionSensor.objectCount
Komponents |
Apraksts |
|---|---|
|
Jūsu AI redzes sensora instances nosaukums. |
piemēri
// Display the number of detected objects
while (true) {
Brain.Screen.setCursor(1, 1);
Brain.Screen.clearLine(1);
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
Brain.Screen.print("%d", AIVision1.objectCount);
}
wait(50, msec);
}
largestObject#
largestObject izgūst lielāko noteikto objektu no masīva objects.
Šo metodi var izmantot, lai vienmēr iegūtu lielāko objektu no objects , nenorādot indeksu.
AIVisionSensor.largestObject
Komponents |
Apraksts |
|---|---|
|
Jūsu AI redzes sensora instances nosaukums. |
piemēri
// Display the closest AprilTag ID
while (true) {
Brain.Screen.setCursor(1, 1);
Brain.Screen.clearLine(1);
AIVision1.takeSnapshot(aivision::ALL_TAGS);
if (AIVision1.objects[0].exists) {
Brain.Screen.print("%d", AIVision1.largestObject.id);
}
wait(50, msec);
}
objects#
objects atgriež noteikto objektu īpašību masīvu. Izmantojiet masīvu, lai piekļūtu atsevišķu objektu noteiktām property vērtībām.
Katrā objektā, kas tiek glabāts masīvā objects pēc takeSnapshot izmantošanas, ir iekļautas desmit īpašības.
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 takeSnapshot was used. These values are measured in pixels, based on the sensor’s 320 by 240 pixel resolution.
AIVisionSensor.objects[index].property
Komponents |
Apraksts |
|---|---|
|
Jūsu AI redzes sensora instances nosaukums. |
|
Objekta indekss masīvā. Indekss sākas ar |
|
Viena no pieejamajām objekta īpašībām. |
.pastāv#
.exists atgriež, vai norādītais objekta indekss satur derīgu noteiktu objektu.
Piekļuve
SensorName.objects[index].exists
Atgriešanas vērtības
Atgriež Būla vērtību, kas norāda, vai norādītais objekta indekss satur derīgu noteiktu objektu:
-
true— A valid object exists at the specified index. -
false— No object exists at the specified index.
piemēri
// Move forward if an object is detected
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
Drivetrain.driveFor(forward, 50, mm);
}
wait(50, msec);
}
.platums#
.width atgriež noteiktā objekta platumu.
Piekļuve
SensorName.objects[index].width
Atgriešanas vērtības
Atgriež int16_t kas apzīmē noteiktā objekta platumu pikseļos. Vērtība ir no 1 līdz 320.
piemēri
// Approach an object until it's at least 100 pixels wide
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].width < 100) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
} else {
Drivetrain.stop();
}
wait(50, msec);
}
.augstums#
.height atgriež noteiktā objekta augstumu.
Piekļuve
SensorName.objects[index].height
Atgriešanas vērtības
Atgriež int16_t kas apzīmē noteiktā objekta augstumu pikseļos. Vērtība ir no 1 līdz 240.
piemēri
// Approach an object until it's at least 90 pixels tall
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].height < 90) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
} else {
Drivetrain.stop();
}
wait(50, msec);
}
.centerX#
.centerX atgriež noteiktā objekta centra x koordinātu.
Piekļuve
SensorName.objects[index].centerX
Atgriešanas vērtības
Atgriež vērtību int16_t kas apzīmē objekta centra x koordinātu pikseļos. Vērtība ir no 0 līdz 320.
piemēri
// Turn until an object is directly in front of the sensor
Drivetrain.setTurnVelocity(10, percent);
Drivetrain.turn(right);
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].centerX > 140 && AIVision1.objects[0].centerX < 180) {
Drivetrain.stop();
}
}
wait(10, msec);
}
.centerY#
.centerY atgriež noteiktā objekta centra y koordinātu.
Piekļuve
SensorName.objects[index].centerY
Atgriešanas vērtības
Atgriež int16_t kas apzīmē objekta centra y koordinātu pikseļos. Vērtība ir no 0 līdz 240.
piemēri
// Approach an object until it's close to the sensor
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].centerY < 150) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
} else {
Drivetrain.stop();
}
wait(50, msec);
}
.leņķis#
.angle atgriež noteiktā krāsas koda vai AprilTag ID orientāciju.
Piekļuve
SensorName.objects[index].angle
Atgriešanas vērtības
Returns a float representing the rotation of the detected Color Code or AprilTag ID in degrees. The value ranges from 0 to 359.9.
piemēri
// Turn left or right depending on how a configured
// Color Code is rotated
while (true) {
AIVision1.takeSnapshot(AIVision1__redBlue);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].angle > 50 && AIVision1.objects[0].angle < 100) {
Drivetrain.turn(right);
}
else if (AIVision1.objects[0].angle > 270 && AIVision1.objects[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.
Piekļuve
SensorName.objects[index].originX
Atgriešanas vērtības
Atgriež vērtību int16_t kas apzīmē objekta ierobežojošā lodziņa sākuma punkta x koordinātu pikseļos. Vērtība ir no 0 līdz 320.
piemēri
// Display if an object is to the left or the right
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.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.
Piekļuve
SensorName.objects[index].originY
Atgriešanas vērtības
Atgriež vērtību int16_t kas apzīmē objekta ierobežojošā lodziņa sākuma punkta y koordinātu pikseļos. Vērtība ir no 0 līdz 240.
piemēri
// Display if an object is close or far
while (true) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].originY < 110) {
Brain.Screen.print("Close");
} else {
Brain.Screen.print("Far");
}
}
wait(100, msec);
}
.id#
.id atgriež noteikto AprilTag ID vai AI klasifikācijas ID.
Piekļuve
SensorName.objects[index].id
Atgriešanas vērtības
Atgriež int32_t kas apzīmē noteiktā objekta ID:
AI klasifikācijām tas atbilst atlasītā AI modeļa definētajam ID.
AprilTag ID gadījumā tas apzīmē noteikto AprilTag ID numuru (0–36).
piemēri
// Move forward when AprilTag ID 1 is detected
while (true) {
AIVision1.takeSnapshot(aivision::ALL_TAGS);
if (AIVision1.objects[0].exists) {
if (AIVision1.objects[0].id == 1) {
Drivetrain.drive(forward);
}
} else {
Drivetrain.stop();
}
wait(50, msec);
}
.rezultāts#
.score atgriež noteiktās AI klasifikācijas ticamības rādītāju.
Piekļuve
SensorName.objects[index].score
Atgriešanas vērtības
Atgriež int16_t , kas norāda noteiktās AI klasifikācijas ticamības rādītāju 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.
piemēri
// Display if a score is confident
while (true) {
AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
if (AIVision1.objects[0].exists) {
Brain.screen.clearScreen();
Brain.screen.setCursor(1, 1);
if (AIVision1.objects[0].score > 95) {
Brain.Screen.print("Confident");
} else {
Brain.Screen.print("Not confident");
}
}
wait(50, msec);
}
