Voimansiirto#
Johdanto#
Voimansiirtoluokka drivetrain ohjaa robotin liikkumista ja kääntymistä. Voimansiirto koostuu moottoreista ja pyöristä, jotka yhdessä liikuttavat robottia.
drivetrain ei käytä gyroskooppia tai inertia-anturia suunta- tai rotaatiopohjaisiin käännöksiin. Se voi ajaa eteen- tai taaksepäin ja kääntyä vasemmalle tai oikealle, mutta se ei voi kääntyä tiettyyn suuntaan tai rotaatioon. Suunta- ja rotaatiopohjaisiin käännöksiin käytä smartdrive-luokkaa.
Tällä sivulla käytetään esimerkkinä voimansiirron nimeä myDrivetrain Korvaa se tarvittaessa omalla määritetyllä nimelläsi.
Johdetut luokat#
Luokka drivetrain toimii perusluokkana seuraavalle johdetulle luokalle:
smartdrive- Luo voimansiirron, joka tukee gyroskooppia tai inertia-anturia.
Luokanrakentajat#
1 - Luo voimansiirron käyttämällä olemassa olevia
motor_group-objektia vasemmalle ja oikealle puolelle.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Luo voimansiirron käyttämällä olemassa olevia
motor-objekteja vasemmalle ja oikealle puolelle.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Luokan tuhoaja#
Tuhoaa drivetrain -objektin ja vapauttaa siihen liittyvät resurssit.
virtual ~drivetrain();
Parametrit#
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Vasen ja oikea moottori tai moottoriryhmä. Molempien parametrien on käytettävä samaa tyyppiä: joko kaksi |
|
|
Voimansiirron pyörien ympärysmitta. Oletusarvo on |
|
|
Vasemman ja oikean pyörän välinen etäisyys. Oletusarvo on |
|
|
Etu- ja takapyörien välinen etäisyys. Oletusarvo on |
|
|
Yksikkö |
|
|
Välityssuhde, jota käytetään ajomatkojen säätämiseen, jos vaihteita käytetään. Oletusarvo on |
Esimerkki#
// 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
Jäsenten toiminnot#
Luokka drivetrain sisältää seuraavat jäsenfunktiot:
Toiminnot - Liikuta ja käännä robottia.
drive- Liikuttaa robottia eteen- tai taaksepäin pysyvästi.driveFor- Liikuttaa robottia eteen- tai taaksepäin tietyn matkan.turn- Kääntää robottia vasemmalle tai oikealle pysyvästi.turnFor- Kääntää robottia vasemmalle tai oikealle tietyn aste- tai kierrosmäärän.stop- Pysäyttää robotin liikkeen.
Asetukset – Säädä voimansiirron asetuksia.
setDriveVelocity- Kertoo robotille, kuinka nopeasti sen tulisi ajaa.setTurnVelocity- Kertoo robotille, kuinka nopeasti sen tulisi kääntyä.setStopping- Kertoo, miten robotti pysähtyy: jarruttamalla, rullaamalla tai pitämällä paikallaan.setTimeout- Määrittää, kuinka kauan robotti yrittää suorittaa liikkeen loppuun.
Arvot - Tarkista liikkeen tila.
isDone- Palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen.isMoving- Palauttaa totuusarvona tiedon siitä, liikkuuko robotti.velocity- Palauttaa robotin ajonopeuden.current- Palauttaa voimansiirron käyttämän sähkövirran määrän.power- Palauttaa, kuinka nopeasti voimansiirto kuluttaa energiaa.torque- Palauttaa voimansiirron käyttämän vääntömomentin.efficiency- Palauttaa, kuinka tehokkaasti voimansiirto käyttää tehoa.temperature- Palauttaa voimansiirron lämpötilan.voltage- Palauttaa voimansiirron sähköisen jännitteen.
Ennen minkään drivetrain -jäsenfunktion kutsumista on luotava drivetrain -objekti.
/* 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
Toiminnot#
ajaa#
drive liikuttaa robottia eteen- tai taaksepäin ikuisesti. Robotti jatkaa liikkumista, kunnes sille annetaan toinen toiminto, kuten kääntyminen tai pysähtyminen.
1 - Ajaa käyttäen nykyistä ajonopeutta.
void drive( directionType dir );
Parameters2 - Ajaa määritetyllä nopeudella.
void drive( directionType dir, double velocity, velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Robotin liikesuunta: |
|
|
Ajonopeus 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
Tämä funktio ei palauta arvoa.
Notesdriveei odota. Projekti suorittaa seuraavan koodirivin heti.Robotti jatkaa liikkumista, kunnes kutsutaan
stoptai jokin toinen voimansiirron liikefunktio suoritetaan.isDonejaisMovingeivät ole käytössädrivekanssa, koskadriveei ole tavoiteetäisyyttä.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
ajaaFor#
driveFor liikuttaa robottia eteen- tai taaksepäin tietyn matkan. Projekti odottaa, kunnes robotti on liikkunut loppuun ennen seuraavan koodirivin suorittamista.
1 - Ajaa määritettyyn suuntaan tietyn matkan käyttäen nykyistä ajonopeutta.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Ajaa suuntaan, joka perustuu etäisyysarvoon käyttäen nykyistä ajonopeutta.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Ajaa etäisyyden arvoon perustuvaan suuntaan määritetyllä nopeudella.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Ajaa määritettyyn suuntaan tietyn matkan määritetyllä nopeudella.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Robotin liikesuunta: |
|
|
Robotin ajama matka. |
|
|
Etäisyyden yksikkö: |
|
|
Ajonopeus 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
|
|
|
Palauttaa totuusarvona, saavuttiko robotti kohdeetäisyyden.
true- Robotti saavutti kohdeetäisyyden.false- Robotti ei saanut liikettä valmiiksi, tai funktio palautti ennen liikkeen valmistumista, koskawaitForCompletionoli asetettu arvoonfalse.
Toisen voimansiirron liikefunktion suorittaminen
driveForollessa käynnissä keskeyttää nykyisen liikkeen.driveForkäyttää tavoiteetäisyyttä, jotenisDonejaisMovingvoidaan käyttää sen kanssa.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
käännös#
turn kääntää robottia vasemmalle tai oikealle ikuisesti. Robotti jatkaa kääntymistä, kunnes sille annetaan toinen toiminto, kuten ajaminen tai pysähtyminen.
1 - Kääntyy käyttäen nykyistä kääntymisnopeutta.
void turn( turnType dir );
Parameters2 - Kääntyy määritetyllä nopeudella.
void turn( turnType dir, double velocity, velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Robotin kääntymissuunta: |
|
|
Kääntymisnopeus välillä 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
Tämä funktio ei palauta arvoa.
Notesturnei odota. Projekti suorittaa seuraavan koodirivin heti.Robotti jatkaa kääntymistä, kunnes kutsutaan komentoa
stoptai jokin toinen voimansiirron liikefunktio suoritetaan.isDonejaisMovingeivät ole käytössäturnkanssa, koskaturnei ole kohdekulmaa.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
käännyFor#
turnFor kääntää robottia vasemmalle tai oikealle tietyn määrän asteita, kierroksia tai raakayksiköitä. Käännös on suhteessa robotin nykyiseen sijaintiin. Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.
1 - Kääntyy määritetyn kulman verran käyttäen nykyistä kääntymisnopeutta.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Kääntyy määritettyyn suuntaan kulman verran käyttäen nykyistä kääntymisnopeutta.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Kääntyy määritetyn kulman verran määritetyllä nopeudella.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Kääntyy annettuun suuntaan tietyn kulman verran määritetyllä nopeudella.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Robotin kääntymissuunta: |
|
|
Robotin kääntymismäärä. |
|
|
Käännöksen yksikkö: |
|
|
Kääntymisnopeus välillä 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
|
|
|
Palauttaa totuusarvona, saavuttiko robotti kohdekulman.
true- Robotti saavutti kohdekulman.false- Robotti ei saanut käännöstä valmiiksi, tai funktio palautti ennen käännöksen päättymistä, koskawaitForCompletionoli asetettu arvoonfalse.
Toisen voimansiirron liikefunktion suorittaminen funktion
turnForollessa käynnissä keskeyttää nykyisen liikkeen.turnForkäyttää kohdekulmaa, jotenisDonejaisMovingvoidaan käyttää sen kanssa.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
Stop#
stop pysäyttää robotin liikkeen. Jos pysäytystapa on annettu, se ohjaa sitä, miten robotti pysähtyy tätä funktiokutsua varten.
1 - Pysäyttää voimansiirron nykyisellä pysäytystavalla.
void stop();
Parameters2 - Pysäyttää voimansiirron määritetyllä pysäytystavalla.
void stop( brakeType mode );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Näin robotti pysähtyy:
|
Tämä funktio ei palauta arvoa.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutaattorit#
setDriveVolicity#
setDriveVelocity kertoo robotille, kuinka nopeasti sen tulisi ajaa. Suurempi prosenttiosuus saa robotin ajamaan nopeammin ja pienempi prosenttiosuus hidastaa sitä.
Jokainen projekti alkaa robotin ajamalla oletusarvoisesti 50 % nopeudella.
Huomautus: Suurempi nopeus saa robotin ajamaan nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus tekee robotista hitaamman, mutta se voi olla tarkempi.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Ajonopeus välillä 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
Tämä funktio ei palauta arvoa.
NotesMyöhemmät voimansiirron liikefunktiot käyttävät ajonopeutta, ellei funktion kutsussa ole annettu tiettyä nopeutta.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
asetaKäännönNopeus#
setTurnVelocity kertoo robotille, kuinka nopeasti sen tulee kääntyä. Suurempi prosenttiosuus saa robotin kääntymään nopeammin ja pienempi prosenttiosuus hitaammin.
Jokainen projekti alkaa robotin pyöriessä oletusarvoisesti 50 %:n nopeudella.
Huomautus: Suurempi nopeus saa robotin kääntymään nopeammin, mutta se voi olla epätarkempi. Pienempi nopeus saa robotin kääntymään hitaammin, mutta se voi olla tarkempi.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Kääntymisnopeus välillä 0–100 %, kun käytössä on |
|
|
Nopeuden yksikkö: |
Tämä funktio ei palauta arvoa.
NotesMyöhemmät voimansiirron kääntymisfunktiot käyttävät käännösnopeutta, ellei funktion kutsussa ole annettu tiettyä nopeutta.
// 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 määrittää, miten robotti pysähtyy: jarruttamalla, rullaamalla tai pitämällä paikallaan.
void setStopping(
brakeType mode );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Näin robotti pysähtyy:
|
Tämä funktio ei palauta arvoa.
NotesMyöhemmät
stop-kutsutoiminnot käyttävät tätä pysäytystilaa, ellei funktion kutsussa ole määritetty tiettyä pysäytystilaa.Jos tätä toimintoa ei käytetä, robotti käyttää jarrutusta
brakepysähtyessään.
asetettu aikakatkaisu#
setTimeout määrittää, kuinka kauan robotti yrittää suorittaa liikkeen loppuun. Jos robotti ei pysty suorittamaan sitä tässä ajassa, se lopettaa yrittämisen ja siirtyy seuraavalle koodiriville. Tämä estää robottia jumiutumasta liikkeeseen.
void setTimeout(
int32_t time,
timeUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Aika, jonka robotti voi yrittää suorittaa liikkeen loppuun. Tämän tulee olla positiivinen kokonaisluku. |
|
|
Aikayksikkö: |
Tämä funktio ei palauta arvoa.
NotesAikakatkaisu koskee vain voimansiirtotoimintoja, jotka liikkuvat kohteeseen, kuten
driveForjaturnFor.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getterit#
onValmis#
isDone palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien toimintojen ajoituksen hallintaan.
bool isDone( void );
Tämä funktio ei hyväksy parametreja.
Return Valuestrue- Robotti on lopettanut liikkumisen.false- Robotti liikkuu edelleen.
onLiikkeellä#
isMoving palauttaa totuusarvona tiedon siitä, liikkuuko robotti. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien käyttäytymisten ajoituksen ohjaamiseen.
virtual bool isMoving( void );
Tämä funktio ei hyväksy parametreja.
Return Valuestrue- Robotti liikkuu.false- Robotti ei liiku.
nopeus#
velocity palauttaa robotin ajonopeuden.
Se voi palauttaa nopeuden prosentteina, muodossa rpmtai muodossa dpsPositiivinen arvo tarkoittaa, että robotti ajaa eteenpäin. Negatiivinen arvo tarkoittaa, että robotti ajaa taaksepäin.
double velocity(
velocityUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Palautettava nopeusyksikkö: |
Palauttaa voimansiirron nopeuden muodossa double valitussa yksikössä.
// 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();
nykyinen#
current palauttaa voimansiirron käyttämän sähkövirran määrän. Virta on voimansiirron läpi virtaavan sähkön määrä. Se voidaan palauttaa ampeereina tai prosentteina yksiköstä riippuen.
Korkeampi virta-arvo tarkoittaa, että voimansiirto käyttää enemmän sähkövirtaa. Näin voi käydä, kun robotti työntää jotakin esinettä vasten tai yrittää liikkua jumissa ollessaan.
Tätä voidaan käyttää tarkistamaan, onko voimansiirrossa ongelmia liikkeen aikana. Jos virta pysyy korkeana, voimansiirto voi lämmetä tai käyttää tehoa tehottomammin.
Available Functions1 - Palauttaa voimansiirron sähkövirran ampeereina.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Palauttaa voimansiirron sähkövirran prosentteina.
double current( percentUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Virran palauttava yksikkö: |
|
|
Virran palauttava yksikkö: |
Palauttaa voimansiirron virran muodossa double valitussa yksikössä.
voima#
power palauttaa voimansiirron käyttämän tehon watteina mitattuna. Teho näyttää, kuinka nopeasti voimansiirto kuluttaa energiaa.
Suurempi tehoarvo tarkoittaa, että voimansiirto käyttää energiaa nopeammin. Näin voi käydä, kun robotti työntää jotakin esinettä vasten tai yrittää liikkua jumissa ollessaan.
Tätä voidaan käyttää liikkeiden vertailuun tai voimansiirron ongelmien tarkistamiseen. Jos teho pysyy korkeana, voimansiirto voi lämmetä tai käyttää energiaa tehottomammin.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Tehoyksikkö: |
Palauttaa voimansiirron tehon muodossa double watteina.
vääntömomentti#
Vääntömomentti osoittaa, kuinka voimakkaasti voimansiirto pystyy työntämään tai vetämään pyörien pyöriessä.
torque palauttaa voimansiirron käyttämän vääntömomentin, mitattuna newtonmetreinä (Nm) tai tuumapaunoina (InLb).
Suurempi vääntömomentti tarkoittaa, että voimansiirto työntää tai vetää kovemmin. Näin voi käydä, kun robotti työntää jotakin esinettä vasten tai yrittää liikkua jumissa ollessaan.
Tätä voidaan käyttää tarkistamaan, onko voimansiirrossa ongelmia, tai vertailemaan, kuinka paljon työntövoimaa eri liikkeet tarvitsevat.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Vääntömomentin palautusyksikkö: |
Palauttaa voimansiirron vääntömomentin muodossa double valitussa yksikössä.
tehokkuus#
efficiency palauttaa voimansiirron tehokkuuden prosentteina väliltä 0–100 %.
Hyötysuhde osoittaa, kuinka paljon voimansiirron tehosta käytetään liikkumiseen. Korkeampi hyötysuhdearvo tarkoittaa, että enemmän voimansiirron tehoa käytetään liikkumiseen. Alhaisempi hyötysuhdearvo voi ilmetä, kun voimansiirto työskentelee kovasti, mutta ei liiku paljon, kuten silloin, kun robotti on jumissa tai työntää jotakin esinettä vasten.
Tätä voidaan käyttää liikkeiden vertailuun tai tarkistamaan, tuhlaako voimansiirto tehoa sen sijaan, että käyttäisi sitä liikkumiseen.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Hyötysuhteen palauttava yksikkö muodossa: |
Palauttaa voimansiirron hyötysuhteen muodossa double valitussa yksikössä.
lämpötila#
temperature palauttaa voimansiirron keskilämpötilan prosentteina väliltä 0–100 %.
Lämpötila osoittaa, kuinka lämpimiä voimansiirtomoottorit ovat. Korkeampi lämpötila tarkoittaa, että moottorit lämpenevät käytön aikana. Moottorien lämpötilan tulisi pysyä alle 55 °C:ssa, jotta ne toimivat täydellä teholla.
Jos moottorit kuumenevat liikaa, ne laskevat maksimivirtaansa suojatakseen itseään. 70 °C:ssa moottorit pysähtyvät, kunnes ne jäähtyvät.
Tätä voidaan käyttää tarkistamaan, kuumeneeko voimansiirto liikaa toistuvien liikkeiden, pitkien ajojen tai esinettä vasten painautuessa.
Available Functionsdouble temperature(
percentUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Paluulämpötilan yksikkö: |
Palauttaa voimansiirron keskilämpötilan muodossa double valitussa yksikössä.
Palautettu arvo
50%tarkoittaa, että moottorin keskilämpötila on noin45°C(113°F).The typical operating temperature range for the drivetrain is about
20°C(68°F) to70°C(158°F).
jännite#
voltage palauttaa voimansiirron sähköisen jännitteen.
Jännite on voimansiirron moottoreille syötetty sähköinen paine. Tätä voidaan käyttää virta- ja tehoarvojen kanssa sen ymmärtämiseen, miten voimansiirto käyttää sähköenergiaa.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Jännitteen palauttava yksikkö: |
Palauttaa voimansiirron jännitteen muodossa double valitussa yksikössä.