Pohyb#

Zavedení#

Kódovací robot VEX AIM využívá holonomický pohon pro pohyb vpřed, vzad, doleva, doprava nebo pod úhlem a zároveň se dokáže nezávisle otáčet. Metody pohybu řídí, jak se robot pohybuje a otáčí, jak rychle se pohybuje a jak je sledována jeho poloha x a y.

Kruhový kompas od 0 do 315 stupňů obklopující tmavě šedý displej s tmavě modrou obrazovkou. Přední část robota směřuje na kompas s úhlem 0 stupňů.

Níže je uveden seznam dostupných metod:

Akce – Pohyb a otáčení robota.

  • move_at — Pohybuje robota v určitém úhlu natrvalo.

  • move_for — Pohybuje robotem pod určitým úhlem na určitou vzdálenost.

  • move_with_vectors — Pohybuje robota pomocí vektorových hodnot x, y a rotace.

  • turn — Otočí robota doleva nebo doprava natrvalo.

  • turn_for — Otočí robota doleva nebo doprava o určitý počet stupňů.

  • turn_to — Otočí robota směrem k určitému směru.

  • stop_all_movement — Zastaví veškerý pohyb robota.

Mutátory – Nastavení hodnot pohybu robota.

Gettery — Vrací stav a pozici robota.

Akce#

move_at#

move_at pohybuje robotem navždy v určitém úhlu. Úhel je relativní vzhledem k aktuální poloze robota. Robot se bude pohybovat, dokud nedostane další akci, například pohyb v jiném úhlu, otočení nebo zastavení.

Používání:

robot.move_at(angle, velocity, units)

Parametry

Popis

angle

Úhel ve stupních, o který se robot pohne. Může to být celé číslo nebo desetinné číslo od -360 do 360.

velocity

Volitelné. Rychlost pohybu od 0 % do 100 % při použití PERCENTnebo od 0 do 200 milimetrů za sekundu při použití MMPSMůže se jednat o celé číslo nebo desetinné číslo (float). Pokud není zadána žádná rychlost, robot se pohybuje aktuální rychlostí pohybu.

units

Volitelné. Jednotka rychlosti: PERCENT (výchozí) nebo MMPS (milimetry za sekundu).

# 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 pohybuje robotem o specifický úhel na specifickou vzdálenost. Úhel je relativní vzhledem k aktuální poloze robota. Projekt počká, dokud se robot nedokončí s pohybem, než se spustí další řádek kódu.

Používání:

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

Parametry

Popis

distance

Vzdálenost, o kterou se robot posune, v milimetrech (mm). Může se jednat o celé číslo nebo desetinné číslo (float).

angle

Úhel ve stupních, o který se robot pohne. Může to být celé číslo nebo desetinné číslo od -360 do 360.

velocity

Volitelné. Rychlost pohybu od 0 % do 100 % při použití PERCENTnebo od 0 do 200 milimetrů za sekundu při použití MMPSMůže se jednat o celé číslo nebo desetinné číslo (float). Pokud není zadána žádná rychlost, robot se pohybuje aktuální rychlostí pohybu.

units

Volitelné. Jednotka rychlosti: PERCENT (výchozí) nebo MMPS (milimetry za sekundu).

wait

Volitelné. wait=True (výchozí) způsobí, že projekt počká, dokud se robot nedokončí s pohybem, než se spustí další řádek kódu. wait=False způsobí, že se další řádek kódu spustí okamžitě.

# 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#

Vektor je způsob, jak popsat, jak rychle se něco pohybuje a jakým směrem se pohybuje. move_with_vectors pohybuje robotem pomocí vektorového pohybu. Robot kombinuje hodnoty rychlosti vpřed, vpravo a otáčení, aby vytvořil plynulý pohyb. Robot se bude pohybovat pomocí tohoto vektoru, dokud nedostane další akci, jako je pohyb pod jiným úhlem, otočení nebo zastavení.

