Movimiento#

Introducción#

El robot de codificación VEX AIM utiliza una transmisión holonómica para moverse hacia adelante, hacia atrás, hacia la izquierda, hacia la derecha o en ángulo, al mismo tiempo que puede girar de forma independiente. Los métodos de movimiento controlan cómo se mueve y gira el robot, qué tan rápido se mueve y cómo se rastrea su posición x e y.

Esfera de brújula circular de 0 a 315 grados que rodea una pantalla gris oscura con pantalla azul marino. La parte frontal del robot está orientada 0 grados en el dial de la brújula.

A continuación se muestra una lista de los métodos disponibles:

Acciones: mueve y gira el robot.

  • move_at — Mueve el robot en un ángulo específico para siempre.

  • move_for — Mueve el robot en un ángulo específico para una distancia específica.

  • move_with_vectors — Mueve el robot utilizando valores de x, y y rotación basados en vectores.

  • turn — Gira el robot a la izquierda o a la derecha para siempre.

  • turn_for — Gira el robot a la izquierda o a la derecha un número específico de grados.

  • turn_to — Gira el robot para que se enfrente a un rumbo específico.

  • stop_all_movement — Detiene todo el movimiento del robot.

Mutadores: establece los valores de movimiento del robot.

Getters — Devuelve el estado y la posición del robot.

Acciones#

move_at#

move_at mueve el robot para siempre en un ángulo específico. El ángulo es relativo a la posición actual del robot. El robot continuará moviéndose hasta que se le dé otra acción, como moverse en un ángulo diferente, girar o detenerse.

Uso:

robot.move_at(angle, velocity, units)

Parámetros

Descripción

angle

El ángulo, en grados, que se mueve el robot. Esto puede ser un número entero o decimal de -360 a 360.

velocity

Opcional. La velocidad para moverse con de 0% a 100% cuando se usa PERCENT, o de 0 a 200 milímetros por segundo cuando se usan MMPS. Esto puede ser un número entero o decimal (flotante). Si no se proporciona velocidad, el robot se mueve a la velocidad de movimiento actual.

units

Opcional. La unidad de velocidad: PERCENT (predeterminado) o MMPS (milímetros por segundo).

# 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 mueve el robot en un ángulo específico para una distancia específica. El ángulo es relativo a la posición actual del robot. El proyecto esperará hasta que el robot termine de moverse antes de que se ejecute la siguiente línea de código.

Uso:

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

Parámetros

Descripción

distance

La distancia que se mueve el robot, en milímetros (mm). Esto puede ser un número entero o decimal (flotante).

angle

El ángulo, en grados, que se mueve el robot. Esto puede ser un número entero o decimal de -360 a 360.

velocity

Opcional. La velocidad para moverse con de 0% a 100% cuando se usa PERCENT, o de 0 a 200 milímetros por segundo cuando se usan MMPS. Esto puede ser un número entero o decimal (flotante). Si no se proporciona velocidad, el robot se mueve a la velocidad de movimiento actual.

units

Opcional. La unidad de velocidad: PERCENT (predeterminado) o MMPS (milímetros por segundo).

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de moverse antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

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

Un vector es una forma de describir qué tan rápido se mueve algo y en qué dirección se mueve. move_with_vectors mueve el robot utilizando un movimiento basado en vectores. El robot combina los valores de velocidad hacia adelante, hacia la derecha y de rotación para crear un movimiento suave. El robot continuará moviéndose usando este vector hasta que se le dé otra acción, como moverse en un ángulo diferente, girar o detenerse.

Nota: Este método establece los valores de velocidad de movimiento y giro directamente, por lo que no utiliza set_move_velocity o set_turn_velocity.

Uso:

robot.move_with_vectors(forward, rightward, rotation)

Parámetros

Descripción

forward

La velocidad del robot a lo largo del eje y, de -100% a 100%. Los valores negativos mueven el robot hacia atrás y los valores positivos lo mueven hacia adelante.

rightward

La velocidad del robot a lo largo del eje x, de -100% a 100%. Los valores negativos mueven el robot a la izquierda y los valores positivos lo mueven a la derecha.

rotation

La velocidad de giro del robot, de -100% a 100%. Los valores negativos giran el robot en sentido antihorario y los valores positivos lo giran en sentido horario.

# 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 hace que el robot gire hacia la izquierda o hacia la derecha indefinidamente. El robot seguirá girando hasta que se le dé otra acción, como moverse o detenerse.

Uso:

robot.turn(direction, velocity, units)

Parámetros

Descripción

direction

La dirección en la que gira el robot: LEFT o RIGHT.

velocity

Opcional. La velocidad para girar es de 0% a 100% cuando se usa PERCENT, o de 0 a 150 grados por segundo cuando se usa DPS. Esto puede ser un número entero o decimal (flotante). Si no se proporciona velocidad, el robot gira a la velocidad de giro actual.

units

Opcional. La unidad de velocidad: DPS (grados por segundo, predeterminado) o 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 gira el robot a la izquierda o a la derecha un número específico de grados. El giro es relativo a la dirección actual a la que se enfrenta el robot. El proyecto esperará hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código.

Uso:

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

Parámetros

Descripción

direction

La dirección en la que gira el robot: LEFT o RIGHT.

