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.

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
set_steering_mode– Establece el PUNTO DE VISTA para dirigir el dron.set_movement_mode– Establece el estilo de movimiento del dron.set_climb_velocity– Establece la velocidad de ascenso predeterminada.set_move_velocity– Establece la velocidad de movimiento predeterminada.set_turn_velocity- Establece la velocidad de giro predeterminada.set_max_z_height- Establece un límite para la altura a la que volará el dron.set_xyz_position– Establece la posición actual del dron.
Getters
get_max_z_height– Devuelve la altura máxima que puede alcanzar el dron.get_flight_state– Devuelve el estado actual del dron.get_x_position– Devuelve la coordenada x del dron.get_y_position– Devuelve la coordenada y del dron.get_z_position– Devuelve la coordenada z del dron.get_safe_mode– Devuelve el estado de bloqueo de la hélice del dron.is_climb_active– Devuelve si el dron está escalando actualmente.is_move_active– Devuelve si el dron se está moviendo actualmente.is_turn_active– Devuelve si el dron está girando actualmente.is_hovering- Devuelve si el dron está actualmente flotando.is_taking_off– Devuelve si el dron está despegando actualmente.is_landing– Devuelve si el dron está aterrizando actualmente.is_landed- Devuelve si el dron está aterrizado actualmente.
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 |
|---|---|
|
La posición z (altura) a la que volará el dron. |
|
La unidad a utilizar:
|
|
Opcional. |
# 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 |
|---|---|
|
Opcional. |
# 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 |
|---|---|
|
La dirección en la que volará el dron: |
|
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 |
|---|---|
|
La dirección en la que volará el dron: |
|
La distancia a la que volará el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que el dron subirá como porcentaje. Si no se especifica la velocidad, la velocidad predeterminada es del 50%. |
|
Opcional. |
# 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 |
|---|---|
|
La posición z, como un número entero o decimal, a la que subirá el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que el dron subirá como porcentaje. |
|
Opcional. |
# 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 |
|---|---|
|
El ángulo, como un entero o decimal, en el que se mueve el dron, que oscila entre 0 y 359 grados. |
|
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 |
|---|---|
|
El ángulo, como un número entero o decimal (float), en el que se mueve el dron, que oscila entre 0 y 359 grados. |
|
La distancia, como un número entero o decimal, que se moverá el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que se moverá el dron como porcentaje. |
|
Opcional. |
# 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 |
|---|---|
|
La coordenada x a la que se moverá el dron. |
|
La coordenada y a la que se moverá el dron. |
|
La coordenada z a la que se moverá el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que se moverá el dron como porcentaje. |
|
Opcional. La velocidad a la que el dron subirá como porcentaje. |
|
Opcional. |
# 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 |
|---|---|
|
La dirección en la que girará el dron: |
|
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 |
|---|---|
|
La dirección en la que girará el dron: |
|
El ángulo, como un número entero o decimal (float), en el que gira el dron, que oscila entre 0 y 359 grados. |
|
Opcional. La velocidad a la que girará el dron como porcentaje. |
|
Opcional. |
# 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 |
|---|---|
|
El rumbo al que girará el dron será de 0 a 360 grados. |
|
Opcional. La velocidad a la que girará el dron como porcentaje. |
|
Opcional. |
# 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 |
|---|---|
|
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. |
|
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. |
|
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. |
|
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 |
|---|---|
|
Establece el PUNTO DE VISTA que se utiliza para dirigir el dron. |
# 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 |
|---|---|
|
Establece la velocidad que se utiliza para dirigir el dron.
|
# 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 |
|---|---|
|
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 |
|---|---|
|
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 |
|---|---|
|
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 |
|---|---|
|
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. |
|
Opcional. Las unidades de distancia son:
|
# 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 |
|---|---|
|
Opcional. La coordenada x a establecer para el dron en |
|
Opcional. La coordenada y a establecer para el dron en |
|
Opcional. La coordenada z a establecer para el dron en |
|
Opcional. La unidad que representa la distancia:
|
# 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 |
|---|---|
|
Opcional. La unidad de medida:
|
# 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 |
|---|---|
|
Opcional. La unidad que representa la posición:
|
# 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 |
|---|---|
|
Opcional. La unidad que representa la posición:
|
# 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 |
|---|---|
|
Opcional. La unidad que representa la posición:
|
# 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)