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 nó Braiteoir Gíro 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 motor_group atá ann cheana féin don taobh clé (&l) agus deas (&r), mar aon le Braiteoir Támha nó Braiteoir Gíro.

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 motor atá ann cheana féin don taobh clé (&l) agus deas (&r), mar aon le Braiteoir Támha nó Braiteoir Gíreascópach.

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 nó gyro.

Paraiméadar

Cineál

Cur síos

&l / &r

motor_group / motor

Tagairtí do chásanna motor nó motor atá ann cheana féin. Ní mór don dá pharaiméadar a bheith den chineál céanna: dhá chás motor_group nó dhá chás motor_group Tagraíonn an paraiméadar &l don mhótar nó don ghrúpa mótair ar chlé, agus tagraíonn &r don mhótar nó don ghrúpa mótair ar dheis.

&g

gyro&

Tagairt d’eiseamláir gyro nó inertial atá ann cheana féin.

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 wheelTravel, trackWidth, agus wheelBase: mm (milliméadair, 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 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ú.

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 nglaotar 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 Functions

1 — 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 );

2 — 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 );

Parameters

Paraiméadar

Cineál

Cur síos

angle

double

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 deg nó degrees.

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 600 rpm nuair a úsáidtear rpm, nó ó 0 go 3600 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á chuirtear feidhm ghluaiseachta eile den traein tiomána i bhfeidhm (amhail turn nó drive) agus turnToHeading ar siúl, cuirfear isteach ar an ngluaiseacht reatha.

  • Ós rud é go bhfuil turnToHeading bunaithe ar sprioc (úsáideann sé paraiméadar angle ), oibríonn feidhmeanna ar nós isDone agus isMoving le turnToHeading.

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

2 — 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 );

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 600 rpm nuair a úsáidtear rpm, nó ó 0 go 3600 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á chuirtear feidhm ghluaiseachta eile den traein tiomána i bhfeidhm (amhail turn nó drive) agus turnToRotation ar siúl, cuirfear isteach ar an ngluaiseacht reatha.

  • Ós rud é go bhfuil turnToRotation bunaithe ar sprioc (úsáideann sé paraiméadar turnToRotation ), oibríonn feidhmeanna ar nós isDone agus isMoving le angle.

Examples
// 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 nó an Braiteoir Gyro 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 nó Braiteoir Gíro. Cuirtear ar fáil é mar chuid den fhoinse tionscadail agus níl sé mar chuid den VEX EXP 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.

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

Function Implementation

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 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 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é 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();