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 |
|---|---|---|
|
|
An Port Cliste a bhfuil an Braiteoir Fís ceangailte leis, scríofa mar |
|
|
Leibhéal gile an Braiteora Fís. |
|
|
Réad amháin nó níos mó |
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.
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::codesonraithe.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::signaturesonraithe.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::codesonraithe amháin.int32_t takeSnapshot( code &cc, uint32_t count );
Parameters6 — 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::signaturesonraithe amháin.int32_t takeSnapshot( signature &sig, uint32_t count );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An uimhir aitheantais sínithe le cuardach. |
|
|
Tagairt do réad |
|
|
Tagairt do réad |
|
|
An líon uasta réad le braith. |
Tugann sé int32_t a léiríonn líon na réad meaitseála a braitheadh.
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 Functionsbool installed();
Ní ghlacann an fheidhm seo aon pharaiméadair.
Return ValuesTugann 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 iobjectsar ais.objects— Eagar de réad braite nuashonraithe agtakeSnapshot..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ú.
VisionSensor.largestObject
Comhpháirt |
Cur síos |
|---|---|
|
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.
VisionSensor.objectCount
Comhpháirt |
Cur síos |
|---|---|
|
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.
VisionSensor.objects[index].property
Comhpháirt |
Cur síos |
|---|---|
|
Ainm d’eispéireas Braiteora Fís. |
|
Innéacs an réada san eagar. Tosaíonn an t-innéacs ag |
|
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);
}