Voimansiirto#

Johdanto#

123-robotissa on kaksipyöräinen voimansiirto, jonka avulla se voi ajaa ja kääntyä. Voimansiirtomenetelmät ohjaavat robotin liikkumista.

Voimansiirto voi mitata matkaa kahdella tavalla: askelin ja millimetrin avulla. Yksi askel on yksi neliö 123 Field -kiekolla.

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.

  • drive_until — Liikuttaa robottia eteen- tai taaksepäin, kunnes se havaitsee esineen, törmäyksen tai viivan.

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

  • stop — Pysäyttää robotin liikkeen.

Mutaattorit — Säädä voimansiirron asetuksia.

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

  • set_heading — Muuttaa robotin nykyisen suunnan uudeksi suunnaksi.

Getterit — Tarkista liikkeen tila.

  • is_stopped — Palauttaa totuusarvona tiedon siitä, onko robotti pysähtynyt liikkumaan.

  • get_heading — Palauttaa robotin nykyisen suunnan 0–359 astetta.

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:
robot.drive(direction)

Parametrit

Kuvaus

direction

Robotin liikesuunta: FORWARD tai REVERSE.

# Drive for 2 seconds.
robot.drive(FORWARD)
wait(2, SECONDS)
robot.stop()

drive_for#

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

Usage:
robot.drive_for(direction, distance, unit)

Parametrit

Kuvaus

direction

Robotin liikesuunta: FORWARD tai REVERSE.

distance

Robotin ajama matka. Tämä voi olla kokonaisluku tai desimaaliluku.

unit

Etäisyyden yksikkö: MM (millimetriä) tai STEPS (yksi ruutu 123-kentässä).

# Drive back and forth.
robot.drive_for(FORWARD, 3, STEPS)
robot.drive_for(REVERSE, 3, STEPS)

drive_until#

drive_until liikuttaa robottia eteen- tai taaksepäin, kunnes se havaitsee esineen, törmäyksen tai viivan.

Usage:
robot.drive_until(direction)

Parametrit

Kuvaus

direction

Robotin liikesuunta: FORWARD tai REVERSE.

# Reverse after a crash.
robot.drive_until(FORWARD)
robot.drive_for(REVERSE, 1, STEPS)

turn#

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

Usage:
robot.turn(direction)

Parametrit

Kuvaus

direction

Robotin kääntymissuunta: LEFT tai RIGHT.

# Turn for 2 seconds.
robot.turn(RIGHT)
wait(2, SECONDS)
robot.stop()

turn_for#

turn_for kääntää robottia vasemmalle tai oikealle tietyn astemäärän. Projekti odottaa, kunnes robotti on kääntynyt, ennen kuin seuraava koodirivi suoritetaan.

Usage:
robot.turn_for(direction, degrees)

Parametrit

Kuvaus

direction

Robotin kääntymissuunta: LEFT tai RIGHT.

degrees

Kääntyvien asteiden määrä. Tämä voi olla kokonaisluku tai desimaaliluku.

# Turn left, then turn around to the right.
robot.turn_for(LEFT, 90)
robot.turn_for(RIGHT, 180)

turn_to_heading#

turn_to_heading kääntää robotin tiettyyn suuntaan -359 - 359 astetta. Robotti kääntyy lyhyimpään suuntaan saavuttaakseen kohdesuunnan.

Lähtösuunta on 0 astetta.

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

Usage:
robot.turn_to_heading(heading)

Parametrit

Kuvaus

heading

Robotin suunta, johon sen tulisi osoittaa, -359 - 359 astetta.

# Turn to face the cardinal directions.
robot.turn_to_heading(90)
wait(2, SECONDS)
robot.turn_to_heading(180)
wait(2, SECONDS)
robot.turn_to_heading(270)
wait(2, SECONDS)
robot.turn_to_heading(0)
wait(2, SECONDS)

stop#

stop pysäyttää robotin liikkeen.

Usage:
robot.stop()

Parametrit

Kuvaus

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

# Stop driving after 4 seconds.
robot.drive(FORWARD)
wait(4, SECONDS)
robot.stop()

Mutaattorit#

set_timeout#

set_timeout määrittää, kuinka monta sekuntia 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:
robot.set_timeout(time, unit)

Parametrit

Kuvaus

time

Liikkeen käytettävissä oleva aika. Tämä voi olla kokonaisluku tai desimaaliluku.

unit

Aikayksikkö: MSEC tai SECONDS.

# Turn right after driving for 1 second.
robot.set_timeout(1, SECONDS)
robot.drive_for(FORWARD, 1000, MM)
robot.turn_for(RIGHT, 90)

set_heading#

set_heading muuttaa robotin nykyisen suunnan uuteen suunta-arvoon.

Jos esimerkiksi robotti on kääntynyt oikealle, suunnan asettaminen 0 asteeseen tekee oikealle osoittavasta asennosta uuden 0 asteen.

Usage:
robot.set_heading(heading)

Parametrit

Kuvaus

heading

Robotille asetettava suunta-arvo asteina.

# Face the new 0 degree heading.
robot.set_heading(90)
robot.turn_to_heading(0)

Getterit#

is_stopped#

is_stopped palauttaa Boolean, joka ilmoittaa, onko robotti pysähtynyt.

  • True — Robotti on pysäytetty.

  • False — Robotti liikkuu edelleen.

Usage:
robot.is_stopped()

Parametrit

Kuvaus

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

# Glow blue after a crash.
robot.drive_until(FORWARD)
while True:
    if robot.is_stopped():
        robot.led.glow(BLUE)
    else:
        robot.led.glow(GREEN)
    wait(0.05, SECONDS)

get_heading#

get_heading palauttaa robotin nykyisen kulmasuunnan kokonaislukuna väliltä 0 - 359 astetta.

Robotin lähtösuunta on 0 astetta.

Usage:
robot.get_heading()

Parametrit

Kuvaus

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

# Display the heading after turning.
robot.turn_for(RIGHT, 450)
console.print(robot.get_heading())