Braiteoir Fís#

Réamhrá#

Úsáidtear an rang fís vision chun sonraí a rialú agus rochtain a fháil orthu ón Braiteoir Fís IQ (2ú glúin). Braitheann agus rianaíonn an braiteoir seo Sínithe Dath laistigh dá réimse radhairc, rud a ligeann do do róbat spriocanna a aithint agus freagairt d’fhaisnéis amhairc i bhfíor-am.

Is féidir leis an Braiteoir Fís ilréada sínithe a bhrath ag an am céanna agus soláthraíonn sé faisnéis amhail suíomh, leithead, airde agus comhordanáidí ionaid an réada.

Tógálaithe Ranga#

vision(
  int32_t  index,
  uint8_t  bright,
  Args&... sigs );

Scriostóir Ranga#

Scriosann sé an réad vision agus scaoileann sé acmhainní gaolmhara.

~vision();

Paraiméadair#

Paraiméadar

Cineál

Cur síos

index

int32_t

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

bright

uint8_t

Leibhéal gile an Braiteora Fís.

sigs

vision::signature or vision::code objects

Réad amháin nó níos mó vision::signature nó vision::code le clárú leis an braiteoir.

Samplaí#

// Create Color Signatures
vision::signature Vision1__REDBOX = vision::signature(
    1,      // signature id
    10121,  // uMin
    10757,  // uMax
    10439,  // uMean
    -1657,  // vMin
    -1223,  // vMax
    -1440,  // vMean
    2.5,    // range
    1 );    // type

vision::signature Vision1__BLUEBOX = vision::signature(
    2,      // signature id
    -4479,  // uMin
    -3277,  // uMax
    -3878,  // uMean
    5869,   // vMin
    7509,   // vMax
    6689,   // vMean
    2.5,    // range
    1 );    // type

// Create a Color Code from two signatures
vision::code Vision1__BOXCODE = vision::code(
    Vision1__REDBOX,  // first signature
    Vision1__BLUEBOX  // second signature
);

// Create the Vision Sensor instance
vision Vision1 = vision(
    PORT1,                  // Smart Port
    50,                     // brightness
    Vision1__REDBOX,        // signature
    Vision1__BOXCODE );     // Color Code

Feidhmeanna na mBall#

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

  • takeSnapshot — Gabhann sé sonraí le haghaidh Síniú Dath nó Cód Dath ar leith.

  • installed — Cibé an bhfuil an Braiteoir Fís ceangailte leis an Inchinn IQ (2ú glúin).

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 ball vision , ní mór sampla vision a chruthú, mar a thaispeántar thíos:

/* This constructor is required when using VS Code.
Vision Sensor configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */


// Create Color Signatures
vision::signature Vision1__REDBOX = vision::signature(
    1,      // signature id
    10121,  // uMin
    10757,  // uMax
    10439,  // uMean
    -1657,  // vMin
    -1223,  // vMax
    -1440,  // vMean
    2.5,    // range
    1 );    // type

vision::signature Vision1__BLUEBOX = vision::signature(
    2,      // signature id
    -4479,  // uMin
    -3277,  // uMax
    -3878,  // uMean
    5869,   // vMin
    7509,   // vMax
    6689,   // vMean
    2.5,    // range
    1 );    // type

// Create a Color Code from two signatures
vision::code Vision1__BOXCODE = vision::code(
    Vision1__REDBOX,  // first signature
    Vision1__BLUEBOX  // second signature
);

// Create the Vision Sensor instance
vision Vision1 = vision(
    PORT1,                  // Smart Port
    50,                     // brightness
    Vision1__REDBOX,        // signature
    Vision1__BOXCODE );     // Color Code

takeSnapshot#

Gabhann sé íomhá ón Braiteoir Fís, próiseálann sé í bunaithe ar an síniú, agus nuashonraíonn sé an t-eagar objects Is féidir leis an modh seo líon na réad a ghabhtar sa phictiúr a theorannú freisin.

Stórálann an eagar objects réada atá ordaithe ón gceann is mó go dtí an ceann is lú de réir leithead, ag tosú ag innéacs 0. Is féidir rochtain a fháil ar airíonna gach réada trína innéacs a úsáid. Mura mbraitear aon réada comhoiriúnacha, beidh objectCount ionann agus 0 agus beidh objects[i].exists bréagach.

Available Functions

1 — Tógann sé pictiúr den íomhá agus déanann sé cuardach ar réada a mheaitseálann an ID sínithe sonraithe.

int32_t takeSnapshot( uint32_t id );

2 — Tógann sé pictiúr den íomhá agus déanann sé cuardach ar réada a mheaitseálann an réad vision::code sonraithe.

int32_t takeSnapshot( code &cc );