Poznámka: Tato metoda nastavuje hodnoty rychlosti pohybu a otáčení přímo, takže nepoužívá set_move_velocity ani set_turn_velocity.

Používání:

robot.move_with_vectors(forward, rightward, rotation)

Parametry

Popis

forward

Rychlost robota podél osy y v rozsahu od -100 % do 100 %. Záporné hodnoty pohybují robota dozadu a kladné hodnoty ho pohybují dopředu.

rightward

Rychlost robota podél osy x v rozsahu od -100 % do 100 %. Záporné hodnoty posouvají robota doleva a kladné hodnoty doprava.

rotation

Rychlost otáčení robota v rozmezí od -100 % do 100 %. Záporné hodnoty otáčejí robota proti směru hodinových ručiček a kladné hodnoty po směru hodinových ručiček.

# 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 otáčí robota doleva nebo doprava navždy. Robot se bude otáčet, dokud nedostane další akci, například pohyb nebo zastavení.

Používání:

robot.turn(direction, velocity, units)

Parametry

Popis

direction

Směr otáčení robota: LEFT nebo RIGHT.

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTnebo od 0 do 150 stupňů za sekundu při použití DPSMůže se jednat o celé číslo nebo desetinné číslo (float). Pokud není zadána žádná rychlost, robot se otáčí aktuální rychlostí otáčení.

units

Volitelné. Jednotka rychlosti: DPS (stupně za sekundu, výchozí nastavení) nebo 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 otočí robota doleva nebo doprava o určitý počet stupňů. Otočení je relativní vzhledem k aktuálnímu směru, kterým se robot otáčí. Projekt počká, dokud se robot nedokončí s otáčením, než se spustí další řádek kódu.

Používání:

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

Parametry

Popis

direction

Směr otáčení robota: LEFT nebo RIGHT.

angle

Počet stupňů, o které se robot otočí, v rozsahu od -360 do 360 stupňů. Může se jednat o celé číslo nebo desetinné číslo (float).

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTnebo od 0 do 150 stupňů za sekundu při použití DPSMůže se jednat o celé číslo nebo desetinné číslo (float). Pokud není zadána žádná rychlost, robot se otáčí aktuální rychlostí otáčení.

units

Volitelné. Jednotka rychlosti: DPS (stupně za sekundu, výchozí nastavení) nebo PERCENT.

wait

Volitelné. wait=True (výchozí) způsobí, že projekt počká, dokud robot nedokončí otáčení, než se spustí další řádek kódu. wait=False způsobí, že se další řádek kódu spustí okamžitě.

# 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#

Směr je směr, kterým je robot otočen, měřený ve stupních. turn_to otočí robota směrem k určitému směru. Robot se otočí nejkratším směrem, aby dosáhl cílového směru.

Výchozí směr robota je 0 stupňů.

Projekt počká, dokud se robot nedotočí, než se spustí další řádek kódu.

Používání:

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

Parametry

Popis

heading

Směr, kterým by se měl robot natočit, od -360 do 360 stupňů.

velocity

Volitelné. Rychlost otáčení od 0 % do 100 % při použití PERCENTnebo od 0 do 150 stupňů za sekundu při použití DPSMůže se jednat o celé číslo nebo desetinné číslo (float). Pokud není zadána žádná rychlost, robot se otáčí aktuální rychlostí otáčení.

units

Volitelné. Jednotka rychlosti: DPS (stupně za sekundu, výchozí nastavení) nebo PERCENT.

wait

Volitelné. wait=True (výchozí) způsobí, že projekt počká, dokud robot nedokončí otáčení, než se spustí další řádek kódu. wait=False způsobí, že se další řádek kódu spustí okamžitě.

# 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 zastaví veškerý pohyb robota.

Používání:

robot.stop_all_movement()

Parametry

Popis

Tato metoda nemá žádné parametry.

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

Mutátory#

set_move_velocity#

set_move_velocity říká robotovi, jak rychle se má pohybovat. Vyšší procento způsobí, že se robot bude pohybovat rychleji, a nižší procento způsobí, že se robot bude pohybovat pomaleji.

