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.

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
set_steering_mode– Establece el POV 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 a la altura máxima que volará el dron.set_xyz_position– Establece la posición actual del dron.
Conseguidores
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á ascendiendo 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 en ese momento.is_landing– Devuelve si el dron está aterrizando actualmente.is_landed- Devuelve si el dron está actualmente aterrizado.
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 |
|---|---|
|
La posición z (altura) a la que volará el dron. |
|
Unidad a utilizar:
|
|
Opcional. |
# 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 |
|---|---|
|
Opcional. |
# 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 |
|---|---|
|
La dirección en la que volará el dron: |
|
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 |
|---|---|
|
La dirección en la que volará el dron: |
|
La distancia que volará el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje. Si no se especifica, 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 mueve 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 número entero o decimal, a la que ascenderá el dron. |
|
Opcional. La unidad que representa la distancia:
|
|
Opcional. La velocidad a la que ascenderá el dron, expresada en 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 específicos.
Uso:
drone.move_at(angle, velocity)
Parámetros |
Descripción |
|---|---|
|
El ángulo, expresado como número entero o decimal, en el que se mueve el dron, con un rango de 0 a 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 durante una distancia específica utilizando la set_move_velocity.
Uso:
drone.move_for(angle, distance, units, velocity, wait)
Parámetros |
Descripción |
|---|---|
|
El ángulo, como un entero o decimal (float), en el que se mueve el dron, con un rango de 0 a 359 grados. |
|
La distancia, en 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 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 |
|---|---|
|
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 ascenderá el dron, expresada en 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 usando 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 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 |
|---|---|
|
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, con un rango de 0 a 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 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 |
|---|---|
|
El rumbo hacia el que girará el dron varía 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 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 |
|---|---|
|
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. |
|
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. |
|
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. |
|
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 |
|---|---|
|
Establece el POV que se usa 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 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 |
|---|---|
|
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 |
|---|---|
|
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 |
|---|---|
|
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 |
|---|---|
|
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. |
|
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 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 |
|---|---|
|
Opcional. La coordenada x que se establecerá para el dron en |
|
Opcional. La coordenada y que se establecerá para el dron en |
|
Opcional. La coordenada z que se 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()
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 |
|---|---|
|
Opcional. 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 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 |
|---|---|
|
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 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)