3 — Tógann sé pictiúr den íomhá agus déanann sé cuardach ar réada a mheaitseálann an réad vision::signature sonraithe.

int32_t takeSnapshot( signature &sig );

4 — Tógann sé pictiúr den íomhá agus ní stórálann sé ach an líon is mó réad a shonraítear a mheaitseálann an ID sínithe.

int32_t takeSnapshot( uint32_t id, uint32_t count );

5 — Tógann sé pictiúr den íomhá agus stórálann sé an líon is mó réad a shonraítear a mheaitseálann an réad vision::code sonraithe amháin.

int32_t takeSnapshot( code &cc, uint32_t count );

6 — Tógann sé pictiúr den íomhá agus stórálann sé an líon is mó réad a shonraítear a mheaitseálann an réad vision::signature sonraithe amháin.

int32_t takeSnapshot( signature &sig, uint32_t count );

Parameters

Paraiméadar

Cineál

Cur síos

id

uint32_t

An uimhir aitheantais sínithe le cuardach.

cc

code &

Tagairt do réad vision::code le cuardach.

sig

signature &

Tagairt do réad vision::signature le cuardach.

count

uint32_t

An líon uasta réad le braith.

Return Values

Tugann sé int32_t a léiríonn líon na réad meaitseála a braitheadh.

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

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

Samplaí

while (true) {
  // Display if a blue object is detected
  Vision1.takeSnapshot(Vision1__BLUEBOX);

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);

  if (Vision1.objects[0].exists) {
    Brain.Screen.print("Blue detected");
  } 
  else {
    Brain.Screen.print("No blue");
  }

  wait(0.5, seconds);
}

// Display when a blue object is detected
while (true) {
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.clearLine(1);

  Vision1.takeSnapshot(Vision1__BLUEBOX);

  if (Vision1.objects[0].exists) {
    Brain.Screen.print("Color detected!");
  }

  wait(100, msec); 
}

// Display when BOXCODE is detected
while (true) {
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.clearLine(1);

  Vision1.takeSnapshot(Vision1__BOXCODE);

  if (Vision1.objects[0].exists) {
    Brain.Screen.print("Code detected!");
  }
  wait( 100, msec);
}

installed#

Tugann sé seo ar ais an bhfuil an Braiteoir Fís ceangailte leis an Inchinn IQ (2ú glúin).

Available Functions
bool installed();

Parameters

Ní ghlacann an fheidhm seo aon pharaiméadair.

Return Values

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

  • true — The Vision Sensor is connected.
  • false — The Vision Sensor is not connected.

Airíonna#

Nuashonraítear torthaí braite an Braiteora Fís nuair a ghlaotar ar takeSnapshot. Athnuachantar an eagar objects le gach pictiúr, ina bhfuil na réada braite don Shíniú Dath nó don Chód Dath iarrtha.

Rochtainítear sonraí Braiteora Fís trí airíonna réad atá stóráilte i Vision1.objects[index], áit a dtosaíonn index ag 0.

Is é 316 faoi 212 picteilín taifeach íomhá an Braiteora Fís. Tuairiscítear airíonna 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:

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

  • objectCount — Tugann sé seo líon na réad bailí atá stóráilte i objects ar ais.

  • objects — Eagar de réad 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 an Chóid Datha braite i gcéimeanna (nuair is infheidhme).

largestObject#

Aisghabhann sé 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
VisionSensor.largestObject

Components

Comhpháirt

Cur síos

VisionSensor

Ainm d’eispéireas Braiteora Fís.

Samplaí

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Display the largest detected object's width
  while (true) {
    Vision1.takeSnapshot(Vision1__BLUEBOX);

    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);

    if (Vision1.objects[0].exists) {
      Brain.Screen.print("%d", Vision1.largestObject.width);
    } 
    wait(0.5, seconds);
  }
}

objectCount#

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

Syntax
VisionSensor.objectCount

Components

Comhpháirt

Cur síos

VisionSensor

Ainm d’eispéireas Braiteora Fís.

Samplaí

int main() {
  // Initializing Robot Configuration. DO NOT REMOVE!
  vexcodeInit();

  // Display how many blue objects are detected
  while (true) {
    Vision1.takeSnapshot(Vision1__BLUEBOX);

    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);

    Brain.Screen.print("Object Count: %d", Vision1.objectCount);

    wait(0.5, seconds);
  }
}

objects#

objects ina bhfuil na réada braite ón nglao is déanaí ar takeSnapshot.

Seasann gach eilimint san eagar do réad braite agus soláthraíonn sé rochtain ar a airíonna, amhail width, height, centerX, agus tuilleadh.

Déantar rudaí a ordú ón gceann is mó go dtí an ceann is lú (de réir leithead), ag tosú ag innéacs 0.

