Judesys#

Įvadas#

VEX AIM kodavimo robotas naudoja holonominę pavaros sistemą, kad galėtų judėti pirmyn, atgal, į kairę, į dešinę arba kampu, taip pat gali savarankiškai pasisukti. Judesio metodai kontroliuoja, kaip robotas juda ir sukasi, kaip greitai jis juda ir kaip sekama jo x ir y padėtis.

Apskritas kompaso ciferblatas nuo 0 iki 315 laipsnių, supantis tamsiai pilką ekraną su tamsiai mėlynu ekranu. Roboto priekis yra nukreiptas 0 laipsnių kampu į kompaso ciferblatą.

Žemiau pateikiamas galimų metodų sąrašas:

Veiksmai — Judinti ir pasukti robotą.

  • move_at — Robotas judina tam tikru kampu amžinai.

  • move_for — Robotas juda tam tikru kampu tam tikru atstumu.

  • move_with_vectors — Robotas judinamas naudojant vektoriais pagrįstas x, y ir sukimosi vertes.

  • turn — Robotas visam laikui pasukamas į kairę arba į dešinę.

  • turn_for — Robotas pasukamas į kairę arba į dešinę tam tikru laipsnių skaičiumi.

  • turn_to — Pasuka robotą konkrečia kryptimi.

  • stop_all_movement — Sustabdo visus roboto judesius.

Mutatoriai – nustato roboto judėjimo vertes.

Getteriai – Grąžina roboto būseną ir poziciją.

Veiksmai#

move_at#

move_at robotą judina tam tikru kampu amžinai. Kampas yra santykinis su dabartine roboto padėtimi. Robotas judės tol, kol jam bus duotas kitas veiksmas, pvz., judėjimas kitu kampu, pasisukimas arba sustojimas.

Naudojimas:

robot.move_at(angle, velocity, units)

Parametrai

Aprašymas

angle

Roboto judėjimo kampas laipsniais. Tai gali būti sveikasis arba dešimtainis skaičius nuo -360 iki 360.

velocity

Pasirinktinai. Judėjimo greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 200 milimetrų per sekundę, kai naudojama MMPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė). Jei greitis nenurodytas, robotas juda dabartiniu judėjimo greičiu.

units

Pasirinktinai. Greičio vienetas: PERCENT (numatytasis) arba MMPS (milimetrai per sekundę).

# Move right, then move forward and stop.
robot.move_at(90)
wait(1,SECONDS)
robot.move_at(0)
wait(1,SECONDS)
robot.stop_all_movement()

# Move right slowly, move in reverse quickly and stop.
robot.move_at(90, 25)
wait(2, SECONDS)
robot.move_at(180, 100, PERCENT)
wait(1, SECONDS)
robot.stop_all_movement()

# Move diagonally to the right and stop.
robot.move_at(45.33)
wait(1,SECONDS)
robot.stop_all_movement()

move_for#

move_for perkelia robotą tam tikru kampu tam tikru atstumu. Kampas yra santykinis su dabartine roboto padėtimi. Projektas lauks, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę.

Naudojimas:

robot.move_for(distance, angle, velocity, units, wait)

Parametrai

Aprašymas

distance

Atstumas, kurį nueina robotas, milimetrais (mm). Tai gali būti sveikasis skaičius arba dešimtainis skaičius (slankioji eilutė).

angle

Roboto judėjimo kampas laipsniais. Tai gali būti sveikasis arba dešimtainis skaičius nuo -360 iki 360.

velocity

Pasirinktinai. Judėjimo greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 200 milimetrų per sekundę, kai naudojama MMPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė). Jei greitis nenurodytas, robotas juda dabartiniu judėjimo greičiu.

units

Pasirinktinai. Greičio vienetas: PERCENT (numatytasis) arba MMPS (milimetrai per sekundę).

wait

Pasirinktinai. wait=True (numatytasis) priverčia projektą laukti, kol robotas baigs judėti, prieš paleidžiant kitą kodo eilutę. wait=False priverčia kitą kodo eilutę paleisti iš karto.

# Move right, then move forward.
robot.move_for(50, 90)
robot.move_for(100, 0)

