Movimiento#

Introducción#

El dron VEX AIR cuenta con cuatro hélices, lo que le permite moverse en cualquier dirección y girar de forma independiente. El sistema Motion ofrece funciones para el movimiento, los giros, los ajustes de velocidad y el seguimiento de la posición.

Esfera de brújula circular de 0 a 360 grados que rodea un dron con 4 hélices. La parte frontal del dron apunta a 0 grados en la esfera de brújula.

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

Comportamiento

  • take_off – Eleva el dron a una altura específica.

  • land – Aterriza el dron.

  • hover - Mantiene el dron en su posición.

  • climb – Mueve el dron en una dirección vertical específica.

  • climb_for – Mueve el dron en una dirección vertical específica durante una distancia específica.

  • climb_to – Mueve el dron a una altitud específica.

  • move_at – Mueve el dron en una dirección y velocidad especificadas.

  • move_for – Mueve el dron en una dirección específica durante una distancia específica.

  • move_to – Mueve el dron a una posición específica manteniendo el mismo rumbo.

  • turn – Gira el dron hacia la izquierda o hacia la derecha.

  • turn_for – Gira el dron un número determinado de grados.

  • turn_to – Gira el dron para que mire hacia una dirección específica.

  • move_with_vectors – Mueve el dron usando valores x, y, z y de rotación basados ​​en vectores.

Mutadores

Conseguidores

Comportamiento#

take_off#

El comando take_off pone en marcha las hélices y eleva el dron. Este método debe utilizarse antes de realizar cualquier otro movimiento.

Uso:

drone.take_off(climb_to, units, wait)

Parámetros

Descripción

climb_to

La posición z (altura) a la que volará el dron.

units

Unidad a utilizar:

  • CM - Centímetros
  • MM - Milímetros
  • INCHES

wait

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

# Fly for 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

land#

land hace descender el dron al suelo. Las hélices seguirán funcionando hasta que se detenga el proyecto.

Uso:

drone.land(wait)

Parámetros

Descripción

wait

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

# Land after 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

hover#

hover impide que el dron se mueva en cualquier dirección y mantiene su posición actual en el aire.

Usage:
drone.hover()

Parámetros

Descripción

Este método no tiene parámetros.

# Hold current position for 3 seconds after moving forward
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(1, SECONDS)
drone.hover()
wait(3, SECONDS)
drone.land()

climb#

climb mueve el dron en una dirección vertical específica.

Usage: drone.climb(direction, velocity)

Parámetros

Descripción

direction

La dirección en la que volará el dron: UP o DOWN.

velocity

La velocidad a la que el dron ascenderá expresada como porcentaje.

# Climb upwards for 2 seconds
drone.take_off(climb_to=500)
wait(2, SECONDS)
drone.climb(direction=UP)
wait(2, SECONDS)
drone.land()

climb_for#

climb_for mueve el dron en una dirección vertical específica durante una distancia específica.

Uso:

drone.climb_for(direction, distance, units, velocity, wait)

Parámetros

Descripción

direction

La dirección en la que volará el dron: UP o DOWN.

distance

La distancia que volará el dron.

units

Opcional. La unidad que representa la distancia:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES

velocity

Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje. Si no se especifica, la velocidad predeterminada es del 50 %.

wait

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

# Lower drone before landing
drone.take_off(climb_to=700)
wait(2, SECONDS)
drone.climb_for(direction=DOWN, distance=300)
wait(2, SECONDS)
drone.land()

climb_to#

climb_to mueve el dron a una posición z específica.

Uso:

drone.climb_to(z, units, velocity, wait)

Parámetros

Descripción

z

La posición z, como número entero o decimal, a la que ascenderá el dron.

units

Opcional. La unidad que representa la distancia:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES

velocity

Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje.

wait

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

# Reach 500 mm after takeoff
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.climb_to(z=500)
wait(1, SECONDS)
drone.land()

move_at#

move_at mueve el dron en un ángulo y velocidad específicos.

