Pavarų dėžė#
Įvadas#
drivetrain klasė kontroliuoja, kaip robotas važiuoja ir sukasi. Pavaros sistemą sudaro varikliai ir ratai, kurie kartu judina robotą.
drivetrain nenaudoja inercinio jutiklio, giroskopinio jutiklio arba GPS jutiklio posūkiams pagal kryptį arba sukimąsi. Ji gali važiuoti pirmyn arba atgal ir pasukti į kairę arba į dešinę, bet negali pasukti į konkrečią kryptį ar sukimąsi. Posūkiams pagal kryptį ir sukimąsi naudokite smartdrive klasę.
Išvestinės klasės#
drivetrain klasė naudojama kaip bazinė klasė šioms išvestinėms klasėms:
smartdrive– Ši klasė prideda inercinio jutiklio, GPS jutiklio arba giroskopinio jutiklio palaikymą, kad būtų galima atlikti posūkius pagal kryptį ir sukimąsi.
Klasės konstruktoriai#
1 - Sukuria transmisiją naudodamas esamus
motor_groupobjektus kairei (&l) ir dešinei (&r) pusėms.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Sukuria transmisiją naudodamas esamus
motorobjektus kairei (&l) ir dešinei (&r) pusėms.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Klasės destruktorius#
Sunaikina drivetrain objektą ir išlaisvina susijusius išteklius.
virtual ~drivetrain();
Parametrai#
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Kairysis ir dešinysis varikliai arba variklių grupės. Abu parametrai turi būti to paties tipo: du |
|
|
Varančiosios ašies ratų apimtis. Numatytoji reikšmė yra |
|
|
Atstumas tarp kairiojo ir dešiniojo ratų. Numatytoji reikšmė yra |
|
|
Atstumas tarp priekinių ir galinių ratų. Numatytoji reikšmė yra |
|
|
|
|
|
Pavarų perdavimo skaičius, naudojamas važiavimo atstumams reguliuoti, jei naudojamos pavaros. Numatytoji reikšmė yra |
Pavyzdys#
// 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 object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Narių funkcijos#
drivetrain klasė apima šias narines funkcijas:
Veiksmai – roboto judinimas ir pasukimas.
drive– Robotas nuolat juda pirmyn arba atgal.driveFor– Robotas judinamas pirmyn arba atgal tam tikru atstumu.turn– Robotas visam laikui pasukamas į kairę arba į dešinę.turnFor– Robotas pasukamas į kairę arba į dešinę tam tikru laipsnių skaičiumi.stop– Sustabdo roboto judėjimą.
Nustatymai – pavaros nustatymų koregavimas.
setDriveVelocity– Nurodo robotui, kokiu greičiu važiuoti.setTurnVelocity– Nurodo robotui, kaip greitai suktis.setStopping– Nurodo, kaip robotas nustos judėti: stabdydamas, riedėdamas iš vietos ar palaikydamas.setTimeout– Nustato, kiek sekundžių robotas bandys užbaigti judesį.
Vertės – patikrinkite judėjimo būseną.
isDone– Grąžina, ar robotas baigė judėti, kaip loginę reikšmę.isMoving– Grąžina, ar robotas juda, kaip loginę reikšmę.velocity– Grąžina roboto važiavimo greitį.current– Grąžina, kiek elektros srovės naudoja pavaros sistema.power– Grąžina, kaip greitai pavaros sistema eikvoja energiją.torque– Grąžina, kiek sukimo momento naudoja pavaros sistema.efficiency– Grąžina, kaip efektyviai pavaros sistema naudoja galią.temperature– Grąžina pavaros sistemos įšilimo rodiklį.voltage– Grąžina pavaros sistemai tiekiamą elektros įtampą.
Prieš iškviečiant bet kokias drivetrain narių funkcijas, reikia sukurti drivetrain objektą, kaip parodyta žemiau:
/* 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 object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Veiksmai#
vairuoti#
drive robotą judina pirmyn arba atgal amžinai. Robotas judės tol, kol jam bus duotas kitas veiksmas, pvz., pasisukimas arba sustojimas. RPM arba DPS atveju ribą keičia pavaros perdavimo skaičius.
1 - Pavaros naudoja šiuo metu konfigūruotą pavaros greitį.
void drive( directionType dir );
Parameters2 - Važiuoja nurodytu greičiu.
void drive( directionType dir, double velocity, velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Roboto judėjimo kryptis: |
|
|
Važiavimo greitis nuo 0 % iki 100 %, kai naudojama |
|
|
Greičio vienetas: |
Ši funkcija negrąžina reikšmės.
Notesdrivediskas nelaukia; projektas tęs kitos kodo eilutės vykdymą iškart po iškvietimo.Pavarų dėžė judės tol, kol bus iškviesta
stoparba bus įvykdyta kita pavarų dėžės judėjimo funkcija (pvz.,driveForarbaturn).Tokios funkcijos kaip
isDoneirisMovingnetaikomosdrive, nes ji nenaudoja judėjimo pagal taikinį (neturidistanceparametro).
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor robotą judina pirmyn arba atgal tam tikru atstumu. Pagal numatytuosius nustatymus projektas lauks, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę. RPM arba DPS atveju riba keičiama pagal pavaros perdavimo skaičių.
1 - Važiuoja nurodyta kryptimi tam tikrą atstumą, naudodamas šiuo metu konfigūruotą važiavimo greitį.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Važiuoja kryptimi, priklausančia nuo atstumo, naudodamas šiuo metu konfigūruotą pavaros greitį.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Važiuoja kryptimi, priklausančia nuo atstumo, nurodytu greičiu.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Važiuoja nurodyta kryptimi tam tikru atstumu nurodytu greičiu.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Roboto judėjimo kryptis: |
|
|
Atstumas, kurį nuvažiuoja robotas. |
|
|
Atstumo vienetas: |
|
|
Važiavimo greitis nuo 0 % iki 100 %, kai naudojama |
|
|
Greičio vienetas: |
|
|
|
Grąžina, ar robotas pasiekė tikslinį atstumą, kaip loginę reikšmę.
true– Robotas pasiekė tikslinį atstumą.false– Robotas nebaigė judėjimo arba funkcija grąžino rezultatą prieš judėjimo pabaigą, neswaitForCompletionbuvo nustatytas įfalse.
Vykdant kitą transmisijos judėjimo funkciją (pvz.,
drivearbaturnFor), kol vykstadriveFordabartinis judėjimas bus nutrauktas.Kadangi
driveForyra pagrįstas taikiniu (naudojadistanceparametrą), tokios funkcijos kaipisDoneirisMovingveikia sudriveFor.
// Drive 200 mm, then back 200 mm
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
posūkis#
turn suka robotą į kairę arba į dešinę amžinai. Robotas suksis tol, kol jam bus duotas kitas veiksmas, pvz., važiuoti arba sustoti. RPM arba DPS atveju riba keičiama pagal pavaros perdavimo skaičių.
1 - Posūkiai naudojant šiuo metu konfigūruotą posūkio greitį.
void turn( turnType dir );
Parameters2 - Sukasi nurodytu greičiu.
void turn( turnType dir, double velocity, velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Roboto sukimosi kryptis: |
|
|
Sukimosi greitis nuo 0% iki 100%, kai naudojama |
|
|
Greičio vienetas: |
turnnelaukia; projektas tęs kitos kodo eilutės vykdymą iškart po iškvietimo.Pavaros mechanizmas suksis tol, kol bus iškviesta
stoparba bus įvykdyta kita pavaros mechanizmo judėjimo funkcija (pvz.,turnForarbadrive).Tokios funkcijos kaip
isDoneirisMovingnetaikomos funkcijaiturn, nes ji nenaudoja judėjimo pagal taikinį (neturiangleparametro).
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
posūkis#
turnFor pasuka robotą į kairę arba į dešinę tam tikru laipsnių skaičiumi. Posūkis yra santykinis su dabartine roboto padėtimi. Pagal numatytuosius nustatymus projektas lauks, kol robotas baigs pasisukti, prieš paleidžiant kitą kodo eilutę. RPM arba DPS atveju riba keičiama pagal pavaros perdavimo skaičių.
1 - Pasisuka nurodytu kampu, naudodamas šiuo metu konfigūruotą posūkio greitį.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Sukasi nurodyta kryptimi kampu, naudojant šiuo metu konfigūruotą posūkio greitį.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Pasisuka nurodytu kampu nurodytu greičiu.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Sukasi nurodyta kryptimi kampu nurodytu greičiu.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Roboto sukimosi kryptis: |
|
|
Roboto posūkio kampas. |
|
|
Posūkio vienetas: |
|
|
Sukimosi greitis nuo 0% iki 100%, kai naudojama |
|
|
Greičio vienetas: |
|
|
|
Grąžina, ar robotas pasiekė tikslinį kampą, kaip loginę reikšmę.
true– Robotas pasiekė tikslinį kampą.false– Robotas nebaigė posūkio arba funkcija grąžino rezultatą prieš jam pasibaigiant, neswaitForCompletionbuvo nustatytas įfalse.
Vykdant kitą pavaros judėjimo funkciją (pvz.,
turnarbadrive), kol vykstaturnFordabartinis judėjimas bus nutrauktas.Kadangi
turnForyra pagrįstas taikiniu (naudojaangleparametrą), tokios funkcijos kaipisDoneirisMovingveikia suturnFor.
// Turn right then left
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
sustoti#
stop sustabdo roboto judėjimą. Jei nurodytas stabdymo režimas, jis kontroliuoja, kaip robotas sustoja šio funkcijos iškvietimo metu.
1 - Sustabdo pavaros sistemą naudodama šiuo metu sukonfigūruotą stabdymo režimą.
void stop();
Parameters2 - Sustabdo pavaros sistemą naudodamas nurodytą stabdymo režimą.
void stop( brakeType mode );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Kaip robotas sustos:
|
Ši funkcija negrąžina reikšmės.
Examples// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutatoriai#
setDriveVolicity#
setDriveVelocity nurodo robotui, kokiu greičiu važiuoti. Didesnis procentas leidžia robotui važiuoti greičiau, o mažesnis – lėčiau. Apsukų (RPM) ribą keičia pavaros perdavimo skaičius.
Kiekvienas projektas prasideda nuo to, kad robotas pagal numatytuosius nustatymus važiuoja 50 % greičiu.
Pastaba: Didesnis greitis leidžia robotui važiuoti greičiau, bet gali būti mažiau tikslus. Mažesnis greitis leidžia robotui važiuoti lėčiau, bet gali būti tiksliau.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Važiavimo greitis nuo 0 % iki 100 %, kai naudojama |
|
|
Greičio vienetas: |
Ši funkcija negrąžina reikšmės.
NotesPavaros greitis taikomas visoms vėlesnėms pavaros judėjimo funkcijoms (pvz.,
driveirdriveFor), nebent funkcijos iškvietime būtų nurodytas konkretus greitis.
// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
nustatyti posūkio greitį#
setTurnVelocity nurodo robotui, kaip greitai suktis. Didesnis procentas leidžia robotui suktis greičiau, o mažesnis – lėčiau.
Kiekvienas projektas prasideda nuo to, kad robotas pagal numatytuosius nustatymus sukasi 50 % greičiu.
Pastaba: Didesnis greitis leidžia robotui sukasi greičiau, bet gali būti mažiau tikslus. Mažesnis greitis leidžia robotui sukasi lėčiau, bet gali būti tiksliau.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Sukimosi greitis nuo 0% iki 100%, kai naudojama |
|
|
Greičio vienetas: |
Ši funkcija negrąžina reikšmės.
NotesSukimosi greitis taikomas visoms vėlesnėms pavaros sukimo funkcijoms (pvz.,
turnirturnFor), nebent funkcijos iškvietime būtų nurodytas konkretus greitis.
// 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 nustato, kaip robotas sustabdys judėjimą: stabdydamas, riedėdamas iš vietos arba palaikydamas.
void setStopping(
brakeType mode );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Kaip robotas sustos:
|
Ši funkcija negrąžina reikšmės.
NotesStabdymo režimas taikomas visiems vėlesniems
stopiškvietimams, nebent funkcijos iškvietime būtų nurodytas konkretus stabdymo režimas.
setTimeout#
setTimeout nustato, kiek sekundžių robotas bandys užbaigti judesį. Jei robotas negali užbaigti per tą laiką, jis nustos bandyti ir pereis prie kitos kodo eilutės. Tai neleidžia robotui užstrigti ties judesiu.
void setTimeout(
int32_t time,
timeUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Laikas, per kurį robotas gali bandyti užbaigti judesį. Tai turėtų būti teigiamas sveikasis skaičius. |
|
|
Laiko vienetas: |
Ši funkcija negrąžina reikšmės.
Notes Examples// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getteriai#
Atlikta#
isDone grąžina, ar robotas baigė judėti, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.
bool isDone( void );
Ši funkcija nepriima jokių parametrų.
Return Valuestrue– Robotas baigė judėti.false– Robotas vis dar juda.
Juda#
isMoving grąžina, ar robotas juda, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.
virtual bool isMoving( void );
Ši funkcija nepriima jokių parametrų.
Return Valuestrue– Robotas juda.false– Robotas nejuda.
greitis#
velocity grąžina roboto važiavimo greitį.
Teigiama reikšmė reiškia, kad robotas važiuoja į priekį. Neigiama reikšmė reiškia, kad robotas važiuoja atbuline eiga.
Available Functionsdouble velocity(
velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Greičio vienetas: |
Grąžina transmisijos greitį kaip double pasirinktais vienetais.
// 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();
srovė#
current grąžina, kiek elektros srovės sunaudoja pavaros sistema. Srovė yra elektros energijos kiekis, tekantis per pavaros sistemą. Ji gali būti grąžinta amperais arba procentais, priklausomai nuo matavimo vieneto.
Didesnė srovės vertė reiškia, kad pavaros sistema naudoja daugiau elektros srovės. Taip gali nutikti, kai robotas stumia objektą arba bando pajudėti, kai yra užstrigęs.
Tai gali būti naudojama norint patikrinti, ar pavaros sistemai kyla problemų judesio metu. Jei srovė išlieka didelė, pavaros sistema gali įkaisti arba ne taip efektyviai naudoti energiją.
Available Functions1 - Grąžina pavaros sistemos elektros srovę amperais.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Grąžina pavaros grandinės elektros srovę, išreikštą maksimalios srovės procentine dalimi.
double current( percentUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Srovės grąžinimo vienetas: |
|
|
Grąžinamos srovės vienetas: |
Grąžina pavaros srovę kaip double pasirinktame vienete.
galia#
power grąžina pavaros sunaudojamą galią, matuojamą vatais. Galia rodo, kaip greitai pavara eikvoja energiją.
Didesnė galios vertė reiškia, kad pavaros sistema energiją naudoja greičiau. Tai gali nutikti, kai robotas stumia objektą arba bando pajudėti, kai yra įstrigęs.
Tai galima naudoti judesiams palyginti arba patikrinti, ar pavaros sistema veikia sunkiai. Jei galia išlieka didelė, pavaros sistema gali įkaisti arba ne taip efektyviai naudoti energiją.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Maitinimo vienetas: |
Grąžina pavaros galią kaip double vatais.
sukimo momentas#
Sukimo momentas parodo, kaip stipriai transmisija gali stumti arba traukti, kai ratai sukasi.
torque grąžina pavaros naudojamą sukimo momentą, matuojamą niutonmetrais (Nm) arba coliais-svarais (InLb).
Didesnė sukimo momento vertė reiškia, kad pavaros sistema stumia arba traukia stipriau. Tai gali nutikti, kai robotas stumia objektą arba bando pajudėti, kai yra užstrigęs.
Tai galima naudoti norint patikrinti, ar pavaros sistema veikia sunkiai, arba palyginti, kiek stūmimo reikia skirtingiems judesiams.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Sukimo momento grąžinimo vienetas: |
Grąžina pavaros sukimo momentą kaip double pasirinktu vienetu.
efektyvumas#
efficiency grąžina, kaip efektyviai pavaros sistema naudoja energiją, procentais nuo 0 % iki 100 %.
Efektyvumas rodo, kiek pavaros galios sunaudojama judėjimui. Didesnė efektyvumo vertė reiškia, kad daugiau pavaros galios sunaudojama judėjimui. Mažesnė efektyvumo vertė gali būti, kai pavara dirba intensyviai, bet juda mažai, pavyzdžiui, kai robotas užstringa arba stumia į objektą.
Tai gali būti naudojama judesiams palyginti arba patikrinti, ar pavarų sistema nešvaisto energijos, užuot ją naudojusi judėjimui.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Vienetas, kuriuo reikia pateikti efektyvumą: |
Grąžina pavaros efektyvumą kaip double pasirinktame vienete.
temperatūra#
temperature grąžina vidutinę pavaros agregato temperatūrą procentais nuo 0 % iki 100 %.
Temperatūra rodo, kiek įkaitę pavaros varikliai. Aukštesnė temperatūra reiškia, kad varikliai darbo metu įkaista. Kad varikliai veiktų visu našumu, jų temperatūra turi būti žemesnė nei 55 °C.
Jei varikliai per daug įkaista, jie sumažina maksimalią srovę, kad apsisaugotų. Esant 70 °C temperatūrai, varikliai nustos veikti, kol atvės.
Tai gali būti naudojama norint patikrinti, ar pavarų dėžė neperkaista pasikartojančių judesių, ilgų važiavimų metu arba kai ji spaudžia objektą.
Available Functionsdouble temperature(
percentUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Grąžinamos temperatūros matavimo vienetas: |
Grąžina vidutinę transmisijos temperatūrą kaip double pasirinktais vienetais.
Grąžinta
50%reikšmė rodo, kad vidutinė variklio temperatūra yra maždaug45°C(113°F).Įprasta pavaros sistemos darbinė temperatūra yra maždaug nuo
20°C(68°Fiki70°C(158°F).
įtampa#
voltage grąžina pavaros sistemai tiekiamą elektros įtampą.
Įtampa yra pavaros varikliams tiekiamas elektrinis slėgis. Ją galima naudoti kartu su srovės ir galios vertėmis, siekiant suprasti, kaip pavara naudoja elektros energiją.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Įtampos grąžinimo vienetas: |
Grąžina pavaros įtampą kaip double pasirinktais vienetais.