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 |
|---|---|
|
Robotin liikesuunta: |
# 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 |
|---|---|
|
Robotin liikesuunta: |
|
Robotin ajama matka. Tämä voi olla kokonaisluku tai desimaaliluku. |
|
Etäisyyden yksikkö: |
# 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 |
|---|---|
|
Robotin liikesuunta: |
# 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 |
|---|---|
|
Robotin kääntymissuunta: |
# 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 |
|---|---|
|
Robotin kääntymissuunta: |
|
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 |
|---|---|
|
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 |
|---|---|
|
Liikkeen käytettävissä oleva aika. Tämä voi olla kokonaisluku tai desimaaliluku. |
|
Aikayksikkö: |
# 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 |
|---|---|
|
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())