Pavarų dėžė#
Įvadas#
Pavaros sistema kontroliuoja VR roboto judėjimą ir posūkius. Pavaros sistema gali judėti pirmyn arba atgal, pasukti į kairę arba į dešinę, pasukti norima kryptimi ir sekti savo sukimąsi.
Yra daug būdų, kaip koduoti pavaros sistemą. Žemiau pateikiamas visų pavaros sistemų metodų sąrašas:
Veiksmai — Judinti ir pasukti robotą.
drive— Robotas judina pirmyn arba atgal amžinai.drive_for— Robotas juda pirmyn arba atgal tam tikru atstumu.turn— Robotas visam laikui pasukamas į kairę arba į dešinę.turn_for— Robotas pasukamas į kairę arba į dešinę tam tikru laipsnių skaičiumi.turn_to_heading— Robotas pasukamas tam tikra kryptimi nuo -359 iki 359 laipsnių.turn_to_rotation— Įjungia roboto sukimąsi konkrečia kryptimi.stop— Sustabdo roboto judėjimą.
Mutatoriai – reguliuojami pavaros nustatymai.
set_heading— Pakeičia dabartinę roboto kryptį į naują.set_rotation— Pakeičia dabartinį roboto sukimąsi į naują.set_timeout— Nustato, kiek laiko robotas bandys užbaigti judesį.set_drive_velocity— Nurodo robotui, kokiu greičiu važiuoti.set_turn_velocity— Nurodo robotui, kaip greitai jis turi suktis.
Getteriai – patikrinkite pavaros sistemos būseną.
Veiksmai#
drive#
drive robotą judina pirmyn arba atgal amžinai. Robotas judės tol, kol jam bus duotas kitas veiksmas, pvz., pasisukti arba sustoti.
Usage:
drivetrain.drive(direction)
Parametrai |
Aprašymas |
|---|---|
|
Roboto judėjimo kryptis: |
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 robotą judina pirmyn arba atgal tam tikru atstumu. Projektas lauks, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto judėjimo kryptis: |
|
Atstumas, kurį nuvažiuoja robotas. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Atstumo vienetas: |
|
Pasirinktinai. |
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 suka robotą į kairę arba į dešinę amžinai. Robotas suksis tol, kol jam bus duotas kitas veiksmas, pavyzdžiui, važiuoti arba sustoti.
Usage:
drivetrain.turn(direction)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi kryptis: |
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 pasuka robotą į kairę arba į dešinę tam tikru laipsnių skaičiumi. Posūkis yra santykinis dabartinės roboto padėties atžvilgiu. Projektas lauks, kol robotas baigs pasisukti, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi kryptis: |
|
Laipsnių, kuriais robotas pasisuka, skaičius. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Pasukimo vienetas: |
|
Pasirinktinai. |
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#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais. turn_to_heading pasuka robotą tam tikra kryptimi nuo -359 iki 359 laipsnių. Robotas pasuks trumpiausia kryptimi, kad pasiektų tikslinę kryptį.
Roboto pradinė kryptis yra 0 laipsnių.
Projektas lauks, kol robotas baigs suktis, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Kryptis, kuria robotas turėtų pasukti, laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Pasukimo vienetas: |
|
Pasirinktinai. |
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 pasuka robotą į tam tikrą sukimosi kryptį.
Sukimas rodo, kiek robotas pasisuko, matuojamas laipsniais. Projekto pradžioje sukimosi vertė nustatoma į 0 laipsnių. Sukimą taip pat galima nustatyti naudojant set_rotation metodą.
Sukimosi vertės yra absoliučios. Tai reiškia, kad posūkio kryptis priklauso nuo roboto dabartinio sukimosi. Sukant į dešinę, sukimasis padidėja, o sukant į kairę – sumažėja.
Pavyzdžiui, jei robotas pradeda judėti nuo 0 laipsnių ir jūs pasisukate 720 laipsnių kampu, jis du kartus pasisuks į dešinę. Jei tada pasisuksite 360 laipsnių kampu, jis vieną kartą pasisuks į kairę, nes 360 laipsnių yra mažiau nei 720.
Projektas lauks, kol robotas baigs suktis, prieš paleidžiant kitą kodo eilutę.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Pasukimo vienetas: |
|
Pasirinktinai. |
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 sustabdo roboto judėjimą.
Usage:
drivetrain.stop()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutatoriai#
set_heading#
Kryptis – tai roboto judėjimo kryptis, matuojama laipsniais. set_heading pakeičia dabartinę roboto kryptį į naują krypties reikšmę.
Pavyzdžiui, jei robotas pasisuko veidu į dešinę, nustačius 0 laipsnių kryptį, ta nukreipta į dešinę pozicija tampa nauja 0 laipsnių. Tada robotas gali pasisukti į kitas pozicijas, remdamasis ta nauja kryptimi.
Usage:
drivetrain.set_heading(heading, units)
Parametrai |
Aprašymas |
|---|---|
|
Roboto krypties vertė laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Antraštės vienetas: |
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#
Sukimas rodo, kiek robotas pasisuko, matuojamas laipsniais. Projekto pradžioje sukimosi vertė nustatoma į 0 laipsnių. set_rotation pakeičia dabartinę roboto sukimosi vertę į naują.
Pavyzdžiui, jei robotas atliko du pilnus posūkius į dešinę, jo sukimosi vertė bus 720 laipsnių. Nustačius sukimąsi į 0 laipsnių, sukimasis bus atstatytas iš 720 į 0 laipsnių. Tada robotas galės atlikti sukimus pagal tą naują vertę.
Usage:
drivetrain.set_rotation(rotation, units)
Parametrai |
Aprašymas |
|---|---|
|
Roboto sukimosi vertė laipsniais. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Pasukimo vienetas: |
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 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.
Usage:
drivetrain.set_timeout(value, units)
Parametrai |
Aprašymas |
|---|---|
|
Laikas, per kurį robotas gali bandyti užbaigti judesį. Tai gali būti teigiamas sveikasis skaičius |
|
Pasirinktinai. Laiko vienetas: |
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 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.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parametrai |
Aprašymas |
|---|---|
|
Važiavimo greitis nuo 0 % iki 100 %. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Greičio vienetas: |
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 nurodo robotui, kaip greitai jis turi 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.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parametrai |
Aprašymas |
|---|---|
|
Sukimosi greitis nuo 0 % iki 100 %. Tai gali būti sveikasis skaičius |
|
Pasirinktinai. Greičio vienetas: |
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)
Getteriai#
heading#
Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais. heading grąžina dabartinę roboto kryptį nuo 0 iki 359,99 laipsnių.
Roboto pradinė kryptis yra 0 laipsnių.
Usage:
drivetrain.heading(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Antraštės vienetas: |
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#
Sukimas rodo, kiek robotas pasisuko, matuojamas laipsniais. Projekto pradžioje sukimosi vertė nustatoma į 0 laipsnių. rotation grąžina dabartinį roboto sukimąsi.
Sukant į dešinę, sukimasis padidėja, o sukant į kairę – sumažėja. Pavyzdžiui, padarius du pilnus posūkius į dešinę, sukimasis bus 720 laipsnių.
Usage:
drivetrain.rotation(units)
Parametrai |
Aprašymas |
|---|---|
|
Pasirinktinai. Pasukimo vienetas: |
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 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.
True— Robotas baigė judėti.False— Robotas vis dar juda.
Šis metodas veikia kartu su šiais „Drivetrain“ metodais, turinčiais parametrą wait : drive_for, turn_for, turn_to_heading ir turn_to_rotation.
Usage:
drivetrain.is_done()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |
is_moving#
is_moving grąžina, ar robotas juda, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.
True— Robotas juda.False— Robotas nejuda.
Usage:
drivetrain.is_moving()
Parametrai |
Aprašymas |
|---|---|
Šis metodas neturi parametrų. |