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 Gíro ceangailte nó Braiteoir Táimhe ionsuite na hinchinne a úsáid.

Ú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.

Úsáideann an leathanach seo myDrivetrain mar shampla ainm an tiomána chliste. Cuir d’ainm cumraithe féin ina áit de réir mar is gá.

Tógálaithe Ranga#

1 — Cruthaíonn sé tiomáint chliste ag baint úsáide as réada grúpa_mótair motor_group atá ann cheana féin don taobh clé agus deas, mar aon le Braiteoir Gíro nó Braiteoir Táimhe.

smartdrive(
    motor_group     &l,
    motor_group     &r,
    gyro            &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 motor atá ann cheana féin don taobh clé agus deas, mar aon le Braiteoir Giróiseach nó Braiteoir Táimhe.

smartdrive(
    motor           &l,
    motor           &r,
    gyro            &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 gyro nó inertial.

Paraiméadar

Cineál

Cur síos

&l / &r

motor_group / motor

Na mótair nó na grúpaí mótair ar chlé agus ar dheis. Ní mór don dá pharaiméadar an cineál céanna a úsáid: dhá réad motor_group nó dhá réad motor.

&g

gyro / inertial

An Braiteoir Gíro nó an Braiteoir Támha a úsáideann an tiomántán cliste.

wheelTravel

double

Imlíne rothaí an tiomána. Is é 320 an réamhshocrú.

trackWidth

double

An fad idir na rotha clé agus deas. Is é 320 an réamhshocrú.

wheelBase

double

An fad idir na rothaí tosaigh agus cúil. Is é 130 an réamhshocrú.

unit

distanceUnits

An t-aonad do Thaisteal wheelTravel, Leithead trackWidth, agus Bonn wheelBase: mm (réamhshocraithe) nó inches.

externalGearRatio

double

An cóimheas giaranna a úsáidtear chun achair tiomána a choigeartú má úsáidtear giaranna. Is é 1.0 an réamhshocrú.

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 objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the Inertial Sensor object.
inertial myInertial = inertial(PORT3);

// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor
    rightMotor, // right motor
    myInertial, // Inertial Sensor
    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é an braiteoir atá cumraithe leis an tiomáint chliste.

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 ceannteideal 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 ndéantar aon fheidhmeanna smartdrive a ghlaoch, ní mór réad smartdrive a chruthú.

/* 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 objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);

// Create the Inertial Sensor object.
inertial myInertial = inertial(PORT3);

// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
    leftMotor,  // left motor
    rightMotor, // right motor
    myInertial, // Inertial Sensor
    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 Functions

1 — Casann sé an róbat chuig an treo sonraithe ag baint úsáide as an luas casaidh reatha.

bool turnToHeading(
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

2 — Casann sé an róbat chuig an treo sonraithe ag an luas sonraithe.

bool turnToHeading(
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

Paraiméadar

Cineál

Cur síos

angle

double

An treo ba chóir don róbat aghaidh a thabhairt air, i gcéimeanna. Is féidir é seo a bheith ó -359 go 359 nuair a úsáidtear deg nó degrees.

units

rotationUnits

An t-aonad ceannteidil: deg (céim), rev (réabhlóidí), nó raw (aonaid amha). Is ionann réabhlóid amháin agus 360 céim.

velocity

double

An luas le casadh leis ó 0% go 100% nuair a úsáidtear velocityUnits::pct, ó 0 go 120 rpm nuair a úsáidtear rpm, nó ó 0 go 720 céim in aghaidh an tsoicind nuair a úsáidtear dpsMura soláthraítear aon luas, casann an róbat ag an luas casadh reatha.

units_v

velocityUnits

An t-aonad luais: velocityUnits::pct (céatadán), rpm (rothlaithe in aghaidh an nóiméid), nó dps (céimeanna in aghaidh an tsoicind).

waitForCompletion

bool

true (réamhshocraithe) fanann an tionscadal go dtí go mbeidh an róbat críochnaithe ag casadh sula ritheann an chéad líne eile cóid. false ritheann an chéad líne eile cóid láithreach.

Return Values

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íodh waitForCompletion go false.

Notes
  • Má ritheann tú feidhm ghluaiseachta tiomána eile agus turnToHeading ag rith, cuirfidh sé sin isteach ar an ngluaiseacht reatha.

  • Úsáideann turnToHeading ceannteideal sprice, mar sin is féidir isDone agus isMoving a úsáid leis.

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

1 — Casann sé an róbat go dtí an rothlú sonraithe ag baint úsáide as an luas casaidh reatha.

bool turnToRotation(
    double        angle,
    rotationUnits units,
    bool          waitForCompletion = true );

2 — Casann sé an róbat chuig an rothlú sonraithe ag an luas sonraithe.

bool turnToRotation(
    double        angle,
    rotationUnits units,
    double        velocity,
    velocityUnits units_v,
    bool          waitForCompletion = true );

Parameters

Paraiméadar

Cineál

Cur síos

angle

double

An luach rothlaithe a chasfaidh an róbat chuige.

units

rotationUnits

An t-aonad rothlaithe: deg (céim), rev (réabhlóidí), nó raw (aonaid amha). Is ionann réabhlóid amháin agus 360 céim.

velocity

double

An luas le casadh leis ó 0% go 100% nuair a úsáidtear velocityUnits::pct, ó 0 go 120 rpm nuair a úsáidtear rpm, nó ó 0 go 720 céim in aghaidh an tsoicind nuair a úsáidtear dpsMura soláthraítear aon luas, casann an róbat ag an luas casadh reatha.

units_v

velocityUnits

An t-aonad luais: velocityUnits::pct (céatadán), rpm (rothlaithe in aghaidh an nóiméid), nó dps (céimeanna in aghaidh an tsoicind).

waitForCompletion

bool

true (réamhshocraithe) fanann an tionscadal go dtí go mbeidh an róbat críochnaithe ag casadh sula ritheann an chéad líne eile cóid. false ritheann an chéad líne eile cóid láithreach.

Return Values

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íodh waitForCompletion go false.

Notes
  • Má ritheann tú feidhm ghluaiseachta tiomána eile agus turnToRotation ag rith, cuirfidh sé sin isteach ar an ngluaiseacht reatha.

  • Úsáideann turnToRotation rothlú sprice, mar sin is féidir isDone agus isMoving a úsáid leis.

Examples
// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);

calibrateDrivetrain#

calibrateDrivetrain calabraíonn sé an Braiteoir Gyro ceangailte nó an Braiteoir Inertial ionsuite san Inchinn atá cumraithe leis an smartdrive.

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.

Nóta: Gintear calibrateDrivetrain go huathoibríoch ag VEXcode nuair a chumraítear tiomáint le Braiteoir Gyro nó Braiteoir Inertial. Cuirtear ar fáil é mar chuid den fhoinse tionscadail agus níl sé mar chuid den VEX IQ C++ API.

Available Functions
void calibrateDrivetrain();

Parameters

Ní ghlacann an fheidhm seo le haon pharaiméadair.

Return Values

Ní thugann an fheidhm seo luach ar ais.

Notes
  • Déanann an róbat calabrú go huathoibríoch ag tús gach tionscadail nuair a chumraítear tiomántán cliste i VEXcode.

  • Coinnigh an róbat socair ar feadh thart ar 2 shoicind le linn an chalabrúcháin.

Function Implementation

Seo a leanas sampla den chur 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 Functions
void setHeading(
  double value,
  rotationUnits units);

Parameters

Paraiméadar

Cineál

Cur síos

value

double

An luach treorach le socrú don róbat. Is féidir é seo a bheith ó -359 go 359 nuair a úsáidtear deg nó degrees.

units

rotationUnits

An t-aonad ceannteidil: deg (céim), rev (réabhlóidí), nó raw (aonaid amha). Is ionann réabhlóid amháin agus 360 céim.

Return Values

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 Functions
void setRotation(
  double value,
  rotationUnits units);

Parameters

Paraiméadar

Cineál

Cur síos

value

double

An luach rothlaithe le socrú don róbat.

units

rotationUnits

An t-aonad rothlaithe: deg (céim), rev (réabhlóidí), nó raw (aonaid amha). Is ionann réabhlóid amháin agus 360 céim.

Return Values

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 Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

Paraiméadar

Cineál

Cur síos

units

rotationUnits

Roghnach. An t-aonad le tabhairt ar ais sa treo: degrees, deg (réamhshocraithe), rev, nó rawIs ionann réabhlóid amháin agus 360 céim.

Return Values

Tugann sé seo treo reatha an róbait ar ais mar double san aonad roghnaithe.

Examples
// 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 Functions
double rotation( rotationUnits units = rotationUnits::deg );

Parameters

Paraiméadar

Cineál

Cur síos

units

rotationUnits

Roghnach. An t-aonad le rothlú a thabhairt ar ais ann: degrees, deg (réamhshocraithe), rev, nó rawIs ionann réabhlóid amháin agus 360 céim.

Return Values

Tugann sé rothlú reatha an róbait ar ais mar double san aonad roghnaithe.

Examples
// 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();