angle

El número de grados que gira el robot, que van de -360 a 360 grados. Esto puede ser un número entero o decimal (flotante).

velocity

Opcional. La velocidad para girar es de 0% a 100% cuando se usa PERCENT, o de 0 a 150 grados por segundo cuando se usa DPS. Esto puede ser un número entero o decimal (flotante). Si no se proporciona velocidad, el robot gira a la velocidad de giro actual.

units

Opcional. La unidad de velocidad: DPS (grados por segundo, predeterminado) o PERCENT.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

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

Un rumbo es la dirección hacia la que se enfrenta el robot, medida en grados. turn_to gira el robot para que se enfrente a un rumbo específico. El robot girará en la dirección más corta para alcanzar el rumbo objetivo.

El rumbo inicial del robot es de 0 grados.

El proyecto esperará hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código.

Uso:

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

Parámetros

Descripción

heading

El rumbo al que debe enfrentarse el robot es de -360 a 360 grados.

velocity

Opcional. La velocidad para girar es de 0% a 100% cuando se usa PERCENT, o de 0 a 150 grados por segundo cuando se usa DPS. Esto puede ser un número entero o decimal (flotante). Si no se proporciona velocidad, el robot gira a la velocidad de giro actual.

units

Opcional. La unidad de velocidad: DPS (grados por segundo, predeterminado) o PERCENT.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# 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 detiene todo movimiento del robot.

Uso:

robot.stop_all_movement()

Parámetros

Descripción

Este método no tiene parámetros.

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

Mutadores#

set_move_velocity#

set_move_velocity le dice al robot qué tan rápido debe moverse. Un porcentaje más alto hace que el robot se mueva más rápido y un porcentaje más bajo hace que el robot se mueva más lento.

Cada proyecto comienza con el robot moviéndose a una velocidad del 50% por defecto.

Una velocidad de movimiento del 100% equivale a 200 milímetros por segundo.

Uso:

robot.set_move_velocity(velocity, units)

Parámetros

Descripción

velocity

La velocidad con la que se mueve es de 0% a 100% cuando se usan PERCENT, o de 0 a 200 milímetros por segundo cuando se usan MMPS. Esto puede ser un número entero o decimal (flotante).

units

Opcional. La unidad de velocidad: PERCENT (predeterminado) o MMPS (milímetros por segundo).

# 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 le dice al robot qué tan rápido debe girar. Un porcentaje más alto hace que el robot gire más rápido y un porcentaje más bajo hace que el robot gire más lento.

Cada proyecto comienza con el robot girando a una velocidad del 50% (75 grados por segundo) de forma predeterminada.

Uso:

robot.set_turn_velocity(velocity, units)

Parámetros

Descripción

velocity

La velocidad para girar es de 0% a 100% cuando se usa PERCENT, o de 0 a 150 grados por segundo cuando se usa DPS. Esto puede ser un número entero o decimal (flotante).

units

Opcional. La unidad de velocidad: DPS (grados por segundo, predeterminado) o 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 cambia la posición x e y actual del robot a nuevos valores.

Por ejemplo, si el robot se ha alejado de su punto de partida, establecer x en 0 e y en 0 hace que la ubicación actual del robot sea la nueva posición 0, 0. Luego, el robot puede rastrear posiciones futuras en función de ese nuevo valor.

Uso:

robot.set_xy_position(x, y)

Parámetros

Descripción

x

El valor de la posición x a establecer para el robot, en mm. Esto puede ser un número entero o decimal (flotante).

y

El valor de la posición y a establecer para el robot, en mm. Esto puede ser un número entero o decimal (flotante).

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

Getters#

get_x_position#

get_x_position devuelve la coordenada x actual del robot en milímetros.

Al comienzo de un proyecto, la posición x del robot se establece en 0. La posición x cambia a medida que el robot se mueve hacia la izquierda o hacia la derecha y se puede configurar utilizando el método set_xy_position.

Uso:

robot.get_x_position()

Parámetros

Descripción

Este método no tiene parámetros.

# 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 devuelve la coordenada y actual del robot en milímetros.

Al comienzo de un proyecto, la posición y del robot se establece en 0. La posición y cambia a medida que el robot avanza o retrocede y se puede configurar utilizando el método set_xy_position.

Uso:

robot.get_y_position()

Parámetros

Descripción

Este método no tiene parámetros.

# 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 devuelve si el robot se está moviendo, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del robot.

  • True : el robot se está moviendo.

  • False — El robot no se mueve.

Este método funciona junto con los métodos de movimiento que tienen el parámetro wait, como move_for.

Uso:

robot.is_move_active()

Parámetros

Descripción

Este método no tiene parámetros.

# 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 devuelve si el robot está girando, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del robot.

  • True : el robot está girando.

  • False — El robot no está girando.

Este método funciona junto con los métodos Motion que tienen el parámetro wait, como turn_for y turn_to.

Uso:

robot.is_turn_active()

Parámetros

Descripción

Este método no tiene parámetros.

# 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 devuelve si el robot no se está moviendo ni girando, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del robot.

  • True : el robot no se mueve ni gira.

  • False : el robot se está moviendo o girando.

Uso:

robot.is_stopped()

Parámetros

Descripción

Este método no tiene parámetros.

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