# Move in reverse slowly, then move forward quickly.
robot.move_for(100, 180, 25)
robot.move_for(100, 0, 100, PERCENT)

# Drive forward and blink all LEDs red.
robot.move_for(100, 0, wait=False)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, RED)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLACK)

move_with_vectors#

Vektorius – tai būdas apibūdinti objekto judėjimo greitį ir kryptį. move_with_vectors – robotas judinamas vektoriumi pagrįstu judėjimu. Robotas sujungia judėjimo į priekį, į dešinę ir sukimosi greičio vertes, kad sukurtų sklandų judėjimą. Robotas judės naudodamas šį vektorių, kol jam bus duotas kitas veiksmas, pvz., judėjimas kitu kampu, pasisukimas arba sustojimas.

Pastaba: Šis metodas nustato judėjimo ir posūkio greičio vertes tiesiogiai, todėl nenaudoja set_move_velocity arba set_turn_velocity.

Naudojimas:

robot.move_with_vectors(forward, rightward, rotation)

Parametrai

Aprašymas

forward

Roboto greitis išilgai y ašies nuo -100 % iki 100 %. Neigiamos vertės robotą judina atgal, o teigiamos – į priekį.

rightward

Roboto greitis išilgai x ašies nuo -100 % iki 100 %. Neigiamos vertės robotą perkelia į kairę, o teigiamos – į dešinę.

rotation

Roboto sukimosi greitis nuo -100 % iki 100 %. Neigiamos vertės suka robotą prieš laikrodžio rodyklę, o teigiamos – pagal laikrodžio rodyklę.

# Move at 15°
robot.move_with_vectors(48.3, 12.95, 0)
wait(2, SECONDS)
robot.stop_all_movement()

# Move at 45° while turning counterclockwise.
robot.move_with_vectors(50, 50, -30)
wait(2, SECONDS)
robot.stop_all_movement()

# Scaling movement using the controller joystick
while True:
    # Move forward (and backwards) slower than axis1 input
    forward   = controller.axis1.position() * 0.7
    
    # Move right (and left) faster than axis2 input
    rightward = controller.axis2.position() * 1.5    

    robot.move_with_vectors(forward, rightward, 0)

    wait(5, MSEC)

turn#

turn suka robotą į kairę arba į dešinę amžinai. Robotas suksis tol, kol jam bus duotas kitas veiksmas, pavyzdžiui, pajudėti arba sustoti.

Naudojimas:

robot.turn(direction, velocity, units)

Parametrai

Aprašymas

direction

Roboto sukimosi kryptis: LEFT arba RIGHT.

velocity

Pasirinktinai. Sukimosi greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 150 laipsnių per sekundę, kai naudojama DPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė). Jei greitis nenurodytas, robotas sukasi dabartiniu posūkio greičiu.

units

Pasirinktinai. Greičio vienetas: DPS (laipsniai per sekundę, numatytoji reikšmė) arba PERCENT.

# Turn left, then stop.
robot.turn(LEFT)
wait(1, SECONDS)
robot.stop_all_movement()

# Turn left quickly, turn right slowly, then stop.
robot.turn(LEFT, 80)
wait(2, SECONDS)
robot.turn(RIGHT, 20, PERCENT)
wait(3, SECONDS)
robot.stop_all_movement()

turn_for#

turn_for pasuka robotą į kairę arba į dešinę tam tikru laipsnių skaičiumi. Posūkis yra santykinis su dabartine roboto judėjimo kryptimi. Projektas lauks, kol robotas baigs pasisukti, prieš paleidžiant kitą kodo eilutę.

Naudojimas:

robot.turn_for(direction, angle, velocity, units, wait)

Parametrai

Aprašymas

direction

Roboto sukimosi kryptis: LEFT arba RIGHT.

angle

Roboto posūkių skaičius laipsniais nuo -360 iki 360 laipsnių. Tai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė).

velocity

Pasirinktinai. Sukimosi greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 150 laipsnių per sekundę, kai naudojama DPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė). Jei greitis nenurodytas, robotas sukasi dabartiniu posūkio greičiu.

units

Pasirinktinai. Greičio vienetas: DPS (laipsniai per sekundę, numatytoji reikšmė) arba PERCENT.