Uso:

drone.move_at(angle, velocity)

Parámetros

Descripción

angle

El ángulo, expresado como número entero o decimal, en el que se mueve el dron, con un rango de 0 a 359 grados.

velocity

La velocidad a la que se moverá el dron como porcentaje.

# Move left for 2 seconds
drone.take_off(climb_to=500)
drone.move_at(angle=270)
wait(2, SECONDS)
drone.land()

move_for#

move_for mueve el dron en una dirección específica durante una distancia específica utilizando la set_move_velocity.

Uso:

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

Parámetros

Descripción

angle

El ángulo, como un entero o decimal (float), en el que se mueve el dron, con un rango de 0 a 359 grados.

distance

La distancia, en número entero o decimal, que se moverá el dron.

units

Opcional. La unidad que representa la distancia:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES

velocity

Opcional. La velocidad a la que se moverá el dron como porcentaje.

wait

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

# Move forward for 200 mm
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_for(direction=0, distance=200, velocity=50, units=MM)
wait(1, SECONDS)
drone.land()

move_to#

move_to mueve el dron a una posición específica en el aire manteniendo la misma dirección.

Uso:

drone.move_to(x, y, z, units, move_velocity, climb_velocity, wait)

Parámetros

Descripción

x

La coordenada x a la que se moverá el dron.

y

La coordenada y a la que se moverá el dron.

z

La coordenada z a la que se moverá el dron.

units

Opcional. La unidad que representa la distancia:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES

move_velocity

Opcional. La velocidad a la que se moverá el dron como porcentaje.

climb_velocity

Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje.

wait

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

# Move diagonally to (300, 300, 800)
drone.take_off(climb_to=300)
wait(2, SECONDS)
drone.move_to(x=300, y=300, z=800)
wait(2, SECONDS)
drone.land()

turn#

turn gira el dron en una dirección específica usando la corriente set_turn_velocity.

Uso:

drone.turn(direction, velocity)

Parámetros

Descripción

direction

La dirección en la que girará el dron: LEFT o RIGHT.

velocity

Opcional. La velocidad a la que girará el dron como porcentaje.

# Turn to the right for 2 seconds
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn(RIGHT, 50)
wait(2, SECONDS)
drone.land()

turn_for#

turn_for gira el dron en una dirección específica durante una distancia determinada en relación con su dirección actual de orientación utilizando la set_turn_velocity.

Uso:

drone.turn_for(direction, angle, velocity, wait)

Parámetros

Descripción

direction

La dirección en la que girará el dron: LEFT o RIGHT.

angle

El ángulo, como un número entero o decimal (float), en el que gira el dron, con un rango de 0 a 359 grados.

velocity

Opcional. La velocidad a la que girará el dron como porcentaje.

wait

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

# Turn around, then land
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.turn_for(RIGHT, 180)
wait(1, SECONDS)
drone.land()

turn_to#

turn_to hace girar el dron para que mire hacia una dirección específica usando la set_turn_velocity.

Uso:

drone.turn_to(heading, velocity, wait)

Parámetros

Descripción

heading

El rumbo hacia el que girará el dron varía de 0 a 360 grados.

velocity

Opcional. La velocidad a la que girará el dron como porcentaje.

wait

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

# Turn to face each of the cardinal headings
drone.take_off(climb_to=500)
drone.turn_to(heading=90, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=180, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=270, velocity=50)
wait(3, SECONDS)
drone.turn_to(heading=0, velocity=50)
wait(3, SECONDS)
drone.land()

move_with_vectors#

move_with_vectors mueve el dron usando movimiento basado en vectores, combinando movimiento a lo largo del eje x (horizontal) y el eje y (vertical) mientras también rota el dron.

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

Uso:

drone.move_with_vectors(forward, rightward, upward, rotation)

Parámetros

Descripción

forward

Velocidad del dron en el eje Y (movimiento hacia adelante y hacia atrás). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos indican retroceso y los positivos avance.

rightward

