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_groupobjektumok, 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őmotorobjektumainak 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 |
|---|---|---|
|
|
Hivatkozások meglévő |
|
|
Hivatkozás egy meglévő |
|
|
A hajtáslánc kerekeinek kerülete. Az alapértelmezett érték |
|
|
A bal és jobb kerék közötti távolság. Az alapértelmezett érték |
|
|
Az első és hátsó kerekek közötti távolság. Az alapértelmezett érték |
|
|
A |
|
|
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 |
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.
turnToHeading— A robotot egy adott irányba fordítja -359 és 359 fok között. A robot a legrövidebb irányba fordul, hogy elérje a célirányt.turnToRotation— Megadott forgásirányba fordítja a robotot.calibrateDrivetrain— Kalibrálja a hajtáslánc konfigurált Inertial Sensor vagy Gyro Sensor érzékelőjét.
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 Functions1 — 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 );
Parameters2 — 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 );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az irány, amerre a robotnak néznie kell, fokban. Ez -359 és 359 között lehet |
|
|
Az elforgatás mértékegysége: |
|
|
A fordulási sebesség 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
|
|
|
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, mertwaitForCompletionértékefalsevolt.
Egy másik hajtáslánc-mozgási függvény végrehajtása (például a
turnvagy adrive)turnToHeadingfolyamatban lévő állapota közben megszakítja az aktuális mozgást.Mivel
turnToHeadingcél alapú (angleparamétert használ), az olyan függvények, mint aisDoneés aisMovingturnToHeadingparaméterrel működnek.
// 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 Functions1 — 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 );
Parameters2 — 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 );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robot forgási értéke. |
|
|
Az elforgatás mértékegysége: |
|
|
A fordulási sebesség 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
|
|
|
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, mertwaitForCompletionértékefalsevolt.
Egy másik hajtáslánc-mozgási függvény végrehajtása (például a
turnvagy adrive)turnToRotationfolyamatban lévő művelet közben megszakítja az aktuális mozgást.Mivel
turnToRotationcél alapú (angleparamétert használ), az olyan függvények, mint aisDoneés aisMovingturnToRotationparaméterrel működnek.
// 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.
void calibrateDrivetrain();
Ez a függvény nem fogad el paramétereket.
Return ValuesEz a függvény nem ad vissza értéket.
NotesA robot minden projekt elején automatikusan kalibrál.
Kalibrálás közben tartsa mozdulatlanul a robotot körülbelül 2 másodpercig.
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 Functionsvoid setHeading(
double value,
rotationUnits units);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robothoz beállítandó irányérték. Ez -359 és 359 között lehet |
|
|
Az irány mértékegysége: |
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 Functionsvoid setRotation(
double value,
rotationUnits units);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robothoz beállítandó forgatási érték. |
|
|
Az elforgatás mértékegysége: |
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 Functionsdouble heading( rotationUnits units = rotationUnits::deg );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Opcionális. A mértékegység, amelyben a haladási irányt visszaadja: |
A robot aktuális irányát adja vissza double formátumban a kiválasztott egységben.
// 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 Functionsdouble rotation( rotationUnits units = rotationUnits::deg );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Opcionális. A mértékegység, amelyben a haladási irányt visszaadja: |
A robot aktuális forgását adja vissza double -ként a kiválasztott egységben.
// 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();