okosmeghajtó#

Bevezetés#

A smartdrive osztály motorok, kerekek és érzékelők segítségével vezérli, hogyan mozog és fordul egy robot. A smartdrive egy inerciális érzékelő vagy giroszkóp segítségével követheti nyomon az irányt és a forgást.

Az A smartdrive érzékelőt használ a robot pontos mozgásának és fordulásának segítésére. Minden projekt elején a hajtáslánc automatikusan kalibrálja az érzékelőt. A kalibrálás során tartsa a robotot mozdulatlanul körülbelül 2 másodpercig, hogy a robot megfelelően mozoghasson és fordulhasson.

A smartdrive osztály a drivetrain osztályon alapul. Ugyanazokat a vezetési és fordulási funkciókat tudja használni, mint a drivetrain, és szenzoralapú függvényeket is hozzáad, mint például turnToHeading és a turnToRotation.

Osztálykonstruktorok#

1 — Létrehoz egy intelligens meghajtót a bal (&l) és jobb (&r) oldalakhoz tartozó meglévő motor_group objektumok, valamint egy inerciális érzékelő vagy giroszkóp felhasználásával.

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 — Létrehoz egy intelligens meghajtót a bal (&l) és jobb (&r) oldalak meglévő motor objektumainak felhasználásával, valamint egy inerciális érzékelővel vagy giroszkóppal.

smartdrive(
    motor           &l,
    motor           &r,
    inertial        &g,
    double          wheelTravel = 320,
    double          trackWidth  = 320,
    double          wheelBase   = 130,
    distanceUnits   unit = mm,
    double          externalGearRatio = 1.0 );

Osztálydestruktor#

Megsemmisíti a smartdrive objektumot és felszabadítja a hozzá tartozó erőforrásokat.

~smartdrive();

Paraméterek#

Az érzékelő paramétere lehet egy inertial vagy gyro objektum.

Paraméter

Típus

Leírás

&l / &r

motor_group / motor

Hivatkozások meglévő motor vagy motor_group példányokra. Mindkét paraméternek azonos típusúnak kell lennie: vagy két motor_group példány, vagy két motor példány. A &l paraméter a bal oldali motorra vagy motorcsoportra, &r pedig a jobb oldali motorra vagy motorcsoportra utal.

&g

gyro&

Hivatkozás egy meglévő gyro vagy inertial példányra.

wheelTravel

double

A hajtáslánc kerekeinek kerülete. Az alapértelmezett érték 320.

trackWidth

double

A bal és jobb kerék közötti távolság. Az alapértelmezett érték 320.

wheelBase

double

Az első és hátsó kerekek közötti távolság. Az alapértelmezett érték 130.

unit

distanceUnits

A wheelTravel, trackWidthés wheelBasemértékegysége: mm (milliméter, alapértelmezett) vagy inches.

externalGearRatio

double

A sebességváltó áttétele, amely a meghajtási távolságok beállításához szolgál, ha sebességfokozatok vannak használatban. Az alapértelmezett érték 1.0.

Példa#