Velocidad del dron en el eje X (movimiento lateral). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos se mueven a la izquierda y los positivos a la derecha.

upward

Velocidad del dron en el eje Z (movimiento ascendente y descendente). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos indican una disminución y los positivos una disminución.

rotation

Velocidad de rotación del dron. Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos giran en sentido antihorario y los positivos en sentido horario.

# Move with controller
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

Mutadores#

set_steering_mode#

set_steering_mode establece el punto de vista que se utiliza al dirigir el dron.

Uso:

drone.set_steering_mode(style)

Parámetros

Descripción

style

Establece el POV que se usa para dirigir el dron. HEADLESS significa que el dron se mueve en relación con la posición inicial del proyecto. STANDARD se usa por defecto y hace que el dron se mueva en relación con la posición en la que está orientado.

# Steer based on the drone's starting orientation
# until button 7 is pressed
drone.take_off(climb_to=500)
drone.set_steering_mode(HEADLESS)
while not controller.button7.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)
drone.land()

set_movement_mode#

set_movement_mode establece el estilo de movimiento del dron.

Este estilo de movimiento se utiliza cuando se vuela el dron con un controlador.

Uso:

drone.set_movement_mode(style)

Parámetros

Descripción

style

Establece la velocidad que se utiliza para dirigir el dron.

  • BALANCED – El dron se mueve a una velocidad base media.
  • PERFORMANCE – El dron se mueve a una velocidad base más rápida.
  • PRECISION (predeterminado) – El dron se mueve a una velocidad base más lenta.

# Control the drone with the balanced movement style
drone.take_off(climb_to=500)
drone.set_movement_mode(BALANCED)
while not controller.button5.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)
drone.land()

set_climb_velocity#

set_climb_velocity establece la velocidad de ascenso predeterminada como un porcentaje. Esto afectará a cualquier método posterior relacionado con el ascenso. La velocidad de ascenso predeterminada es del 50 %.

Uso:

drone.set_climb_velocity(velocity)

Parámetros

Descripción

velocity

La velocidad a la que el dron ascenderá expresada como porcentaje.

# Raise the drone quickly before landing
drone.take_off(climb_to=300)
wait(1, SECONDS)
drone.set_climb_velocity(100)
drone.climb_for(direction=UP, distance=500)
wait(1, SECONDS)
drone.land()

set_move_velocity#

set_move_velocity establece la velocidad de movimiento predeterminada como un porcentaje. Esto afectará a cualquier método posterior relacionado con el movimiento. La velocidad de movimiento predeterminada es del 50 %.

Uso:

drone.set_move_velocity(velocity)

Parámetros

Descripción

velocity

La velocidad a la que se moverá el dron como porcentaje.

# Move forward quickly, then reverse slowly
drone.take_off(climb_to=500)
drone.set_move_velocity(100)
drone.move_for(direction=0, distance=500)
wait(3, SECONDS)
drone.set_move_velocity(20)
drone.move_for(direction=180, distance=500)
wait(5, SECONDS)
drone.land()

set_turn_velocity#

set_turn_velocity establece la velocidad de giro predeterminada como un porcentaje. Esto afectará a cualquier método posterior relacionado con el giro. La velocidad de giro predeterminada es del 50 %.

Uso:

drone.set_turn_velocity(velocity)

Parámetros

Descripción

velocity

La velocidad a la que girará el dron expresada en porcentaje.

# Turn clockwise quickly, then counterclockwise slowly
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn_for(RIGHT, 360)
wait(3, SECONDS)
drone.set_turn_velocity(20)
drone.turn_for(LEFT, 360)
wait(5, SECONDS)
drone.land()

set_max_z_height#

set_max_z_height establece un límite a la altura máxima a la que volará el dron.

Uso:

drone.set_max_z_height(z_height, units)

Parámetros

Descripción

z_height

El valor máximo del eje z, como número entero o decimal, que el dron no volará por encima, en un rango de 1000 a 5000 mm o de 40 a 196 pulgadas.