Syntax
VisionSensor.objects[index].property

Components

Comhpháirt

Cur síos

VisionSensor

Ainm d’eispéireas Braiteora Fís.

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 Booleach 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í

// Display when a blue object is detected
while (true) {
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.clearLine(1);

  Vision1.takeSnapshot(Vision1__BLUEBOX);

  if (Vision1.objects[0].exists) {
    Brain.Screen.print("Color detected!");
  }

  wait(100, msec); 
}

.leithead#

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

Rochtain

SensorName.objects[index].width

Luachanna Fillte

Tugann sé seo int ar ais a léiríonn leithead an réada braite i bpicteilíní. Tá an luach idir 1 agus 316.

Samplaí

// Approach an object until it's at least 100 pixels wide
while (true) {
  Vision1.takeSnapshot(Vision1__BLUEBOX);
  if (Vision1.objects[0].exists && Vision1.objects[0].width < 100) {
    Drivetrain.driveFor(forward, 10, mm);
  } 
  else {
    Drivetrain.stop();
  }
  wait(0.5, seconds);
}

airde#

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

Rochtain

SensorName.objects[index].height

Luachanna Fillte

Tugann sé seo int ar ais a léiríonn airde an réada braite i bpicteilíní. Tá an luach idir 1 agus 212.

Samplaí

// Approach an object until it's at least 100 pixels tall
while (true) {
  Vision1.takeSnapshot(Vision1__BLUEBOX);

  if (Vision1.objects[0].exists && Vision1.objects[0].height < 100) {
    Drivetrain.driveFor(forward, 10, mm);
  } 
  else {
    Drivetrain.stop();
  }
  wait(0.5, seconds);  // Avoid over-processing
}

.centerX#

.centerX tugann sé comhordanáid-x lár an réada braite ar ais.

Rochtain

SensorName.objects[index].centerX

Luachanna Fillte

Returns an int representing the x-coordinate of the object’s center in pixels. The value ranges from 0 to 316.

Samplaí

// Turn until an object is directly in front of the sensor
Drivetrain.setTurnVelocity(10, percent);
Drivetrain.turn(right);
while (true) {
  Vision1.takeSnapshot(Vision1__BLUEBOX);
  if (Vision1.objects[0].exists) {
    int centerX = Vision1.largestObject.centerX;
    if (140 < centerX && centerX < 180) {
      Drivetrain.stop();
    }
  }
  wait(0.5, seconds);
}

.centerY#

.centerY tugann sé comhordanáid-y lár an réada braite ar ais.

Rochtain

SensorName.objects[index].centerY

Luachanna Fillte

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

Samplaí

// Approach an object until it's at least 90 pixels tall
while (true) {
  Vision1.takeSnapshot(Vision1__BLUEBOX);

  if (Vision1.objects[0].exists) {
    if (Vision1.objects[0].centerY < 90) {
      Drivetrain.drive(forward);
    } 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é seo int ar ais a léiríonn comhordanáid x chúinne uachtarach na láimhe clé de bhosca teorann an réada i bpicteilíní. Tá an luach idir 0 agus 316.

Samplaí

// Display if an object is to the left or the right
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Vision1.takeSnapshot(Vision1__BLUEBOX);
  if (Vision1.objects[0].exists) {
    if (Vision1.objects[0].originX < 160) {
      Brain.Screen.print("To the left!");
    }
    else {
      Brain.Screen.print("To the right!");
    }
  }
  wait(0.5, seconds); 
}

.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é seo int ar ais a léiríonn comhordanáid y chúinne uachtarach na láimhe clé de bhosca teorann an réada i bpicteilíní. Tá an luach idir 0 agus 212.

Samplaí

// Display if an object is close or far
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Vision1.takeSnapshot(Vision1__BLUEBOX);
  if (Vision1.objects[0].exists) {
    if (Vision1.objects[0].originY < 80) {
      Brain.Screen.print("Far");
    } else {
      Brain.Screen.print("Close");
    }
  }
  wait(0.5, seconds);
}

.uillinn#

.angle tugann sé treoshuíomh an Chóid Datha a braitheadh ​​ar ais.

Rochtain

SensorName.objects[index].angle

Luachanna Fillte

Returns a double representing the orientation of the detected Color Code 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) {
  Vision1.takeSnapshot(Vision1__BOXCODE);
  if (Vision1.objects[0].exists) {
    double angle = Vision1.objects[0].angle;
    if (70 < angle && angle < 110) {
      Drivetrain.turnFor(right, 45, degrees);
    }
    else if (250 < angle && angle < 290) {
      Drivetrain.turnFor(left, 45, degrees);
    }
    else {
      Drivetrain.stop();
    }
  }
  wait(0.5, seconds);
}