Mozgás#

Bevezetés#

A VEX AIM kódolórobot holonomikus hajtásláncot használ az előre, hátra, balra, jobbra vagy szögben történő mozgáshoz, miközben önállóan is képes fordulni. A mozgásmódok szabályozzák, hogyan mozog és fordul a robot, milyen gyorsan mozog, valamint hogyan követi nyomon az x és y pozícióját.

Kör alakú iránytű 0-tól 315 fokig, sötétkék képernyővel körülvéve. A robot eleje 0 fokban néz az iránytű tárcsájára.

Az alábbiakban felsoroljuk az elérhető módszereket:

Műveletek — A robot mozgatása és forgatása.

  • move_at — A robotot egy adott szögben mozgatja örökké.

  • move_for — Meghatározott szögben, adott távolságra mozgatja a robotot.

  • move_with_vectors — Vektor alapú x, y és forgatási értékek használatával mozgatja a robotot.

  • turn — Örökké balra vagy jobbra forgatja a robotot.

  • turn_for — Meghatározott fokkal balra vagy jobbra forgatja a robotot.

  • turn_to — A robotot egy adott irányba fordítja.

  • stop_all_movement — Leállítja a robot összes mozgását.

Mutátorok – Robotmozgási értékek beállítása.

Getterek — Robot állapotát és pozícióját adják vissza.

Műveletek#

move_at#

move_at A robotot egy adott szögben, örökké mozgatja. A szög a robot aktuális pozíciójához viszonyított. A robot addig mozog, amíg egy másik műveletet nem kap, például más szögben mozog, megfordul vagy megáll.

Használat:

robot.move_at(angle, velocity, units)

Paraméterek

Leírás

angle

A robot mozgásának szöge fokban megadva. Ez lehet egész vagy tizedes tört -360 és 360 között.

velocity

Opcionális. A mozgási sebesség 0%-tól 100%-ig PERCENThasználata esetén, vagy 0-tól 200 milliméter/másodpercig MMPShasználata esetén. Ez lehet egész vagy decimális (úszó) szám. Ha nincs megadva sebesség, a robot az aktuális mozgási sebességgel mozog.

units

Opcionális. A sebesség mértékegysége: PERCENT (alapértelmezett) vagy MMPS (milliméter másodpercenként).

# 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 A „move_for” függvény paraméterrel a robot egy adott szögben, adott távolságra mozgatható. A szög a robot aktuális pozíciójához viszonyított. A projekt megvárja, amíg a robot befejezi a mozgást, mielőtt a kód következő sora lefutna.

Használat:

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

Paraméterek

Leírás

distance

A robot által megtett távolság milliméterben (mm). Ez lehet egész szám vagy decimális szám (float).

angle

A robot mozgásának szöge fokban megadva. Ez lehet egész vagy tizedes tört -360 és 360 között.

velocity

Opcionális. A mozgási sebesség 0%-tól 100%-ig PERCENThasználata esetén, vagy 0-tól 200 milliméter/másodpercig MMPShasználata esetén. Ez lehet egész vagy decimális (úszó) szám. Ha nincs megadva sebesség, a robot az aktuális mozgási sebességgel mozog.

units

Opcionális. A sebesség mértékegysége: PERCENT (alapértelmezett) vagy MMPS (milliméter másodpercenként).

wait

Opcionális. wait=True (alapértelmezett) esetén a projekt megvárja, amíg a robot befejezi a mozgást, mielőtt a következő kódsor lefutna. wait=False esetén a következő kódsor azonnal lefut.

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

A vektor egy módja annak, hogy leírjuk, milyen gyorsan mozog valami, és milyen irányba. move_with_vectors A robot vektor alapú mozgással mozgatja. A robot az előre, jobbra és forgási sebességértékeket kombinálja az egyenletes mozgás létrehozásához. A robot ezt a vektort használva tovább mozog, amíg egy másik műveletet nem kap, például más szögben mozog, fordul vagy megáll.