units

Opcional. Las unidades de distancia son:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Fly with controller under 1000 mm
drone.set_max_z_height(1000, MM)
drone.take_off(climb_to=500)
while not controller.button7.pressing():
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
drone.land()

set_xyz_position#

set_xyz_position establece la coordenada x, y o z actual del dron a un valor especificado.

Uso:

drone.set_xyz_position(x, y, z, units)

Nota: Todos los parámetros son opcionales, pero al menos uno (x, y, o z) debe especificarse.

Parámetros

Descripción

x

Opcional. La coordenada x que se establecerá para el dron en units como un decimal (float) o un entero.

y

Opcional. La coordenada y que se establecerá para el dron en units como un decimal (float) o un entero.

z

Opcional. La coordenada z que se establecerá para el dron en units como un decimal (float) o un entero.

units

Opcional. La unidad que representa la distancia:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Set a new z position, then fly to z position -300
drone.take_off(climb_to=800)
drone.set_xyz_position(z=0)
wait(1, SECONDS)
drone.climb(DOWN, 50)
while not drone.get_z_position() < -300:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

Captadores#

get_max_z_height#

get_max_z_height devuelve la altura máxima que puede alcanzar el dron como un número entero.

Uso:

drone.get_max_z_height(units)

Parámetros

Descripción

units

Opcional. Unidad de medida:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Display the new z height limit
controller.screen.print(drone.get_max_z_height(MM))
controller.screen.next_row()
drone.take_off(climb_to=500)
drone.set_max_z_height(1000)
controller.screen.print(drone.get_max_z_height(MM))
wait(1, SECONDS)
drone.land()

get_flight_state#

get_flight_state devuelve el estado de vuelo actual del dron como un DroneFlightStateType:

  • MOTOR_OFF - Ningún otro estado de vuelo es verdadero.

  • CALIBRATION - El dron está calibrando sus sensores.

  • MOTOR_START - El dron está arrancando sus motores.

  • FLIGHT_READY - El dron está listo para volar.

  • FLIGHT - El dron está en vuelo.

Usage:
drone.get_flight_state()

Parámetros

Descripción

Este método no tiene parámetros.

# Report the flight status as the drone takes off
controller.screen.print("Preparing for flight!")
controller.screen.next_row()
drone.take_off(climb_to=800, wait=False)
while not drone.get_flight_state() == MOTOR_START:
    wait(5, MSEC)
controller.screen.print("Motors starting...")
controller.screen.next_row()
while not drone.get_flight_state() == FLIGHT:
    wait(5, MSEC)
controller.screen.print("Take off!")

get_x_position#

get_x_position devuelve la coordenada x del dron como un decimal (float).

Usage:
drone.get_x_position(units)

Parámetros

Descripción

units

Opcional. La unidad que representa la posición:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Move to (200, 0, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=90, velocity=50)
while not drone.get_x_position() > 200:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_y_position#

get_y_position devuelve la coordenada y del dron como un decimal (float).

Uso:

drone.get_y_position(units)

Parámetros

Descripción

units

Opcional. La unidad que representa la posición:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Move to (0, 200, 500)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.move_at(direction=0, velocity=50)
while not drone.get_y_position() > 200:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_z_position#

get_y_position devuelve la coordenada z del dron como un decimal (float).

Uso:

drone.get_z_position(units)

Parámetros

Descripción

units

Opcional. La unidad que representa la posición:

  • CM – Centímetros
  • MM (predeterminado) – Milímetros
  • INCHES
# Move to (0, 0, 800)
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.climb(UP, 50)
while not drone.get_z_position() > 800:
    wait(5, MSEC)
drone.hover()
wait(1, SECONDS)
drone.land()

get_safe_mode#

get_safe_mode devuelve un valor booleano Boolean que indica si el bloqueo de hélice está habilitado en el dron.

  • True – El bloqueo de hélice está habilitado.

  • False – El bloqueo de hélice no está habilitado.

Uso:

drone.get_safe_mode()

