Pavarų dėžė#
Įvadas#
drivetrain klasė kontroliuoja, kaip robotas važiuoja ir sukasi. Pavaros sistemą sudaro varikliai ir ratai, kurie kartu judina robotą.
drivetrain nenaudoja giroskopinio jutiklio arba inercinio 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ę.
Šiame puslapyje kaip pavaros mechanizmo pavadinimo pavyzdys naudojamas myDrivetrain Jei reikia, pakeiskite jį savo sukonfigūruotu pavadinimu.
Išvestinės klasės#
drivetrain klasė naudojama kaip bazinė klasė šiai išvestinei klasei:
smartdrive– Sukuria pavaros sistemą su giroskopinio arba inercinio jutiklio palaikymu.
Klasės konstruktoriai#
1 - Sukuria pavaros sistemą naudodamas esamus
motor_groupobjektus kairei ir dešinei 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 ir dešinei 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
rightMotor, // right motor
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ų arba apsisukimų 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 laiko 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 elektrinę įtampą.
Prieš iškviečiant bet kokias drivetrain narių funkcijas, reikia sukurti drivetrain objektą.
/* 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
Veiksmai#
vairuoti#
drive robotą judina pirmyn arba atgal amžinai. Robotas judės tol, kol jam bus duotas kitas veiksmas, pvz., pasisukti arba sustoti.
1 - Pavara naudojant dabartinį 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.
Notesdrivenelaukia. Projektas iš karto paleis kitą kodo eilutę.Robotas judės tol, kol bus iškviesta
stoparba bus paleista kita pavaros judėjimo funkcija.isDoneirisMovingnenaudojami sudrive, nesdriveneturi tikslinio atstumo.
// 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. Projektas lauks, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę.
1 - Važiuoja nurodyta kryptimi tam tikrą atstumą, naudodamas dabartinį važiavimo greitį.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Važiuoja kryptimi, pagrįsta atstumo verte, naudojant dabartinį važiavimo greitį.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Važiuoja kryptimi, pagrįsta atstumo verte, 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.
Paleidus kitą pavaros judėjimo funkciją, kai veikia
driveFordabartinis judėjimas bus nutrauktas.driveFornaudoja tikslinį atstumą, todėl su juo galima naudotiisDoneirisMoving.
// 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, pavyzdžiui, važiuoti arba sustoti.
1 - Posūkiai naudojant dabartinį 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: |
Ši funkcija negrąžina reikšmės.
Notesturnnelaukia. Projektas iš karto paleis kitą kodo eilutę.Robotas toliau suksis, kol bus iškviesta
stoparba bus paleista kita pavaros judėjimo funkcija.isDoneirisMovingnenaudojami suturn, nesturnneturi tikslinio kampo.
// 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 tikrą laipsnių, apsisukimų arba neapdorotų vienetų skaičių. Posūkis yra santykinis dabartinei roboto padėčiai. Projektas lauks, kol robotas baigs pasisukti, prieš paleidžiant kitą kodo eilutę.
1 - Pasisuka nurodytu kampu, naudodamas dabartinį posūkio greitį.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Sukasi nurodyta kryptimi tam tikru kampu, naudojant dabartinį 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 apsisukimo kiekis. |
|
|
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.
Paleidus kitą pavaros judėjimo funkciją, kai vykdoma
turnFordabartinis judėjimas bus nutrauktas.turnFornaudoja tikslinį kampą, todėl su juo galima naudotiisDoneirisMoving.
// 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 pavarą naudodamas dabartinį 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.
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 naudojamas vėlesnėse pavaros judėjimo funkcijose, 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.
NotesPasukimo greitis naudojamas vėlesnėse pavaros posūkio funkcijose, 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 naudojamas vėlesniuose
stopiškvietimuose, nebent funkcijos iškvietime būtų nurodytas konkretus stabdymo režimas.Jei ši funkcija nenaudojama, robotas stabdydamas naudos
brake.
setTimeout#
setTimeout nustato, kiek laiko 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.
NotesLaiko apribojimas taikomas tik pavaros funkcijoms, kurios juda į taikinį, pvz.,
driveForirturnFor.
// Turn right after driving forward.
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į.
Jis gali grąžinti greitį procentais, rpmarba dpsTeigiama reikšmė reiškia, kad robotas važiuoja į priekį. Neigiama reikšmė reiškia, kad robotas važiuoja atbuline eiga.
double velocity(
velocityUnits units );
Parametras |
Tipas |
Aprašymas |
|---|---|---|
|
|
Grąžinamo greičio vienetas: |
Grąžina transmisijos greitį kaip double pasirinktu vienetu.
// 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 elektros srovę procentais.
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 blokas: |
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 galią, 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 grąžinti 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 reikšmė
50%reiškia, kad vidutinė variklio temperatūra yra apie45°C(113°F).The typical operating temperature range for the drivetrain is about
20°C(68°F) to70°C(158°F).
įtampa#
voltage grąžina pavaros elektrinę į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.