Megjegyzés: Ez a metódus közvetlenül állítja be a mozgási és fordulási sebességértékeket, így nem használja a set_move_velocity vagy a set_turn_velocity metódusokat.

Használat:

robot.move_with_vectors(forward, rightward, rotation)

Paraméterek

Leírás

forward

A robot sebessége az y tengely mentén, -100%-tól 100%-ig. A negatív értékek hátrafelé, a pozitív értékek pedig előre mozgatják a robotot.

rightward

A robot sebessége az x tengely mentén, -100%-tól 100%-ig. A negatív értékek balra, a pozitív értékek pedig jobbra mozgatják a robotot.

rotation

A robot fordulási sebessége, -100%-tól 100%-ig. A negatív értékek az óramutató járásával ellentétes irányba, a pozitív értékek pedig az óramutató járásával megegyező irányba forgatják a robotot.

# 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 A robotot örökre balra vagy jobbra forgatja. A robot addig forog, amíg egy másik műveletet nem kap, például mozgást vagy megállást.

Használat:

robot.turn(direction, velocity, units)

Paraméterek

Leírás

direction

A robot fordulási iránya: LEFT vagy RIGHT.

velocity

Opcionális. A fordulási sebesség 0% és 100% között PERCENThasználata esetén, vagy 0 és 150 fok/másodperc között DPShasználata esetén. Ez lehet egész vagy decimális (úszó) szám. Ha nincs megadva sebesség, a robot az aktuális fordulási sebességgel fordul.

units

Opcionális. A sebesség mértékegysége: DPS (fok/másodperc, alapértelmezett) vagy 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 paraméterrel a robot balra vagy jobbra forgatható egy megadott fokkal. A fordulat a robot aktuális fordulási irányához viszonyítva értendő. A projekt megvárja, amíg a robot befejezi a fordulást, mielőtt a következő kódsort futtatná.

Használat:

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

Paraméterek

Leírás

direction

A robot fordulási iránya: LEFT vagy RIGHT.

angle

A robot fordulatainak száma fokokban, -360 és 360 fok között. Ez lehet egész vagy decimális (lebegőpontos) szám.

velocity

Opcionális. A fordulási sebesség 0% és 100% között PERCENThasználata esetén, vagy 0 és 150 fok/másodperc között DPShasználata esetén. Ez lehet egész vagy decimális (úszó) szám. Ha nincs megadva sebesség, a robot az aktuális fordulási sebességgel fordul.

units

Opcionális. A sebesség mértékegysége: DPS (fok/másodperc, alapértelmezett) vagy PERCENT.

wait

Opcionális. wait=True (alapértelmezett) esetén a projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsor lefutna. wait=False esetén a következő kódsor azonnal lefut.

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

A haladási irány az az irány, amerre a robot néz, fokban mérve. turn_to : Az 1-es érték egy adott irányba fordítja a robotot. A robot a legrövidebb irányba fordul, hogy elérje a célirányt.

A robot kezdő iránya 0 fok.

A projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsort futtatná.

Használat:

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

Paraméterek

Leírás

heading

A robot iránya, amellyel szembe kell néznie, -360 és 360 fok között.

velocity

Opcionális. A fordulási sebesség 0% és 100% között PERCENThasználata esetén, vagy 0 és 150 fok/másodperc között DPShasználata esetén. Ez lehet egész vagy decimális (úszó) szám. Ha nincs megadva sebesség, a robot az aktuális fordulási sebességgel fordul.

units

Opcionális. A sebesség mértékegysége: DPS (fok/másodperc, alapértelmezett) vagy PERCENT.

wait

Opcionális. wait=True (alapértelmezett) esetén a projekt megvárja, amíg a robot befejezi a forgást, mielőtt a következő kódsor lefutna. wait=False esetén a következő kódsor azonnal lefut.

# 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 leállítja a robot összes mozgását.

Használat:

robot.stop_all_movement()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

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

Mutátorok#

set_move_velocity#

set_move_velocity megmondja a robotnak, hogy milyen gyorsan mozogjon. Magasabb százalékos érték esetén a robot gyorsabban, alacsonyabb százalékos érték esetén pedig lassabban mozog.

