Movimiento#

Introducción#

El VEX AIR Drone cuenta con cuatro hélices, lo que le permite moverse en cualquier dirección y girar de forma independiente. El movimiento proporciona métodos para el movimiento, el giro, los ajustes de velocidad y el seguimiento de la posición.

Esfera de brújula circular de 0-360 grados rodeando un dron con 4 hélices. La parte frontal del dron está orientada 0 grados en el dial de la brújula.

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

Acciones

  • take_off – Levanta el dron a una altura especificada.

  • land – Aterriza el dron.

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

  • climb – Mueve el dron en una dirección vertical especificada.

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

  • climb_to – Mueve el dron a una altitud especificada.

  • move_at – Mueve el dron a un rumbo y velocidad especificados.

  • move_for – Mueve el dron a un rumbo especificado a una distancia especificada.

  • move_to – Mueve el dron a una posición especificada mientras mantiene el mismo rumbo.

  • turn: gira el dron a la izquierda o a la derecha.

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

  • turn_to – Gira el dron para que se enfrente a un encabezado específico.

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

Mutadores

Getters

Acciones#

take_off#

take_off arranca las hélices y levanta el dron en el aire. Este método debe usarse antes de que se puedan realizar otros movimientos.

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

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

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

land#

land baja el dron al suelo. Las hélices continuará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 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.

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

hover#

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

el climb mueve el dron en una dirección vertical especificada.

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 subirá 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 especificada para 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 a la 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 el dron subirá como porcentaje. Si no se especifica la velocidad, 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 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.

# 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 mover 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 un número entero o decimal, a la que subirá 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 el dron subirá como porcentaje.

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.

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

Uso:

drone.move_at(angle, velocity)

Parámetros

Descripción

angle

El ángulo, como un entero o decimal, en el que se mueve el dron, que oscila entre 0 y 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 para una distancia específica utilizando la set_move_velocity actual.

Uso:

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

Parámetros

Descripción

angle

El ángulo, como un número entero o decimal (float), en el que se mueve el dron, que oscila entre 0 y 359 grados.

distance

La distancia, como un 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 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 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 especificada en el aire mientras mantiene el mismo rumbo.

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 el dron subirá como porcentaje.

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 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 utilizando 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 para una distancia establecida en relación con su dirección de orientación actual utilizando la corriente 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, que oscila entre 0 y 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 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 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 gira el dron para que se enfrente a un rumbo específico utilizando la set_turn_velocity actual.

Uso:

drone.turn_to(heading, velocity, wait)

Parámetros

Descripción

heading

El rumbo al que girará el dron será 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 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 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 utilizando un movimiento basado en vectores, combinando el movimiento a lo largo del eje x (horizontal) y el eje y (vertical) al tiempo que gira el dron.

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:

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

Parámetros

Descripción

forward

La velocidad del dron a lo largo del eje Y (movimiento hacia adelante y hacia atrás). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos se mueven hacia atrás y los valores positivos se mueven hacia adelante.

rightward

La velocidad del dron a lo largo del eje X (movimiento de lado a lado). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos se mueven a la izquierda y los valores positivos se mueven a la derecha.

upward

La velocidad del dron a lo largo del eje Z (movimiento hacia arriba y hacia abajo). Acepta un valor de -100 a 100 como porcentaje, donde los valores negativos se mueven hacia abajo y los valores positivos se mueven hacia arriba.

rotation

La 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 valores positivos giran 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 PUNTO DE VISTA que se utiliza para dirigir el dron. HEADLESS significa que el dron se mueve en relación con el lugar al que se enfrentaba al inicio del proyecto STANDARD se usa de forma predeterminada y hace que el dron se mueva en relación con el lugar al que se enfrenta.

# 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 de 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 cualquiera de los siguientes métodos relacionados con la escalada. 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 subirá 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 cualquiera de los siguientes métodos relacionados con la mudanza. 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 cualquiera de los siguientes métodos relacionados 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 como 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 de la altura 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 un 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 las coordenadas x, y o z actuales del dron en 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 a establecer para el dron en units como decimal (float) o entero.

y

Opcional. La coordenada y a establecer para el dron en units como decimal (float) o entero.

z

Opcional. La coordenada z a establecer para el dron en units como decimal (float) o 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()

Getters#

get_max_z_height#

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

Uso:

drone.get_max_z_height(units)

Parámetros

Descripción

units

Opcional. La unidad de medida:

  • CM – Centímetros
  • MM (por defecto) – 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 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 Boolean que indica si el bloqueo de la hélice está habilitado en el dron.

  • True : el bloqueo de la hélice está habilitado.

  • False : el bloqueo de la 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á escalando.

  • True : el dron está escalando actualmente.

  • False – El dron no está escalando.

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 mantiene su posición (hovering).

  • True : el dron mantiene actualmente su posición (flotando).

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

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 está actualmente en proceso de despegar.

  • 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 está 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á aterrizado actualmente.

  • True : el dron aterrizó.

  • False : el dron no aterrizó.

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)