Braiteoir Fís AI#

Réamhrá#

Úsáidtear an rang aivision chun sonraí a rialú agus rochtain a fháil orthu ón Braiteoir Fís AI V5. Is féidir leis an Braiteoir Fís AI na nithe seo a leanas a bhrath:

  • Aicmithe AI ​​(amhail réada cluiche)

  • Aitheantóirí Clibeanna Aibreáin

  • Sínithe Dath Saincheaptha

  • Cóid Dath Saincheaptha

Soláthraíonn sé sonraí réada lena n-áirítear suíomh, méid, treoshuíomh, aitheantóir aicmithe, agus scór muiníne.

Próiseálann an braiteoir faisnéis amhairc ag baint úsáide as samhail AI ar bord atá roghnaithe san Fóntas Fís AI laistigh de VEXcode. Cinneann an tsamhail roghnaithe cé na hAicmithe AI ​​is féidir leis an braiteoir a bhrath. Agus Cód VS á úsáid, ní mór an tsamhail AI a chumrú ar dtús i VEXcode sula bhféadfar í a úsáid i do chlár. Seoltar réada braite tríd an eagar objects tar éis takeSnapshot a ghlaoch.

Tógálaithe Ranga#

aivision(
  int32_t index,
  Args&... sigs );

Paraiméadair#

Paraiméadar

Cineál

Cur síos

index

int32_t

An Port Cliste a bhfuil an Braiteoir Fís AI ceangailte leis, scríofa mar PORTx, áit a seasann x don uimhir phoirt (mar shampla, PORT1).

sigs

colordesc, codedesc, or AI constants

Cineál braite amháin nó níos mó le clárú leis an braiteoir:

  • aivision::ALL_AIOBJS — Gach Aicme Intleachta Saorga
  • aivision::ALL_TAGS — Gach ID AprilTag
  • aivision::colordesc — Síniú Dath Saincheaptha
  • aivision::codedesc — Cód Dath Saincheaptha

Samhlacha agus Aicmithe AI#

Is féidir leis an Braiteoir Fís AI rudaí éagsúla a bhrath le hAicmithe AI ​​áirithe. Ag brath ar an tsamhail Aicmithe AI ​​a roghnaítear agus an Braiteoir Fís AI á chumrú sa fhuinneog Gléasanna, is féidir rudaí éagsúla a bhrath. Is iad seo a leanas na samhlacha atá ar fáil faoi láthair:

Eilimintí an tSeomra Ranga

Uimhir Aitheantais

Aicmiú AI

0

blueBall

1

greenBall

2

redBall

3

blueRing

4

greenRing

5

redRing

6

blueCube

7

greenCube

8

redCube

Comórtas Róbataice VEX V5 Ard-Geallta

Uimhir Aitheantais

Aicmiú AI

0

mobileGoal

1

redRing

2

blueRing

Brú Ar Ais ar Chomórtas Róbataice VEX V5

Uimhir Aitheantais

Aicmiú AI

0

blueBlock

1

redBlock

Sárú Comórtais Róbataice VEX V5

Uimhir Aitheantais

Aicmiú AI

0

redBluePin

1

blueYellowPin

2

redYellowPin

3

yellowPin

4

cup

Samplaí#

// 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

Feidhmeanna na mBall#

Áirítear leis an rang aivision na feidhmeanna ball seo a leanas:

  • takeSnapshot — Gabhann sé sonraí le haghaidh Síniú Dath, Cód Dath, grúpa Aicmithe AI, nó grúpa ID AprilTag ar leith.

  • installed — Tugann sé seo ar ais an bhfuil an Braiteoir Fís AI ceangailte leis an V5 Brain.

Chun rochtain a fháil ar shonraí réada braite tar éis glaoch ar takeSnapshot, bain úsáid as na Airíonna atá ar fáil.

Sula nglaotar ar aon fheidhmeanna aivision , ní mór sampla aivision a chruthú, mar a thaispeántar thíos:

/* 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#

Gabhann sé íomhá ón Braiteoir Fís AI, próiseálann sé í ag baint úsáide as an tsamhail AI roghnaithe nó sínithe datha cumraithe, agus nuashonraíonn sé an eagar objects.

Athnuachanann gach glao an eagar objects leis na torthaí braite is déanaí. Ordaítear réada ón gceann is mó go dtí an ceann is lú (de réir leithead), ag tosú ag innéacs 0Mura mbraitear aon réada, beidh objectCount cothrom le 0 agus beidh objects[i].exists cothrom le false.

1 — Tógann sé pictiúr den íomhá ag baint úsáide as aitheantóir réada agus cineál réada.

int32_t takeSnapshot(
  uint32_t id,
  objectType type,
  uint32_t count );

2 — Glacann sé pictiúr pictiúrtha ag baint úsáide as Síniú Datha.

int32_t takeSnapshot(
  const colordesc &desc,
  int32_t count = 8 );

3 — Glacann sé pictiúr pictiúr ag baint úsáide as Cód Datha.

int32_t takeSnapshot(
  const codedesc &desc,
  int32_t count = 8 );

4 — Glacann sé pictiúr pictiúrtha ag baint úsáide as AprilTag ID.

int32_t takeSnapshot(
  const tagdesc &desc,
  int32_t count = 8 );

5 — Glacann sé pictiúr pictiúrtha ag baint úsáide as Aicmiú AI.

int32_t takeSnapshot(
  const aiobjdesc &desc,
  int32_t count = 8 );

6 — Tógann sé pictiúr den íomhá ag baint úsáide as Tuairisceoir Réada.

int32_t takeSnapshot(
  const objdesc &desc,
  int32_t count = 8 );

Parameters

Paraiméadar

Cineál

Cur síos

id

uint32_t

Aitheantóir an réada atá le braith agus an fheidhm (id, type, count) á húsáid. Braitheann an bhrí ar type:

  • colorObject — Innéacs Tuairisceora Datha (1–7)
  • codeObject — Innéacs Cód Datha (1–8)
  • modelObject — Aitheantas Aicmithe AI
  • tagObject — Aitheantas AprilTag (0–36)

Nóta: I VEXcode, féadfar ainmneacha Aicmithe AI ​​(mar shampla blueBall) a úsáid go díreach. I VS Code, ní mór an t-aitheantas uimhriúil a úsáid.

type

objectType

Sonraíonn sé an chatagóir réada a bhaineann le id:

  • objectType::tagObject — Braitheann sé aitheantóirí AprilTag
  • objectType::colorObject — Braitheann sé Sínithe Datha
  • objectType::codeObject — Braitheann sé Cóid Datha
  • objectType::modelObject — Braitheann sé Aicmithe AI
  • objectType::allObject — Braitheann sé gach rud is féidir leis an braiteoir a aithint

desc

colordesc &, codedesc &, tagdesc &, aiobjdesc &, or objdesc &

Descriptor used to detect a specific object. Passed directly to takeSnapshot, for example:

  • AIVision1.takeSnapshot(AIVision1__greenBox);
  • AIVision1.takeSnapshot(aivision::ALL_AIOBJS);
Predefined descriptor constants:
  • aivision::ALL_TAGS — Detects all AprilTag IDs
  • aivision::ALL_COLORS — Detects all configured Color Signatures
  • aivision::ALL_CODES — Detects all configured Color Codes
  • aivision::ALL_AIOBJS — Detects all AI Classifications
  • aivision::ALL_OBJECTS — Detects everything the sensor can recognize

count

uint32_t / int32_t

Uasmhéid na n-ábhar atá stóráilte ón ngrianghraf. Is é 8 an réamhshocrú.

Luachanna Fillte

Tugann sé int32_t a léiríonn líon na réad braite a mheaitseálann an síniú nó an cineál braite sonraithe.

Nótaí

  • Caithfidh an Braiteoir Fís AI pictiúr den réad a thógáil sula bhféadfar rochtain a fháil ar shonraí réada.

  • Déantar an t-eagar objects a athnuachan ar gach glao.

  • Nuair a shonraítear count , ní stóráiltear ach na réada braite is mó (suas go dtí an méid sonraithe).

Braitheann Aicmithe AI ​​ar an tsamhail a roghnaítear san AI Vision Utility i VEXcode.

Samplaí

// 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#

Tugann sé seo ar ais an bhfuil an Braiteoir Fís AI ceangailte leis an V5 Brain.

Feidhmeanna atá ar Fáil

bool installed();

Paraiméadair

Ní ghlacann an fheidhm seo aon pharaiméadair.

Luachanna Fillte

Tugann sé seo luach Boolean ar ais a léiríonn an bhfuil an Braiteoir Fís AI ceangailte:

  • true — Tá an Braiteoir Fís AI ceangailte.

  • false — Níl an Braiteoir Fís AI ceangailte.

// Display a message if the AI Vision Sensor is connected
if (AIVision1.installed()){
  Brain.Screen.print("Installed!");
}

Airíonna#

Nuashonraítear torthaí braite Braiteoir Fís AI nuair a ghlaotar ar takeSnapshot. Athnuachanaítear an eagar objects le gach pictiúr, ina bhfuil réada braite don Aicmiú AI, don Síniú Dath, don Chód Dath, nó don Aitheantas AprilTag a iarradh.

Rochtainítear sonraí AI Vision trí airíonna réad atá stóráilte in AIVisionSensor.objects[index], áit a dtosaíonn index ag 0.

Tá rudaí in ord ón gceann is mó go dtí an ceann is lú (de réir achair).

Is é 320 × 240 picteilíntaifeach íomhá an Braiteora Fís AI. Tuairiscítear luachanna suíomh agus méid an réada in aonaid picteilín i gcoibhneas le radharc reatha an braiteora.

Tá na maoine seo a leanas ar fáil:

  • objectCount — Tugann sé seo líon na réad a braitheadh ​​ón ngrianghraf is déanaí ar ais.

  • largestObject — Roghnaíonn sé an réad is mó a braitheadh ​​ón ngrianghraf is déanaí.

  • objects — Eagar ina bhfuil réada braite nuashonraithe ag takeSnapshot.

  • .exists — Cibé acu an bhfuil sonraí bailí san iontráil réada.

  • .width — Leithead an réada braite i bpicteilíní.

  • .height — Airde an réada braite i bpicteilíní.

  • .centerX — Suíomh X lár an réada i bpicteilíní.

  • .centerY — Suíomh Y lár an réada i bpicteilíní.

  • .originX — Suíomh X chúinne uachtarach na láimhe clé den réada i bpicteilíní.

  • .originY — Suíomh Y chúinne uachtarach na láimhe clé den réada i bpicteilíní.

  • .angle — Treoshuíomh Cód Dathanna nó ID AprilTag i gcéimeanna.

  • .id — Classification ID or AprilTag ID.

  • .score — Scór muiníne le haghaidh Aicmithe AI.

objectCount#

objectCount tugann sé líon na míreanna laistigh den eagar objects ar ais mar shlánuimhir.

Syntax
AIVisionSensor.objectCount

Components

Comhpháirt

Cur síos

AIVisionSensor

Ainm d’eispéireas Braiteora Fís AI.

Samplaí

// 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 a aisghabhann an réad is mó a braitheadh ​​ón eagar objects.

Is féidir an modh seo a úsáid chun an réad is mó a fháil i gcónaí ó objects gan innéacs a shonrú.

Syntax
AIVisionSensor.largestObject

Components

Comhpháirt

Cur síos

AIVisionSensor

Ainm d’eispéireas Braiteora Fís AI.

Samplaí

// 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 tugann sé sraith d’airíonna réada braite ar ais. Úsáid an tsraith chun rochtain a fháil ar luachanna airíonna sonracha réada aonair.

Tá deich n-airíonna san áireamh le gach réad atá stóráilte san eagar objects tar éis takeSnapshot a úsáid.

Déanann gach luach maoine seachas id agus score cur síos ar shuíomh agus méid an réada braite i radharc Braiteoir Fís AI ag an nóiméad takeSnapshot Tomhaistear na luachanna seo i bpicteilíní, bunaithe ar réiteach 320 faoi 240 picteilín an braiteora.

Syntax
AIVisionSensor.objects[index].property

Components

Comhpháirt

Cur síos

AIVisionSensor

Ainm d’eispéireas Braiteora Fís AI.

index

Innéacs an réada san eagar. Tosaíonn an t-innéacs ag 0.

property

Ceann de na airíonna réada atá ar fáil.

ann#

.exists tugann sé seo ar ais an bhfuil réad bailí braite san innéacs réada sonraithe.

Rochtain

SensorName.objects[index].exists

Luachanna Fillte

Tugann sé seo luach Booleánach ar ais a léiríonn an bhfuil réad bailí braite san innéacs réada sonraithe:

  • true — A valid object exists at the specified index.
  • false — No object exists at the specified index.

Samplaí

// 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);
}

.leithead#

Tugann .width leithead an réada braite ar ais.

Rochtain

SensorName.objects[index].width

Luachanna Fillte

Tugann sé int16_t a léiríonn leithead an réada braite i bpicteilíní. Tá an luach idir 1 agus 320.

Samplaí

// 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);
}

airde#

.height tugann sé airde an réada braite ar ais.

Rochtain

SensorName.objects[index].height

Luachanna Fillte

Tugann sé int16_t a léiríonn airde an réada braite i bpicteilíní. Tá an luach idir 1 agus 240.

Samplaí

// 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 tugann sé comhordanáid-x lár an réada braite ar ais.

Rochtain

SensorName.objects[index].centerX

Luachanna Fillte

Tugann sé int16_t ar ais a léiríonn comhordanáid-x lár an réada i bpicteilíní. Tá an luach idir 0 agus 320.

Samplaí

// 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 tugann sé comhordanáid-y lár an réada braite ar ais.

Rochtain

SensorName.objects[index].centerY

Luachanna Fillte

Tugann sé int16_t ar ais a léiríonn comhordanáid y lár an réada i bpicteilíní. Tá an luach idir 0 agus 240.

Samplaí

// 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);
}

.uillinn#

Tugann .angle treoshuíomh an Chóid Dathanna nó ID AprilTag braite ar ais.

Rochtain

SensorName.objects[index].angle

Luachanna Fillte

Returns a float representing the rotation of the detected Color Code or AprilTag ID in degrees. The value ranges from 0 to 359.9.

Samplaí

// 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 tugann sé comhordanáid-x chúinne uachtarach na láimhe clé de bhosca teorann an réada braite ar ais.

Rochtain

SensorName.objects[index].originX

Luachanna Fillte

Tugann sé int16_t ar ais a léiríonn comhordanáid-x bhunphointe bosca teorann an réada i bpicteilíní. Tá an luach idir 0 agus 320.

Samplaí

// 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);
}

.bunúsY#

.originY tugann sé comhordanáid-y chúinne uachtarach na láimhe clé de bhosca teorann an réada braite ar ais.

Rochtain

SensorName.objects[index].originY

Luachanna Fillte

Tugann sé int16_t ar ais a léiríonn comhordanáid-y bhunphointe bosca teorann an réada i bpicteilíní. Tá an luach idir 0 agus 240.

Samplaí

// 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#

Tugann .id an t-aitheantas AprilTag nó an t-aitheantas aicmithe AI ​​a braitheadh ​​ar ais.

Rochtain

SensorName.objects[index].id

Luachanna Fillte

Tugann sé int32_t a léiríonn aitheantóir an réada braite:

  • I gcás Aicmithe AI, comhfhreagraíonn sé seo don ID atá sainmhínithe ag an samhail AI roghnaithe.

  • I gcás aitheantóirí AprilTag, seasann sé seo don uimhir aitheantais AprilTag a braitheadh ​​(0–36).

Samplaí

// 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);
}

.scór#

.score tugann sé scór muiníne an Aicmithe AI ​​a braitheadh ​​ar ais.

Rochtain

SensorName.objects[index].score

Luachanna Fillte

Tugann sé int16_t ar ais a léiríonn scór muiníne an Aicmithe AI ​​braite idir 1 agus 100.

Ciallaíonn scór níos ísle go bhfuil an braiteoir níos lú muiníne faoin réad a braitheadh, agus ciallaíonn scór níos airde go bhfuil an braiteoir níos muiníní.

Samplaí

// 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);
}