/* 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

Tagfüggvények#

A smartdrive osztály a következő tagfüggvényeket tartalmazza:

Műveletek — A robot forgatása irány vagy forgatás segítségével.

Beállítások – Irány és forgatás értékeinek módosítása.

  • setHeading — A robot aktuális irányát egy új irányra módosítja.

  • setRotation — A robot aktuális forgását egy új forgásra módosítja.

Értékek — Ellenőrizze az irányt és az elforgatást.

  • heading — Visszaadja a robot aktuális irányát 0 és 359 fok között.

  • rotation — Visszaadja a robot aktuális forgását.

Egy smartdrive használhatja a drivetrain örökölt tagfüggvényeit is, például drive, driveFor, turn, turnFor, stop, isDoneés isMoving.

Bármely smartdrive tagfüggvény meghívása előtt létre kell hozni egy smartdrive példányt, az alábbiak szerint:

/* 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#

A haladási irány az az irány, amerre a robot néz, fokban mérve. turnToHeading : Az 1-es beállítás a robotot egy adott, -359 és 359 fok közötti irányba fordítja. A robot a legrövidebb irányba fordul, hogy elérje a célirányt.

A robot kezdő iránya 0 fok.

A projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsort futtatná.

Available Functions

1 — A hajtásláncot a megadott irányba fordítja a jelenleg konfigurált fordulási sebesség használatával.

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

2 — A megadott sebességgel a megadott irányba fordítja a hajtásláncot.

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

Parameters

Paraméter

Típus

Leírás

angle

double

Az irány, amerre a robotnak néznie kell, fokban. Ez -359 és 359 között lehet deg vagy degrees használata esetén.

units

rotationUnits

Az elforgatás mértékegysége: deg (fok), rev (fordulat) vagy raw (nyers egység). Egy fordulat 360 foknak felel meg.

velocity

double

A fordulási sebesség 0%-tól 100%-ig velocityUnits::pcthasználata esetén, 0-tól 600 rpm-ig rpmhasználata esetén, vagy 0-tól 3600 fok/másodpercig dpshasználata esetén. Ha nincs megadva sebesség, a robot az aktuális fordulási sebességgel forog.

units_v

velocityUnits

A sebesség mértékegysége: velocityUnits::pct (százalék), rpm (fordulat/perc) vagy dps (fok/másodperc).

waitForCompletion

bool

true (alapértelmezett) esetén a projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsor lefutna. false esetén a következő kódsor azonnal lefut.

Return Values

Logikai értékként adja vissza, hogy a robot elérte-e a célirányt.

  • true — A robot elérte a célirányt.

  • false — A robot nem fejezte be a fordulót, vagy a függvény a forduló befejezése előtt adott vissza értéket, mert waitForCompletion értéke false volt.

Notes
  • Egy másik hajtáslánc-mozgási függvény végrehajtása (például a turn vagy a drive) turnToHeading folyamatban lévő állapota közben megszakítja az aktuális mozgást.

  • Mivel turnToHeading cél alapú ( angle paramétert használ), az olyan függvények, mint a isDone és a isMoving turnToHeading paraméterrel működnek.

Examples
// Face the new 0 degrees
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);

turnToRotation#

turnToRotation Az 1 paraméter a robotot egy adott forgásirányba fordítja.

A forgatás a robot elfordulásának mértékét adja meg fokban vagy fordulatokban mérve. A projekt elején a forgatási érték 0 fokra van állítva. A forgatás a setRotation függvénnyel is beállítható.

A forgási értékek abszolútak. Ez azt jelenti, hogy a fordulat iránya a robot aktuális forgásától függ. Jobbra forgatás növeli, balra forgatás csökkenti a forgást.

Például, ha a robot 0 fokról indul, és 720 fokos elfordulást érünk el, akkor kétszer fordul jobbra. Ha ezután 360 fokos elfordulást végzünk, akkor egyszer fordul balra, mert a 360 fok kisebb, mint a 720 fok.

A projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsort futtatná.

Available Functions

1 — A hajtásláncot a megadott forgásirányba forgatja a jelenleg konfigurált fordulási sebesség használatával.

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

2 — A megadott sebességgel a megadott forgásra forgatja a hajtásláncot.

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

Parameters

Paraméter

Típus

Leírás

angle

double

A robot forgási értéke.

units

rotationUnits

Az elforgatás mértékegysége: deg (fok), rev (fordulat) vagy raw (nyers egység). Egy fordulat 360 foknak felel meg.

velocity

double

A fordulási sebesség 0%-tól 100%-ig velocityUnits::pcthasználata esetén, 0-tól 600 rpm-ig rpmhasználata esetén, vagy 0-tól 3600 fok/másodpercig dpshasználata esetén. Ha nincs megadva sebesség, a robot az aktuális fordulási sebességgel forog.

units_v

velocityUnits

A sebesség mértékegysége: velocityUnits::pct (százalék), rpm (fordulat/perc) vagy dps (fok/másodperc).

waitForCompletion

bool

true (alapértelmezett) esetén a projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsor lefutna. false esetén a következő kódsor azonnal lefut.

Return Values

Logikai értékként adja vissza, hogy a robot elérte-e a célforgást.

  • true — A robot elérte a célforgást.

  • false — A robot nem fejezte be a fordulót, vagy a függvény a forduló befejezése előtt adott vissza értéket, mert waitForCompletion értéke false volt.

Notes
  • Egy másik hajtáslánc-mozgási függvény végrehajtása (például a turn vagy a drive) turnToRotation folyamatban lévő művelet közben megszakítja az aktuális mozgást.

  • Mivel turnToRotation cél alapú ( angle paramétert használ), az olyan függvények, mint a isDone és a isMoving turnToRotation paraméterrel működnek.

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

calibrateDrivetrain#

calibrateDrivetrain kalibrálja az intelligens meghajtóval konfigurált inerciális érzékelőt vagy giroszkópot.

A kalibrálás segít az érzékelőnek a mozgás helyes mérésében. Tartsa a robotot mozdulatlanul körülbelül 2 másodpercig a kalibrálás során. Ha a robot elmozdul a kalibrálás során, előfordulhat, hogy az érzékelő nem méri megfelelően a mozgást.

A projekt a kalibráció befejezéséig vár, mielőtt a következő kódsort futtatná.

A calibrateDrivetrain változót a VEXcode automatikusan generálja, amikor egy hajtásláncot inerciális érzékelővel vagy giroszkóppal konfigurálnak. A projekt forráskódjának részeként biztosított, és nem része a VEX EXP C++ API-nak.

Available Functions
void calibrateDrivetrain();

Parameters

Ez a függvény nem fogad el paramétereket.

Return Values

Ez a függvény nem ad vissza értéket.

Notes
  • A robot minden projekt elején automatikusan kalibrál.

  • Kalibrálás közben tartsa mozdulatlanul a robotot körülbelül 2 másodpercig.

Function Implementation

A következő a VEXcode által létrehozott calibrateDrivetrain automatikusan generált implementációja:

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#

A haladási irány a robot felé néző irány, fokban mérve. setHeading paraméterrel a robot aktuális haladási iránya egy új haladási értékre módosítható.

Például, ha a robot jobbra fordult, és a haladási irány 0 fokra állítása a jobbra néző pozíciót teszi az új 0 fokossá. Ezután a robot az új irány alapján más pozíciókba fordulhat.

Available Functions
void  setHeading(
  double value,
  rotationUnits units);

Parameters

Paraméter

Típus

Leírás

value

double

A robothoz beállítandó irányérték. Ez -359 és 359 között lehet deg vagy degrees használata esetén.

units

rotationUnits

Az irány mértékegysége: deg (fok), rev (fordulat) vagy raw (nyers egység). Egy fordulat 360 foknak felel meg.

Return Values

Ez a függvény nem ad vissza értéket.

Examples
// Face the new 0 degrees
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);

setRotation#

A forgás a robot fordulatát adja meg fokban vagy fordulatokban mérve. A projekt elején a forgási érték 0 fokra van állítva. setRotation paraméterrel a robot aktuális forgását egy új értékre módosítja.

Például, ha a robot két teljes fordulatot tett jobbra, akkor a forgási értéke 720 fok lesz. Ha a forgást 0 fokra állítja, akkor a forgás 720-ról 0 fokra áll vissza. Ezután a robot az új érték alapján foroghat.

Available Functions
void  setRotation(
  double value,
  rotationUnits units);

Parameters

Paraméter

Típus

Leírás

value

double

A robothoz beállítandó forgatási érték.

units

rotationUnits

Az elforgatás mértékegysége: deg (fok), rev (fordulat) vagy raw (nyers egység). Egy fordulat 360 foknak felel meg.

Return Values

Ez a függvény nem ad vissza értéket.

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

heading#

A haladási irány a robot irányát jelöli, fokban mérve. heading a robot aktuális haladási irányát adja vissza 0 és 359 fok között.

A robot kezdő iránya 0 fok.

Available Functions
double heading( rotationUnits units = rotationUnits::deg );

Parameters

Paraméter

Típus

Leírás

units

rotationUnits

Opcionális. A mértékegység, amelyben a haladási irányt visszaadja: degrees, deg (alapértelmezett), rev, vagy raw. Egy fordulat 360 foknak felel meg.

Return Values

A robot aktuális irányát adja vissza double formátumban a kiválasztott egységben.

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#

A forgás a robot fordulatát mutatja fokban vagy fordulatokban mérve. A projekt elején a forgási érték 0 fokra van állítva. rotation értékkel adja vissza a robot aktuális forgását.

Jobbra fordulás növeli, balra fordulás pedig csökkenti az elfordulást. Például két teljes jobbra fordulás 720 fokos elfordulást eredményez.

Available Functions
double rotation( rotationUnits units = rotationUnits::deg );

Parameters

Paraméter

Típus

Leírás

units

rotationUnits

Opcionális. A mértékegység, amelyben a haladási irányt visszaadja: degrees, deg (alapértelmezett), rev, vagy raw. Egy fordulat 360 foknak felel meg.

Return Values

A robot aktuális forgását adja vissza double -ként a kiválasztott egységben.

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