tiomáint chliste#
Réamhrá#
Rialaíonn an rang smartdrive conas a thiomáineann agus a chasann róbat ag baint úsáide as mótair, rothaí, agus braiteoir. Is féidir le smartdrive Braiteoir Támha, Braiteoir Gíro, nó Braiteoir GPS a úsáid chun treo agus rothlú a rianú.
Úsáideann tiomáint chliste smartdrive an braiteoir chun cabhrú leis an róbat bogadh agus casadh go beacht. Ag tús gach tionscadail, déanann an traein tiomána an braiteoir a chalabrú go huathoibríoch. Coinnigh an róbat socair ar feadh thart ar 2 shoicind le linn an chalabrúcháin, ionas gur féidir leis an róbat bogadh agus casadh i gceart.
Tá an rang smartdrive bunaithe ar an rang drivetrain. Is féidir leis na feidhmeanna tiomána agus casadh céanna a úsáid agus atá ag drivetrain, agus cuireann sé feidhmeanna bunaithe ar braiteoirí leis freisin cosúil le turnToHeading agus turnToRotation.
Tógálaithe Ranga#
1 — Cruthaíonn sé tiomáint chliste ag baint úsáide as réada grúpa_mótair
motor_groupatá ann cheana féin don taobh clé (&l) agus deas (&r), mar aon le Braiteoir Támha, Braiteoir Gíreascópach, nó Braiteoir GPS.smartdrive( motor_group &l, motor_group &r, inertial &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 — Cruthaíonn sé tiomáint chliste ag baint úsáide as réada mótair
motoratá ann cheana féin don taobh clé (&l) agus deas (&r), mar aon le Braiteoir Támha, Braiteoir Gíreascópach, nó Braiteoir GPS.smartdrive( motor &l, motor &r, inertial &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Scriostóir Ranga#
Scriosann sé an réad smartdrive agus scaoileann sé acmhainní gaolmhara.
~smartdrive();
Paraiméadair#
Is féidir leis an bparaiméadar braiteora a bheith ina réad inertial, gyro, nó gps.
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
Tagairtí do chásanna |
|
|
Tagairt d’eispéireas |
|
|
Imlíne rothaí an tiomána. Is é |
|
|
An fad idir na rotha clé agus deas. Is é |
|
|
An fad idir na rothaí tosaigh agus cúil. Is é |
|
|
An t-aonad do |
|
|
An cóimheas giaranna a úsáidtear chun achair tiomána a choigeartú má úsáidtear giaranna. Is é |
Sampla#
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the inertial instance
inertial myInertial = inertial(PORT3);
// Create the smartdrive instance
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor object
rightMotor, // right motor object
myInertial, // inertial object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Feidhmeanna na mBall#
Áirítear leis an rang smartdrive na feidhmeanna ball seo a leanas:
Gníomhartha — Cas an róbat trí cheanntóireacht nó rothlú.
turnToHeading— Casann sé an róbat chun aghaidh a thabhairt ar threo ar leith ó -359 go 359 céim. Casfaidh an róbat an treo is giorra chun an treo sprice a bhaint amach.turnToRotation— Casann sé an róbat go rothlú ar leith.calibrateDrivetrain— Calabraíonn sé Braiteoir Támha, Braiteoir Gíro, nó Braiteoir GPS cumraithe an tiománaí.
Socruithe — Coigeartaigh luachanna ceannteidil agus rothlaithe.
setHeading— Athraíonn sé seo ceannteideal reatha an róbait go ceannteideal nua.setRotation— Athraíonn sé rothlú reatha an róbait go rothlú nua.
Luachanna — Seiceáil an ceannteideal agus an rothlú.
heading— Tugann sé seo treo reatha an róbait ar ais ó 0 go 359 céim.rotation— Tugann sé seo rothlú reatha an róbait ar ais.
Is féidir le tiomántán cliste smartdrive na feidhmeanna comhalta oidhreachta ó drivetrain a úsáid freisin, amhail drive, driveFor, turn, turnFor, stop, isDone, agus isMoving.
Sula nglaoitear ar aon fheidhmeanna smartdrive ball, ní mór sampla smartdrive a chruthú, mar a thaispeántar thíos:
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the inertial instance
inertial myInertial = inertial(PORT3);
// Create the smartdrive instance
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor object
rightMotor, // right motor object
myInertial, // inertial object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
turnToHeading#
Is éard atá i dtreo an róbait ná an treo atá os comhair an róbait, a thomhaistear i gcéimeanna. turnToHeading casann an róbat chun aghaidh a thabhairt ar threo ar leith ó -359 go 359 céim. Casfaidh an róbat an treo is giorra chun an treo sprice a bhaint amach.
Is é 0 céim treo tosaigh an róbait.
Fanfaidh an tionscadal go dtí go mbeidh an róbat críochnaithe ag casadh sula rithfidh an chéad líne eile de chód.
Available Functions1 — Casann sé an traein tiomána chuig an treo sonraithe ag baint úsáide as an luas casadh cumraithe faoi láthair.
bool turnToHeading( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — Casann sé an traein tiomána chuig an treo sonraithe ag an luas sonraithe.
bool turnToHeading( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An treo ar cheart don róbat aghaidh a thabhairt air, i gcéimeanna. Is féidir é seo a bheith ó -359 go 359 nuair a úsáidtear |
|
|
An t-aonad rothlaithe: |
|
|
An luas le casadh leis ó 0% go 100% nuair a úsáidtear |
|
|
An t-aonad luais: |
|
|
|
Tugann sé seo ar ais an sroich an róbat an treo sprice, mar luach Booleanach.
true— Shroich an róbat an treo sprice.false— Níor chríochnaigh an róbat an casadh, nó tugadh an fheidhm ar ais sular críochnaíodh an casadh mar gur socraíodhwaitForCompletiongofalse.
Má chuirtear feidhm ghluaiseachta eile den traein tiomána i bhfeidhm (amhail
turnnódrive) agusturnToHeadingar siúl, cuirfear isteach ar an ngluaiseacht reatha.Ós rud é go bhfuil
turnToHeadingbunaithe ar sprioc (úsáideann sé paraiméadarangle), oibríonn feidhmeanna ar nósisDoneagusisMovingleturnToHeading.
// Face the new 0 degrees
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
turnToRotation#
turnToRotation Casann an róbat go rothlú ar leith.
Is é rothlú an méid atá casta ag an róbat, arna thomhas i gcéimeanna nó i réabhlóidí. Ag tús tionscadail, socraítear an luach rothlaithe go 0 céim. Is féidir rothlú a shocrú freisin ag baint úsáide as an bhfeidhm setRotation.
Is luachanna absalóideacha iad luachanna rothlaithe. Ciallaíonn sé seo go mbraitheann treo an chasadh ar rothlú reatha an róbait. Méadaíonn casadh ar dheis an rothlú, agus laghdaíonn casadh ar chlé an rothlú.
Mar shampla, má thosaíonn an róbat ag 0 céim agus má chasann tú go rothlú 720 céim, casfaidh sé ar dheis faoi dhó. Má chasann tú ansin go rothlú 360 céim, casfaidh sé ar chlé uair amháin, mar go bhfuil 360 níos lú ná 720.
Fanfaidh an tionscadal go dtí go mbeidh an róbat críochnaithe ag casadh sula rithfidh an chéad líne eile de chód.
Available Functions1 — Casann sé an traein tiomána chuig an rothlú sonraithe ag baint úsáide as an luas casadh cumraithe faoi láthair.
bool turnToRotation( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — Casann sé an traein tiomána chuig an rothlú sonraithe ag an luas sonraithe.
bool turnToRotation( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An luach rothlaithe a chasfaidh an róbat chuige. |
|
|
An t-aonad rothlaithe: |
|
|
An luas le casadh leis ó 0% go 100% nuair a úsáidtear |
|
|
An t-aonad luais: |
|
|
|
Tugann sé seo ar ais an sroich an róbat an rothlú sprice, mar luach Booleanach.
true— Shroich an róbat an rothlú sprice.false— Níor chríochnaigh an róbat an casadh, nó tugadh an fheidhm ar ais sular críochnaíodh an casadh mar gur socraíodhwaitForCompletiongofalse.
Má chuirtear feidhm ghluaiseachta eile den traein tiomána i bhfeidhm (amhail
turnnódrive) agusturnToRotationar siúl, cuirfear isteach ar an ngluaiseacht reatha.Ós rud é go bhfuil
turnToRotationbunaithe ar sprioc (úsáideann sé paraiméadarturnToRotation), oibríonn feidhmeanna ar nósisDoneagusisMovingleangle.
// Spin counterclockwise for 2 turns, then face forward
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
calibrateDrivetrain#
calibrateDrivetrain déanann sé an Braiteoir Támha, an Braiteoir Gíro, nó an Braiteoir GPS atá cumraithe leis an smartdrive a chalabrú.
Cuidíonn calabrú leis an braiteoir gluaiseacht a thomhas i gceart. Coinnigh an róbat socair ar feadh thart ar 2 shoicind le linn calabrúcháin. Má ghluaiseann an róbat le linn calabrúcháin, b’fhéidir nach dtomhaisfidh an braiteoir gluaiseacht i gceart.
Fanfaidh an tionscadal go dtí go mbeidh an calabrú déanta sula rithfidh an chéad líne eile de chód.
calibrateDrivetrain go huathoibríoch ag VEXcode nuair a chumraítear tiomáint le Braiteoir Támha, Braiteoir GPS, nó Braiteoir Gíro. Cuirtear ar fáil é mar chuid den fhoinse tionscadail agus níl sé mar chuid den VEX V5 C++ API.
void calibrateDrivetrain();
Ní ghlacann an fheidhm seo le haon pharaiméadair.
Return ValuesNí thugann an fheidhm seo luach ar ais.
NotesDéanann an róbat calabrú go huathoibríoch ag tús gach tionscadail.
Coinnigh an róbat socair ar feadh thart ar 2 shoicind le linn an chalabrúcháin.
Seo a leanas an cur i bhfeidhm uathoibríoch de calibrateDrivetrain a chruthaigh VEXcode:
bool vexcode_initial_drivetrain_calibration_completed = false;
void calibrateDrivetrain() {
wait(200, msec);
Brain.Screen.print("Calibrating");
Brain.Screen.newLine();
Brain.Screen.print("Inertial");
DrivetrainInertial.calibrate();
while (DrivetrainInertial.isCalibrating()) {
wait(25, msec);
}
vexcode_initial_drivetrain_calibration_completed = true;
// Clears the screen and returns the cursor to row 1, column 1.
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
}
setHeading#
Is éard atá i gceannteideal ná an treo ina bhfuil an róbat ag tabhairt aghaidh, arna thomhas i gcéimeanna. Athraíonn setHeading ceannteideal reatha an róbait go luach ceannteidil nua.
Mar shampla, má tá an róbat casadh chun aghaidh a thabhairt ar dheis, má shocraítear an treo go 0 céim, déantar an suíomh sin atá ag tabhairt aghaidh ar dheis a athrú go dtí an 0 céim nua. Ansin is féidir leis an róbat casadh chuig suíomhanna eile bunaithe ar an treo nua sin.
Available Functionsvoid setHeading(
double value,
rotationUnits units);
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An luach treorach le socrú don róbat. Is féidir é seo a bheith ó -359 go 359 nuair a úsáidtear |
|
|
An t-aonad ceannteidil: |
Ní thugann an fheidhm seo luach ar ais.
Examples// Face the new 0 degrees
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
setRotation#
Is é rothlú an méid atá casta ag an róbat, arna thomhas i gcéimeanna nó i réabhlóidí. Ag tús tionscadail, socraítear an luach rothlaithe go 0 céim. Athraíonn setRotation rothlú reatha an róbait go luach nua.
Mar shampla, má tá dhá chasadh iomlána déanta ag an róbat ar dheis, beidh a luach rothlaithe 720 céim. Má shocraítear an rothlú go 0 céim, athshocrófar an rothlú sin ó 720 go 0 céim. Ansin is féidir leis an róbat casadh go rothluithe bunaithe ar an luach nua sin.
Available Functionsvoid setRotation(
double value,
rotationUnits units);
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
An luach rothlaithe le socrú don róbat. |
|
|
An t-aonad ceannteidil: |
Ní thugann an fheidhm seo luach ar ais.
Examples// Spin counterclockwise for 2 turns, then face forward
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
heading#
Is é treo an róbait ná treo atá os comhair an róbait, arna thomhas i gcéimeanna. Tugann heading treo reatha an róbait ar ais ó 0 go 359 céim.
Is é 0 céim treo tosaigh an róbait.
Available Functionsdouble heading( rotationUnits units = rotationUnits::deg );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
Roghnach. An t-aonad le tabhairt ar ais sa treo: |
Tugann sé seo treo reatha an róbait ar ais mar double san aonad roghnaithe.
// Show heading before and after turning
Brain.Screen.print("Before: %f", myDrivetrain.heading(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.heading(degrees));
myDrivetrain.stop();
rotation#
Is é rothlú an méid atá casta ag an róbat, arna thomhas i gcéimeanna nó i réabhlóidí. Ag tús tionscadail, socraítear an luach rothlaithe go 0 céim. Tugann rotation rothlú reatha an róbait ar ais.
Méadaíonn casadh ar dheis an rothlú, agus laghdaíonn casadh ar chlé an rothlú. Mar shampla, má dhéantar dhá chasadh iomlána ar dheis, beidh rothlú 720 céim ann.
Available Functionsdouble rotation( rotationUnits units = rotationUnits::deg );
Paraiméadar |
Cineál |
Cur síos |
|---|---|---|
|
|
Roghnach. An t-aonad le rothlú a thabhairt ar ais ann: |
Tugann sé rothlú reatha an róbait ar ais mar double san aonad roghnaithe.
// Show rotation before and after turning
Brain.Screen.print("Before: %f", myDrivetrain.rotation(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.rotation(degrees));
myDrivetrain.stop();