Parámetros

Descripción

Este método no tiene parámetros.

# Change the sound by enabling the Propeller Lock
while True:
    if drone.get_safe_mode():
        controller.sound.play(FAULT)
        while controller.sound.is_active():
            wait(50, MSEC)
    else:
        controller.sound.play(SUCCESS)
        while controller.sound.is_active():
            wait(50, MSEC)
    wait(5, MSEC)

is_climb_active#

is_climb_active devuelve un Boolean que indica si el dron está ascendiendo.

  • True – El dron está ascendiendo actualmente.

  • False – El dron no está ascendiendo.

Uso:

drone.is_climb_active()

Parámetros

Descripción

Este método no tiene parámetros.

# After the drone starts to climb, play a sound and land
drone.take_off(climb_to=500)
drone.climb(UP, 50)
wait(3, SECONDS)
if drone.is_climb_active():
    controller.sound.play(SUCCESS)
    drone.land()

is_move_active#

is_move_active devuelve un Boolean que indica si el dron está utilizando actualmente un método de movimiento.

  • True – El dron está utilizando actualmente un método de movimiento.

  • False – El dron no está utilizando actualmente un método de movimiento.

Uso:

drone.is_move_active()

Parámetros

Descripción

Este método no tiene parámetros.

# After the drone starts to move, play a sound and land
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
wait(2, SECONDS)
if drone.is_move_active():
    controller.sound.play(SUCCESS)
    drone.land()

is_turn_active#

is_turn_active devuelve un Boolean que indica si el dron está girando.

  • True – El dron está girando actualmente.

  • False – El dron no está girando.

Uso:

drone.is_turn_active()

Parámetros

Descripción

Este método no tiene parámetros.

# After the drone starts to turn, play a sound and land
drone.take_off(climb_to=500)
drone.turn(RIGHT)
wait(2, SECONDS)
if drone.is_turn_active():
    controller.sound.play(LOOPING)
    while controller.sound.is_active():
        wait(50, MSEC)
    drone.land()

is_hovering#

is_hovering devuelve un Boolean que indica si el dron está manteniendo su posición (flotando).

  • True – El dron está manteniendo su posición (flotando).

  • False – El dron está cambiando de posición.

Uso:

drone.is_hovering()

Parámetros

Descripción

Este método no tiene parámetros.

# Play a sound after the drone has finished taking off
drone.take_off(climb_to=700)
while not drone.is_hovering():
    wait(5, MSEC)
controller.sound.play(PAUSE)
wait(2, SECONDS)
drone.land()

is_taking_off#

is_taking_off devuelve un Boolean que indica si el dron está en proceso de despegar.

  • True – El dron se encuentra actualmente en proceso de despegue.

  • False – El dron no está en proceso de despegar.

Uso:

drone.is_taking_off()

Parámetros

Descripción

Este método no tiene parámetros.

# Play sounds while the drone is taking off
drone.take_off(700, wait=False)
wait(1, SECONDS)
while drone.is_taking_off():
    controller.sound.play(LOOPING)
    wait(5, MSEC)

is_landing#

is_landing devuelve un Boolean que indica si el dron está en proceso de aterrizaje.

  • True – El dron se encuentra actualmente en proceso de aterrizaje.

  • False – El dron no está en proceso de aterrizaje.

Uso:

drone.is_landing()

Parámetros

Descripción

Este método no tiene parámetros.

# Play sounds while the drone is landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land(wait=False)
wait(1, SECONDS)
while drone.is_landing():
    controller.sound.play(LOOPING)
    wait(5, MSEC)

is_landed#

is_landed devuelve un Boolean que indica si el dron está actualmente en tierra.

  • True – El dron ha aterrizado.

  • False – El dron no ha aterrizado.

Uso:

drone.is_landed()

Parámetros

Descripción

Este método no tiene parámetros.

# Celebrate a successful landing
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
wait(1, SECONDS)
if drone.is_landed():
    controller.sound.play(SUCCESS)