Voimansiirto#

Johdanto#

Voimansiirto ohjaa VR-robotin ajo- ja kääntymistapoja. Voimansiirto voi liikkua eteen- tai taaksepäin, kääntyä vasemmalle tai oikealle, kääntyä eri suuntiin ja seurata pyörimistään.

Voimansiirron koodaamiseen on monia tapoja. Alla on luettelo kaikista voimansiirron metodeista:

Toiminnot — Liikuta ja käännä robottia.

  • drive — Liikuttaa robottia eteen- tai taaksepäin pysyvästi.

  • drive_for — Liikuttaa robottia eteen- tai taaksepäin tietyn matkan.

  • turn — Kääntää robottia vasemmalle tai oikealle ikuisesti.

  • turn_for — Kääntää robottia vasemmalle tai oikealle tietyn astemäärän.

  • turn_to_heading — Kääntää robotin tiettyyn suuntaan -359 - 359 astetta.

  • turn_to_rotation — Kääntää robotin tiettyyn pyörimissuuntaan.

  • stop — Pysäyttää robotin liikkeen.

Mutaattorit — Säädä voimansiirron asetuksia.

  • set_heading — Muuttaa robotin nykyisen suunnan uudeksi suunnaksi.

  • set_rotation — Muuttaa robotin nykyisen pyörimissuunnan uudeksi pyörimissuunnaksi.

  • set_timeout — Asettaa, kuinka kauan robotti yrittää suorittaa liikkeen loppuun.

  • set_drive_velocity — Kertoo robotille, kuinka nopeasti sen tulisi ajaa.

  • set_turn_velocity — Kertoo robotille, kuinka nopeasti sen tulisi kääntyä.

Getterit — Tarkista voimansiirron tila.

  • heading — Palauttaa robotin nykyisen suunnan 0–359,99 astetta.

  • rotation — Palauttaa robotin nykyisen rotaatioasteen.

  • is_done — Palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen.

  • is_moving — Palauttaa totuusarvona tiedon siitä, liikkuuko robotti.

Toiminnot#

drive#

drive liikuttaa robottia eteen- tai taaksepäin ikuisesti. Robotti jatkaa liikkumista, kunnes sille annetaan toinen toiminto, kuten kääntyminen tai pysähtyminen.

Usage:
drivetrain.drive(direction)

Parametrit

Kuvaus

direction

Robotin liikesuunta: FORWARD tai REVERSE.

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

drive_for#

drive_for liikuttaa robottia eteen- tai taaksepäin tietyn matkan. Projekti odottaa, kunnes robotti on liikkunut loppuun ennen seuraavan koodirivin suorittamista.

Usage:
drivetrain.drive_for(direction, distance, units, wait)

Parametrit

Kuvaus

direction

Robotin liikesuunta: FORWARD tai REVERSE.

distance

Robotin ajama matka. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Etäisyyden yksikkö: INCHES (oletus) tai MM (millimetriä).

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes robotti on liikkunut, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

def main():
    # Drive forward and backward
    drivetrain.drive_for(FORWARD, 200, MM)
    drivetrain.drive_for(REVERSE, 200, MM)

# VR threads — Do not delete
vr_thread(main)

turn#

turn kääntää robottia vasemmalle tai oikealle ikuisesti. Robotti jatkaa kääntymistä, kunnes sille annetaan toinen toiminto, kuten ajaminen tai pysähtyminen.

Usage:
drivetrain.turn(direction)

Parametrit

Kuvaus

direction

Robotin kääntymissuunta: LEFT tai RIGHT.

def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

turn_for#

turn_for kääntää robottia vasemmalle tai oikealle tietyn astemäärän. Käännös on suhteessa robotin nykyiseen sijaintiin. Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.

Usage:
drivetrain.turn_for(direction, angle, units, wait)

Parametrit

Kuvaus

direction

Robotin kääntymissuunta: LEFT tai RIGHT.

angle

Robotin kääntymisasteiden määrä. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Kiertoyksikkö: DEGREES (oletus).

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

