Hajtáslánc#
Bevezetés#
A drivetrain osztály szabályozza, hogyan halad és fordul egy robot. A hajtáslánc motorokból és kerekekből áll, amelyek együttesen mozgatják a robotot.
Egy drivetrain nem használ giroszkópot irány- vagy forgásalapú fordulókhoz. Előre vagy hátra tud haladni, valamint balra vagy jobbra fordulni, de nem tud egy adott irányba vagy forgásirányba fordulni. Irány- és forgásalapú fordulókhoz a smartdrive osztályt kell használni.
Ez az oldal myDrivetrain értéket használja példaként a hajtáslánc nevére. Szükség szerint cserélje le a saját konfigurált névre.
Származtatott osztályok#
A drivetrain osztály alaposztályként szolgál a következő származtatott osztályhoz:
smartdrive- Gyroszenzoros hajtásláncot hoz létre.
Osztálykonstruktorok#
1 - Létrehoz egy hajtásláncot a bal és jobb oldalhoz tartozó meglévő
motor_groupobjektumok felhasználásával.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Létrehoz egy hajtásláncot a bal és jobb oldal meglévő
motorobjektumainak felhasználásával.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Osztálydestruktor#
Megsemmisíti a drivetrain objektumot és felszabadítja a hozzá tartozó erőforrásokat.
virtual ~drivetrain();
Paraméterek#
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A bal és jobb oldali motorok vagy motorcsoportok. Mindkét paraméternek azonos típust kell használnia: vagy két |
|
|
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#
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Tagfüggvények#
A drivetrain osztály a következő tagfüggvényeket tartalmazza:
Műveletek – A robot mozgatása és forgatása.
drive- A robotot előre vagy hátra mozgatja örökké.driveFor- Megadott távolságra előre vagy hátra mozgatja a robotot.turn- Örökké balra vagy jobbra forgatja a robotot.turnFor- Meghatározott számú fokkal vagy fordulattal balra vagy jobbra forgatja a robotot.stop- Leállítja a robot mozgását.
Beállítások – A hajtáslánc beállításainak módosítása.
setDriveVelocity- Megadja a robotnak, hogy milyen gyorsan haladjon.setTurnVelocity- Megadja a robotnak, hogy milyen gyorsan forduljon.setStopping- Megadja, hogyan fog a robot leállni: fékezéssel, gurulással vagy tartással.setTimeout- Beállítja, hogy a robot mennyi ideig próbálja befejezni a mozgást.
Értékek – Mozgás állapotának ellenőrzése.
isDone- Logikai értékként adja vissza, hogy a robot befejezte-e a mozgást.isMoving- Logikai értékként adja vissza, hogy a robot mozog-e.velocity– Visszaadja a robot sebességét.current– Visszaadja, hogy mennyi elektromos áramot használ a hajtáslánc.power– Visszaadja, hogy a hajtáslánc milyen gyorsan használja fel az energiát.torque– Visszaadja, hogy mennyi nyomatékot használ a hajtáslánc.efficiency– Visszaadja, hogy a hajtáslánc mennyire hatékonyan használja fel az energiát.temperature– Visszaadja a hajtáslánc melegedését.voltage– Visszaadja a hajtáslánc elektromos feszültségét.
Bármely drivetrain tagfüggvény meghívása előtt létre kell hozni egy drivetrain objektumot.
/* 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 drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Műveletek#
hajtás#
drive A robotot a végtelenségig előre vagy hátra mozgatja. A robot addig fog mozogni, amíg egy másik műveletet nem kap, például fordulást vagy megállást.
1 - A pillanatnyi hajtási sebességgel hajt.
void drive( directionType dir );
Parameters2 - A megadott sebességgel halad.
void drive( directionType dir, double velocity, velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robot mozgásiránya: |
|
|
A haladási sebesség 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
Ez a függvény nem ad vissza értéket.
Notesdriveis non-waiting. The project will run the next line of code right away.A robot addig fog mozogni, amíg a
stopparancsot meg nem hívják, vagy egy másik hajtáslánc-mozgási függvény le nem fut.isDoneésisMovingnem használatosakdrive-tel, mertdrivenincs céltávolsága.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor A robotot egy adott távolságra előre vagy hátra mozgatja. A projekt megvárja, amíg a robot befejezi a mozgást, mielőtt a következő kódsort futtatná.
1 - A megadott irányban egy adott távolságon keresztül halad az aktuális haladási sebességgel.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - A távolságérték alapján az aktuális haladási sebesség felhasználásával egy irányba halad.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - A megadott sebességgel a távolságérték alapján meghatározott irányba halad.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - A megadott irányban, a megadott sebességgel, egy adott távolságon keresztül halad.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robot mozgásiránya: |
|
|
A robot által megtett távolság. |
|
|
A távolság mértékegysége: |
|
|
A haladá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éltávolságot.
true- A robot elérte a céltávolságot.false- A robot nem fejezte be a mozgást, vagy a függvény a mozgás befejezése előtt adott vissza értéket, mertwaitForCompletionparaméterfalseértékre volt állítva.
Egy másik hajtáslánc-mozgási függvény futtatása, miközben
driveForfut, megszakítja az aktuális mozgást.driveForegy célzott távolságot használ, így aisDoneés azisMovinghasználhatók vele.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
fordulat#
turn : A robotot balra vagy jobbra forgatja örökre. A robot addig fog forogni, amíg egy másik műveletet nem kap, például vezetést vagy megállást.
1 - Az aktuális fordulási sebességgel fordul.
void turn( turnType dir );
Parameters2 - A megadott sebességgel fordul.
void turn( turnType dir, double velocity, velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robot fordulási iránya: |
|
|
A fordulási sebesség 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
Ez a függvény nem ad vissza értéket.
Notesturnnem várakozó. A projekt azonnal lefuttatja a kód következő sorát.A robot addig forog, amíg a
stopparancsot meg nem hívják, vagy egy másik hajtáslánc-mozgási függvény le nem fut.isDoneésisMovingnem használatosakturntel, mertturnnincs célszöge.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
forduljFor#
turnFor A 0 turnFor paraméterrel a robot balra vagy jobbra forgatható egy megadott számú fokban, fordulatban vagy nyers egységben. A fordulat a robot aktuális pozíciójához viszonyítva értendő. A projekt megvárja, amíg a robot befejezi a fordulást, mielőtt a következő kódsort futtatná.
1 - A megadott szögben fordul az aktuális fordulási sebességgel.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - A megadott irányba fordul egy szöggel az aktuális fordulási sebesség használatával.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - A megadott szöggel és a megadott sebességgel fordul.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - A megadott irányban, a megadott sebességgel és egy szöggel elfordul.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A robot fordulási iránya: |
|
|
A robot fordulatszáma. |
|
|
A fordulat 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élszöget.
true- A robot elérte a célszöget.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 futtatása
turnForfutása közben megszakítja az aktuális mozgást.turnForegy célzott szöget használ, így aisDoneés azisMovinghasználhatók vele.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
Stop#
stop leállítja a robot mozgását. Ha meg van adva egy leállítási mód, akkor az vezérli, hogyan álljon meg a robot ennél a függvényhívásnál.
1 - Leállítja a hajtásláncot az aktuális leállítási móddal.
void stop();
Parameters2 - Leállítja a hajtásláncot a megadott leállítási móddal.
void stop( brakeType mode );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Hogyan fog megállni a robot:
|
Ez a függvény nem ad vissza értéket.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutátorok#
setDriveVolicity#
setDriveVelocity megmondja a robotnak, hogy milyen gyorsan haladjon. Magasabb százalékos érték esetén a robot gyorsabban, alacsonyabb százalékos érték esetén pedig lassabban halad.
Minden projekt azzal kezdődik, hogy a robot alapértelmezés szerint 50%-os sebességgel halad.
Megjegyzés: A nagyobb sebesség gyorsabbá teszi a robotot, de kevésbé pontos lehet. Az alacsonyabb sebesség lassabbá teszi a robotot, de pontosabb lehet.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A hajtandó sebesség 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
Ez a függvény nem ad vissza értéket.
NotesA hajtási sebességet a későbbi hajtáslánc-mozgási függvények használják, kivéve, ha a függvényhívásban megadunk egy adott sebességet.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
FordulásiSebesség beállítása#
setTurnVelocity megmondja a robotnak, hogy milyen gyorsan forduljon. Magasabb százalékos érték esetén a robot gyorsabban, alacsonyabb százalékos érték esetén pedig lassabban fordul.
Minden projekt azzal kezdődik, hogy a robot alapértelmezés szerint 50%-os sebességgel forog.
Megjegyzés: A nagyobb sebesség gyorsabbá teszi a robot fordulását, de kevésbé pontos lehet. Az alacsonyabb sebesség lassabbá teszi a robot fordulását, de pontosabb lehet.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A fordulatszám 0%-tól 100%-ig |
|
|
A sebesség mértékegysége: |
Ez a függvény nem ad vissza értéket.
NotesA fordulási sebességet a későbbi hajtáslánc-fordulási függvények használják, kivéve, ha a függvényhívásban megadunk egy adott sebességet.
// Try default, slow, then fast.
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);
setStopping#
setStopping beállítja, hogyan álljon meg a robot: fékezéssel, gurulással vagy tartással.
void setStopping(
brakeType mode );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Hogyan fog megállni a robot:
|
Ez a függvény nem ad vissza értéket.
NotesA leállítási módot a későbbi
stophívások használják, kivéve, ha a függvényhívásban megadunk egy adott leállítási módot.Ha ezt a funkciót nem használjuk, a robot megálláskor
brakebeállítást fogja használni.
időtúllépés beállítása#
setTimeout beállítja, hogy a robot mennyi ideig próbáljon meg befejezni egy mozgást. Ha a robot nem tudja befejezni ennyi idő alatt, akkor leállítja a próbálkozást, és továbblép a kód következő sorára. Ez megakadályozza, hogy a robot elakadjon egy mozgásnál.
void setTimeout(
int32_t time,
timeUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az az időtartam, ameddig a robot megpróbálhat befejezni egy mozgást. Ennek pozitív egész számnak kell lennie. |
|
|
Az idő mértékegysége: |
Ez a függvény nem ad vissza értéket.
NotesAz időtúllépés csak azokra a hajtáslánc-függvényekre vonatkozik, amelyek egy célpontra mozognak, mint például a
driveForés aturnForfüggvények.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getterek#
Kész#
isDone Logikai értékként adja vissza, hogy a robot befejezte-e a mozgást. Ez felhasználható más viselkedések időzítésének szabályozására a robot mozgása alapján.
bool isDone( void );
Ez a függvény nem fogad el paramétereket.
Return Valuestrue- A robot mozgása befejeződött.false- A robot még mindig mozog.
Mozgásban van#
isMoving logikai értékként adja vissza, hogy a robot mozog-e. Ez felhasználható más viselkedések időzítésének szabályozására a robot mozgása alapján.
virtual bool isMoving( void );
Ez a függvény nem fogad el paramétereket.
Return Valuestrue- A robot mozog.false- A robot nem mozog.
sebesség#
velocity a robot haladási sebességét adja vissza.
A sebességet százalékban, rpmvagy dpsegységben adhatja vissza. A pozitív érték azt jelenti, hogy a robot előre halad. A negatív érték azt jelenti, hogy a robot hátramenetben halad.
double velocity(
velocityUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A sebesség visszaadásához használt mértékegység: |
A hajtáslánc sebességét adja vissza double formátumban a kiválasztott egységben.
// Show velocity before and during motion.
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();
jelenlegi#
current visszaadja, hogy mennyi elektromos áramot használ a hajtáslánc. Az áram az a villamos energia mennyisége, amely átfolyik a hajtásláncon. Amperben (amper) vagy százalékban adható vissza, a mértékegységtől függően.
A magasabb áramérték azt jelenti, hogy a hajtáslánc több elektromos áramot használ. Ez akkor fordulhat elő, amikor a robot egy tárgynak nyomódik, vagy elakadt állapotban próbál mozogni.
Ez felhasználható annak ellenőrzésére, hogy a hajtáslánc mozgás közben akadozik-e. Ha az áram magas marad, a hajtáslánc felmelegedhet, vagy kevésbé hatékonyan használhatja fel az energiát.
Available Functions1 - Visszaadja a hajtáslánc elektromos áramát amperben.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Visszaadja a hajtáslánc elektromos áramát százalékban.
double current( percentUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az áramerősség visszaadásához szükséges mértékegység: |
|
|
Az áram visszaadásához szükséges mértékegység: |
A hajtáslánc áramát double -ként adja vissza a kiválasztott egységben.
hatalom#
power Visszaadja, hogy mennyi energiát fogyaszt a hajtáslánc, wattban mérve. A Power megmutatja, hogy milyen gyorsan használja fel a hajtáslánc az energiát.
A magasabb teljesítményérték azt jelenti, hogy a hajtáslánc gyorsabban használja fel az energiát. Ez akkor fordulhat elő, amikor a robot egy tárgynak nyomódik, vagy elakadt állapotban próbál mozogni.
Ez felhasználható a mozgások összehasonlítására, vagy annak ellenőrzésére, hogy a hajtáslánc akadozik-e. Ha a teljesítmény magas marad, a hajtáslánc felmelegedhet, vagy kevésbé hatékonyan használhatja fel az energiát.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A tápegység: |
A hajtáslánc teljesítményét wattban adja vissza double formátumban.
nyomaték#
A nyomaték megmutatja, hogy a hajtáslánc milyen erősen tud nyomni vagy húzni, miközben a kerekek forognak.
torque visszaadja, hogy mennyi nyomatékot használ a hajtáslánc, newtonméterben (Nm) vagy hüvelyk-fontban (InLb) mérve.
A magasabb nyomatékérték azt jelenti, hogy a hajtáslánc erősebben nyom vagy húz. Ez akkor fordulhat elő, amikor a robot egy tárgynak nyomódik, vagy elakadt állapotban próbál mozdulni.
Ez felhasználható annak ellenőrzésére, hogy a hajtáslánc akadozik-e, vagy annak összehasonlítására, hogy mennyi lökést igényelnek a különböző mozgások.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A nyomaték mértékegysége: |
A hajtáslánc nyomatékát double -ként adja vissza a kiválasztott mértékegységben.
hatékonyság#
efficiency Visszaadja, hogy a hajtáslánc mennyire hatékonyan használja fel az energiát, 0% és 100% közötti százalékban.
A hatékonyság megmutatja, hogy a hajtáslánc teljesítményének mekkora részét használja fel a mozgás. A magasabb hatékonysági érték azt jelenti, hogy a hajtáslánc teljesítményének nagyobb részét használja fel a mozgás. Alacsonyabb hatékonysági érték akkor fordulhat elő, ha a hajtáslánc keményen dolgozik, de nem mozog sokat, például amikor a robot elakadt vagy egy tárgynak nyomódik.
Ez felhasználható a mozgások összehasonlítására, vagy annak ellenőrzésére, hogy a hajtáslánc pazarolja-e az energiát a mozgás helyett.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A hatásfokot visszaadó egység: |
A hajtáslánc hatékonyságát double értékként adja vissza a kiválasztott egységben.
hőmérséklet#
temperature A hajtáslánc átlagos hőmérsékletét adja vissza százalékban 0% és 100% között.
A hőmérséklet megmutatja, mennyire melegek a hajtáslánc motorjai. A magasabb hőmérséklet azt jelenti, hogy a motorok működés közben melegednek. A motoroknak 55 °C alatt kell maradniuk ahhoz, hogy teljes teljesítményen működjenek.
Ha a motorok túlmelegszenek, csökkentik a maximális áramerősséget önmaguk védelme érdekében. 70 °C-on a motorok leállnak, amíg le nem hűlnek.
Ez felhasználható annak ellenőrzésére, hogy a hajtáslánc túlmelegszik-e ismételt mozgások, hosszú futások vagy tárgynak való nyomás során.
Available Functionsdouble temperature(
percentUnits units );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A visszatérő hőmérséklet mértékegysége: |
A hajtáslánc átlagos hőmérsékletét adja vissza double formátumban a kiválasztott mértékegységben.
A
50%visszaadott érték azt jelenti, hogy az átlagos motorhőmérséklet körülbelül45°C(113°F).The typical operating temperature range for the drivetrain is about
20°C(68°F) to70°C(158°F).
feszültség#
voltage a hajtáslánc elektromos feszültségét adja vissza.
A feszültség a hajtáslánc motorjaihoz juttatott elektromos nyomás. Ez az áram- és teljesítményértékekkel együtt felhasználható annak megértésére, hogyan használja fel a hajtáslánc az elektromos energiát.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A feszültség visszaadásához használt mértékegység: |
A hajtáslánc feszültségét double -ként adja vissza a kiválasztott mértékegységben.