Minden projekt azzal kezdődik, hogy a robot alapértelmezés szerint 50%-os sebességgel mozog.

A 100%-os mozgási sebesség 200 milliméter/másodpercnek felel meg.

Használat:

robot.set_move_velocity(velocity, units)

Paraméterek

Leírás

velocity

A mozgás sebessége 0%-tól 100%-ig PERCENThasználata esetén, vagy 0-tól 200 milliméter/másodpercig MMPShasználata esetén. Ez lehet egész vagy decimális (lebegőpontos) szám.

units

Opcionális. A sebesség mértékegysége: PERCENT (alapértelmezett) vagy MMPS (milliméter másodpercenként).

# 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 megmondja a robotnak, hogy milyen gyorsan forduljon. Magasabb százalékos érték esetén a robot gyorsabban, alacsonyabb százalékos érték esetén pedig lassabban fordul.

Minden projekt azzal kezdődik, hogy a robot alapértelmezés szerint 50%-os sebességgel (másodpercenként 75 fok) forog.

Használat:

robot.set_turn_velocity(velocity, units)

Paraméterek

Leírás

velocity

A fordulási sebesség 0%-tól 100%-ig PERCENThasználata esetén, vagy 0-tól 150 fok/másodpercig DPShasználata esetén. Ez lehet egész vagy decimális (lebegőpontos) szám.

units

Opcionális. A sebesség mértékegysége: DPS (fok/másodperc, alapértelmezett) vagy 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 A robot aktuális x és y pozícióját új értékekre módosítja.

Például, ha a robot elmozdult a kiindulópontjától, az x és y értékének 0-ra állítása a robot aktuális helyzetét az új 0, 0 pozícióvá teszi. Ezután a robot az új érték alapján követheti a jövőbeli pozíciókat.

Használat:

robot.set_xy_position(x, y)

Paraméterek

Leírás

x

A robothoz beállítandó x pozícióérték mm-ben. Ez lehet egész szám vagy decimális (lebegőpontos) szám.

y

A robothoz beállítandó y-pozíció értéke mm-ben. Ez lehet egész vagy decimális (úszó) szám.

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

Getterek#

get_x_position#

get_x_position Visszaadja a robot aktuális x koordinátáját milliméterben.

Egy projekt elején a robot x pozíciója 0-ra van állítva. Az x pozíció a robot balra vagy jobbra mozgásával változik, és a set_xy_position metódussal állítható be.

Használat:

robot.get_x_position()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# 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 visszaadja a robot aktuális y koordinátáját milliméterben.

Egy projekt elején a robot y-pozíciója 0-ra van állítva. Az y-pozíció a robot előre vagy hátrafelé mozgásával változik, és a set_xy_position metódussal állítható be.

Használat:

robot.get_y_position()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# 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 Logikai értékként adja vissza, hogy a robot mozog-e. Ez felhasználható más viselkedések időzítésének szabályozására a robot mozgása alapján.

  • True — A robot mozog.

  • False — A robot nem mozog.

Ez a metódus együtt működik a wait paraméterrel rendelkező Motion metódusokkal, például a move_for metódussal.

Használat:

robot.is_move_active()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# 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 Logikai értékként adja vissza, hogy a robot forog-e. Ez felhasználható más viselkedések időzítésének szabályozására a robot mozgása alapján.

  • True — A robot forog.

  • False — A robot nem forog.

Ez a metódus együtt működik a wait paraméterrel rendelkező Motion metódusokkal, mint például a turn_for és az turn_to metódusok.

Használat:

robot.is_turn_active()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

# 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 Logikai értékként adja vissza, hogy a robot nem mozog vagy fordul-e. Ez felhasználható más viselkedések időzítésének szabályozására a robot mozgása alapján.

  • True — A robot nem mozog és nem fordul.

  • False — A robot mozog vagy forog.

Használat:

robot.is_stopped()

Paraméterek

Leírás

Ennek a metódusnak nincsenek paraméterei.

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