Každý projekt začíná s robotem, který se standardně pohybuje rychlostí 50 %.

Rychlost pohybu 100 % odpovídá 200 milimetrům za sekundu.

Používání:

robot.set_move_velocity(velocity, units)

Parametry

Popis

velocity

Rychlost, s níž se má pohybovat, od 0 % do 100 % při použití PERCENTnebo od 0 do 200 milimetrů za sekundu při použití MMPSMůže se jednat o celé číslo nebo desetinné číslo (float).

units

Volitelné. Jednotka rychlosti: PERCENT (výchozí) nebo MMPS (milimetry za sekundu).

# 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 říká robotovi, jak rychle se má otáčet. Vyšší procento způsobí, že se robot bude otáčet rychleji, a nižší procento způsobí, že se robot bude otáčet pomaleji.

Každý projekt začíná s robotem, který se standardně otáčí rychlostí 50 % (75 stupňů za sekundu).

Používání:

robot.set_turn_velocity(velocity, units)

Parametry

Popis

velocity

Rychlost otáčení od 0 % do 100 % při použití PERCENTnebo od 0 do 150 stupňů za sekundu při použití DPSMůže se jednat o celé číslo nebo desetinné číslo (float).

units

Volitelné. Jednotka rychlosti: DPS (stupně za sekundu, výchozí nastavení) nebo 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 změní aktuální polohu robota v osách x a y na nové hodnoty.

Například pokud se robot vzdálil od svého počátečního bodu, nastavením x na 0 a y na 0 se aktuální poloha robota nastaví na novou pozici 0, 0. Robot pak může na základě této nové hodnoty sledovat budoucí pozice.

Používání:

robot.set_xy_position(x, y)

Parametry

Popis

x

Hodnota pozice x, která se má nastavit pro robota, v mm. Může se jednat o celé číslo nebo desetinné číslo (float).

y

Hodnota pozice y, která se má nastavit pro robota, v mm. Může se jednat o celé číslo nebo desetinné číslo (float).

# 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())

Gettery#

get_x_position#

get_x_position vrací aktuální souřadnici x robota v milimetrech.

Na začátku projektu je poloha x robota nastavena na 0. Poloha x se mění s pohybem robota doleva nebo doprava a lze ji nastavit pomocí metody set_xy_position.

Používání:

robot.get_x_position()

Parametry

Popis

Tato metoda nemá žádné parametry.

# 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 vrací aktuální souřadnici y robota v milimetrech.

Na začátku projektu je poloha y robota nastavena na 0. Poloha y se mění s pohybem robota vpřed nebo vzad a lze ji nastavit metodou set_xy_position.

Používání:

robot.get_y_position()

Parametry

Popis

Tato metoda nemá žádné parametry.

# 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 vrací booleovskou hodnotu, zda se robot pohybuje. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu robota.

  • True — Robot se pohybuje.

  • False — Robot se nepohybuje.

Tato metoda funguje společně s metodami Motion, které mají parametr wait , například move_for.

Používání:

robot.is_move_active()

Parametry

Popis

Tato metoda nemá žádné parametry.

# 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 vrací booleovskou hodnotu, zda se robot otáčí. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu robota.

  • True — Robot se otáčí.

  • False — Robot se neotáčí.

Tato metoda funguje společně s metodami Motion, které mají parametr wait , jako například turn_for a turn_to.

Používání:

robot.is_turn_active()

Parametry

Popis

Tato metoda nemá žádné parametry.

# 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 vrací booleovskou hodnotu, zda se robot nepohybuje ani neotáčí. Tuto hodnotu lze použít k řízení načasování dalších chování na základě pohybu robota.

  • True — Robot se nepohybuje ani neotáčí.

  • False — Robot se pohybuje nebo otáčí.

Používání:

robot.is_stopped()

Parametry

Popis

Tato metoda nemá žádné parametry.

# 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()