wait

Pasirinktinai. wait=True (numatytasis) priverčia projektą laukti, kol robotas baigs suktis, prieš paleidžiant kitą kodo eilutę. wait=False priverčia kitą kodo eilutę paleidžiama iš karto.

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

# Turn left quickly, then turn right slowly.
robot.turn_for(LEFT, 90, 100)
robot.turn_for(RIGHT, 180, 15, PERCENT)

# Turn right and blink all LEDs blue.
robot.turn_for(RIGHT, 180, wait=False)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, BLUE)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)

turn_to#

Kryptis – tai roboto pasukimo kryptis, matuojama laipsniais. turn_to pasuka robotą tam tikra kryptimi. 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ę.

Naudojimas:

robot.turn_to(heading, velocity, units, wait)

Parametrai

Aprašymas

heading

Roboto kryptis, kuria jis turėtų būti pasuktas, nuo -360 iki 360 laipsnių.

velocity

Pasirinktinai. Sukimosi greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 150 laipsnių per sekundę, kai naudojama DPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė). Jei greitis nenurodytas, robotas sukasi dabartiniu posūkio greičiu.

units

Pasirinktinai. Greičio vienetas: DPS (laipsniai per sekundę, numatytoji reikšmė) arba PERCENT.

wait

Pasirinktinai. wait=True (numatytasis) priverčia projektą laukti, kol robotas baigs suktis, prieš paleidžiant kitą kodo eilutę. wait=False priverčia kitą kodo eilutę paleidžiama iš karto.

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

# Turn to face backward slowly, then face forward quickly.
robot.turn_to(180, 25)
wait(1, SECONDS)
robot.turn_to(0, 90, PERCENT)

# Turn around quickly and blink all LEDs green.
robot.turn_to(180, 100, wait=False)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)
wait(0.5, SECONDS)
robot.led.on(ALL_LEDS, GREEN)
wait(0.5, SECONDS)
robot.led.off(ALL_LEDS)

stop_all_movement#

stop_all_movement sustabdo visus roboto judesius.

Naudojimas:

robot.stop_all_movement()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Turn right, then stop moving
robot.turn(RIGHT)
wait(1, SECONDS)
robot.stop_all_movement()

Mutatoriai#

set_move_velocity#

set_move_velocity nurodo robotui, kaip greitai judėti. Didesnis procentas leidžia robotui judėti greičiau, o mažesnis – lėčiau.

Kiekvienas projektas prasideda nuo to, kad robotas pagal numatytuosius nustatymus juda 50 % greičiu.

100 % judėjimo greitis atitinka 200 milimetrų per sekundę.

Naudojimas:

robot.set_move_velocity(velocity, units)

Parametrai

Aprašymas

velocity

Judėjimo greitis nuo 0 % iki 100 %, kai naudojama PERCENT, arba nuo 0 iki 200 milimetrų per sekundę, kai naudojama MMPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė).

units

Pasirinktinai. Greičio vienetas: PERCENT (numatytasis) arba MMPS (milimetrai per sekundę).

# Move forward at the default velocity,
robot.set_move_velocity(50)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move slower than the default velocity
robot.set_move_velocity(20)
robot.move_for(100, 0)
wait(1, SECONDS)
# Move faster than the default velocity
robot.set_move_velocity(100)
robot.move_for(100, 0)

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 (75 laipsniai per sekundę).

Naudojimas:

robot.set_turn_velocity(velocity, units)

Parametrai

Aprašymas

velocity

Sukimosi greitis nuo 0% iki 100%, kai naudojama PERCENT, arba nuo 0 iki 150 laipsnių per sekundę, kai naudojama DPSTai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė).

units

Pasirinktinai. Greičio vienetas: DPS (laipsniai per sekundę, numatytoji reikšmė) arba PERCENT.

# Turn around at default velocity
robot.set_turn_velocity(50)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around slower than the default velocity
robot.set_turn_velocity(20)
robot.turn_for(RIGHT, 180)
wait(1, SECONDS)
# Turn around faster than the default velocity
robot.set_turn_velocity(100)
robot.turn_for(RIGHT, 180)