def main():
    # Turn the robot right and left
    drivetrain.turn_for(RIGHT, 90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_for(LEFT, 90, DEGREES)

# VR threads — Do not delete
vr_thread(main)

turn_to_heading#

Suunta on robotin osoittama suunta asteina. turn_to_heading kääntää robotin tiettyyn suuntaan -359 ja 359 asteen välillä. Robotti kääntyy lyhyimpään suuntaan saavuttaakseen kohdesuunnan.

Robotin lähtösuunta on 0 astetta.

Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.

Usage:
drivetrain.turn_to_heading(angle, units, wait)

Parametrit

Kuvaus

angle

Robotin suunta asteina. Tämä voi olla kokonaisluku integer tai desimaaliluku (float) väliltä -359 - 359.

units

Valinnainen. Kiertoyksikkö: DEGREES (oletus).

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

def main():
    # Turn to face the cardinal directions
    drivetrain.turn_to_heading(90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(180, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(270, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

turn_to_rotation#

turn_to_rotation kääntää robotin tiettyyn pyörähdyssuuntaan.

Rotaatio ilmaisee robotin kääntymismäärän asteina. Projektin alussa rotaatioarvoksi asetetaan 0 astetta. Rotaatio voidaan asettaa myös set_rotation-metodilla.

Rotaatioarvot ovat absoluuttisia. Tämä tarkoittaa, että käännöksen suunta riippuu robotin nykyisestä pyörimisestä. Oikealle kääntäminen lisää pyörimistä ja vasemmalle kääntäminen vähentää niitä.

Jos esimerkiksi robotti aloittaa 0 asteen kulmasta ja käännyt 720 asteen kierrokseen, se kääntyy kahdesti oikealle. Jos sitten käännyt 360 astetta, se kääntyy kerran vasemmalle, koska 360 on pienempi kuin 720.

Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.

Usage:
drivetrain.turn_to_rotation(angle, units, wait)

Parametrit

Kuvaus

angle

Robotin kääntymisaika asteina. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Kiertoyksikkö: DEGREES (oletus).

wait

Valinnainen. wait=True (oletus) saa projektin odottamaan, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan. wait=False saa seuraavan koodirivin suoritettavaksi heti.

def main():
    # Turn left, then spin in a circle
    # clockwise and face right
    drivetrain.turn_to_rotation(-90, DEGREES)
    wait(1, SECONDS)
    drivetrain.turn_to_rotation(450, DEGREES)

# VR threads — Do not delete
vr_thread(main)

stop#

stop pysäyttää robotin liikkeen.

Usage:
drivetrain.stop()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# VR threads — Do not delete
vr_thread(main)

Mutaattorit#

set_heading#

Suunta on robotin suunta asteina mitattuna. set_heading muuttaa robotin nykyisen suunnan uuteen suunta-arvoon.

Jos esimerkiksi robotti on kääntynyt oikealle ja suunnan asettaminen 0 asteeseen tekee oikealle osoittavasta asennosta uuden 0 asteen. Tämän jälkeen robotti voi kääntyä muihin asentoihin tämän uuden suunnan perusteella.

Usage:
drivetrain.set_heading(heading, units)

Parametrit

Kuvaus

heading

Robotille asetettava suunta-arvo asteina. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Kulmayksikkö: DEGREES (oletus).

def main():
    # Face the new 0 degrees
    drivetrain.set_heading(90, DEGREES)
    drivetrain.turn_to_heading(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_rotation#

Rotaatio ilmaisee robotin kääntymismäärän asteina. Projektin alussa rotaatioarvoksi asetetaan 0 astetta. set_rotation muuttaa robotin nykyisen rotaation uuteen arvoon.

Jos robotti on esimerkiksi tehnyt kaksi täyttä käännöstä oikealle, sen kiertoarvo on 720 astetta. Kierron asettaminen 0 asteeseen palauttaa kiertoarvon 720 asteesta 0 asteeseen. Tämän jälkeen robotti voi tehdä kiertoja tämän uuden arvon perusteella.

Usage:
drivetrain.set_rotation(rotation, units)

Parametrit

Kuvaus

rotation

Robotille asetettava kiertoarvo asteina. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Kiertoyksikkö: DEGREES (oletus).

def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720, DEGREES)
    drivetrain.turn_to_rotation(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

set_timeout 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.

Usage:
drivetrain.set_timeout(value, units)

Parametrit

Kuvaus

value

Aika, jonka robotti voi yrittää suorittaa liikkeen loppuun. Tämä voi olla positiivinen kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Aikayksikkö: SECONDS (oletus) tai MSEC (millisekuntia).

def main():
    # Turn right after driving forward
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# VR threads — Do not delete
vr_thread(main)

set_drive_velocity#

set_drive_velocity 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.

Usage:
drivetrain.set_drive_velocity(velocity, units)

Parametrit

Kuvaus

velocity

Ajonopeus välillä 0–100 %. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Nopeuden yksikkö: PERCENT (oletus).

def main():
    # Drive forward at different velocities
    # Default velocity
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive slower
    drivetrain.set_drive_velocity(20, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)
    wait(1, SECONDS)
    # Drive faster
    drivetrain.set_drive_velocity(100, PERCENT)
    drivetrain.drive_for(FORWARD, 150, MM)

# VR threads — Do not delete
vr_thread(main)

set_turn_velocity#

set_turn_velocity 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.

Usage:
drivetrain.set_turn_velocity(velocity, units)

Parametrit

Kuvaus

velocity

Kääntymisnopeus väliltä 0–100 %. Tämä voi olla kokonaisluku integer tai desimaaliluku (float).

units

Valinnainen. Nopeuden yksikkö: PERCENT (oletus).

def main():
    # Turn at different velocities
    # Default velocity
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn slower
    drivetrain.set_turn_velocity(20, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)
    wait(1, SECONDS)
    # Turn faster
    drivetrain.set_turn_velocity(100, PERCENT)
    drivetrain.turn_for(RIGHT, 120, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Getterit#

heading#

Suunta on robotin suunta asteina. heading palauttaa robotin nykyisen suunnan 0–359,99 astetta.

Robotin lähtösuunta on 0 astetta.

Usage:
drivetrain.heading(units)

Parametrit

Kuvaus

units

Valinnainen. Kulmayksikkö: DEGREES (oletus).

def main():
    # Display the heading after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.print("Heading: ")
    brain.print(drivetrain.heading(DEGREES))

# VR threads — Do not delete
vr_thread(main)

rotation#

Rotaatio ilmaisee robotin kääntymismäärän asteina. Projektin alussa rotaatioarvoksi asetetaan 0 astetta. rotation palauttaa robotin nykyisen rotaation.

Kääntyminen oikealle lisää kiertoliikettä ja kääntäminen vasemmalle vähentää sitä. Esimerkiksi kahden täyden käännöksen tekeminen oikealle palauttaa 720 asteen kiertoliikkeen.

Usage:
drivetrain.rotation(units)

Parametrit

Kuvaus

units

Valinnainen. Kiertoyksikkö: DEGREES (oletus).

def main():
    # Display the rotation after turning
    drivetrain.turn_for(RIGHT, 450, DEGREES)
    brain.print("Rotation: ")
    brain.print(drivetrain.rotation(DEGREES))

# VR threads — Do not delete
vr_thread(main)

is_done#

is_done palauttaa totuusarvona tiedon siitä, onko robotti lopettanut liikkumisen. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien toimintojen ajoituksen hallintaan.

  • True — Robotti on lopettanut liikkumisen.

  • False — Robotti liikkuu edelleen.

Tämä metodi toimii yhdessä seuraavien Drivetrain-metodien kanssa, joilla on wait -parametri: drive_for, turn_for, turn_to_heading ja turn_to_rotation.

Usage:
drivetrain.is_done()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.

is_moving#

is_moving palauttaa totuusarvona tiedon siitä, liikkuuko robotti. Tätä voidaan käyttää muiden robotin liikkeeseen perustuvien toimintojen ajoituksen hallintaan.

  • True — Robotti liikkuu.

  • False — Robotti ei liiku.

Usage:
drivetrain.is_moving()

Parametrit

Kuvaus

Tällä menetelmällä ei ole parametreja.