set_xy_position#

set_xy_position pakeičia dabartinę roboto x ir y padėtį į naujas reikšmes.

Pavyzdžiui, jei robotas pajudėjo iš pradinio taško, nustačius x į 0, o y į 0, roboto dabartinė vieta tampa nauja 0, 0 pozicija. Tada robotas gali sekti būsimas pozicijas pagal tą naują reikšmę.

Naudojimas:

robot.set_xy_position(x, y)

Parametrai

Aprašymas

x

Roboto x padėties vertė, milimetrais. Tai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė).

y

Roboto y padėties vertė, milimetrais. Tai gali būti sveikasis arba dešimtainis skaičius (slankioji eilutė).

# Set the robot's current position
# Move forward and print the new coordinate
robot.set_xy_position(100, 50)
robot.move_for(150, 0)
robot.screen.print("X:", robot.get_x_position())
robot.screen.next_row()
robot.screen.print("Y:", robot.get_y_position())

Getteriai#

get_x_position#

get_x_position grąžina dabartinę roboto x koordinatę milimetrais.

Projekto pradžioje roboto x padėtis nustatoma į 0. X padėtis keičiasi robotui judant į kairę arba į dešinę ir gali būti nustatyta naudojant set_xy_position metodą.

Naudojimas:

robot.get_x_position()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Print the start and end x-value 
# of the robot's position after moving
robot.screen.print("Start X:", robot.get_x_position())
robot.move_for(200, 90)
robot.screen.next_row()
robot.screen.print("End X:", robot.get_x_position())

get_y_position#

get_y_position grąžina dabartinę roboto y koordinatę milimetrais.

Projekto pradžioje roboto y padėtis nustatoma į 0. Y padėtis keičiasi robotui judant pirmyn arba atgal, ir ją galima nustatyti naudojant set_xy_position metodą.

Naudojimas:

robot.get_y_position()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Print the start and end y-value 
# of the robot's position after moving
robot.screen.print("Start Y:", robot.get_y_position())
robot.move_for(200, 0)
robot.screen.next_row()
robot.screen.print("End Y:", robot.get_y_position())

is_move_active#

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

Šis metodas veikia kartu su „Motion“ metodais, turinčiais parametrą wait , pvz., move_for.

Naudojimas:

robot.is_move_active()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Blink all the LEDs when the robot is moving.
robot.move_for(200, 0, wait=False)

while robot.is_move_active():
    robot.led.on(ALL_LEDS, ORANGE)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, CYAN)
    wait(0.5, SECONDS)

robot.led.off(ALL_LEDS)

is_turn_active#

is_turn_active grąžina, ar robotas sukasi, kaip loginę reikšmę. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.

  • True — Robotas sukasi.

  • False — Robotas nesisuka.

Šis metodas veikia kartu su „Motion“ metodais, turinčiais parametrą wait , tokiais kaip turn_for ir turn_to.

Naudojimas:

robot.is_turn_active()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Blink all the LEDs while the robot is turning
robot.turn_for(RIGHT, 180, wait=False) 

while robot.is_turn_active():
    robot.led.on(ALL_LEDS, GREEN)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, CYAN)
    wait(0.5, SECONDS)

robot.led.off(ALL_LEDS)

is_stopped#

is_stopped grąžina loginę reikšmę, ar robotas nejuda ir nesisuka. Tai gali būti naudojama kitų veiksmų, pagrįstų roboto judėjimu, laikui valdyti.

  • True — Robotas nejuda ir nesisuka.

  • False — Robotas juda arba sukasi.

Naudojimas:

robot.is_stopped()

Parametrai

Aprašymas

Šis metodas neturi parametrų.

# Blink all the LEDs while the robot is moving or turning

def light_show():
    # Flash LEDs while the robot is moving or turning
    while not robot.is_stopped():
        robot.led.on(ALL_LEDS, GREEN)
        wait(.5, SECONDS)
        robot.led.on(ALL_LEDS, PURPLE)
        wait(.5, SECONDS)

    robot.led.off(ALL_LEDS)

robot.move_for(200, 0, wait=False)
light_show()

robot.turn_for(RIGHT, 180, wait=False)
light_show()