Movimiento#
Introducción#
El dron VEX AIR cuenta con cuatro hélices que le permiten moverse en cualquier dirección y girar de forma independiente. El sistema de movimiento permite controlar el movimiento, los giros, la velocidad y el seguimiento de la posición.
A continuación se muestra una lista de todos los métodos disponibles:
Comportamiento
take_off
– Lifts the drone to a specified height.land
– Lands the drone.hover
- Keeps the drone at its position.climb
– Moves the drone in a specified vertical direction.climb_for
– Moves the drone in a specified vertical direction for a specific distance.climb_to
– Moves the drone to a specified altitude.move_at
– Moves the drone at a specified heading and velocity.move_for
– Moves the drone at a specified heading for a specified distance.move_to
– Moves the drone to a specified position while maintaining the same heading.turn
– Turns the drone left or right.turn_for
– Turns the drone a set number of degrees.turn_to
– Turns the drone to face a specific heading.move_with_vectors
– Moves the drone using vector-based x, y, z, and rotation values.
Mutadores
set_steering_mode
– Sets the POV for steering the drone.set_movement_mode
– Sets the movement style of the drone.set_climb_velocity
– Sets the default climbing speed.set_move_velocity
– Sets the default movement speed.set_turn_velocity
- Sets the default turning speed.set_max_z_height
- Sets a limit to how high the drone will fly.set_xyz_position
– Sets the drone’s current position.
Conseguidores
get_max_z_height
– Returns the maximum height that the drone can reach.get_flight_state
– Returns the current state of the drone.get_x_position
– Returns the drone’s x-coordinate.get_y_position
– Returns the drone’s y-coordinate.get_z_position
– Returns the drone’s z-coordinate.get_safe_mode
– Returns the drone’s propellor lock state.is_climb_active
– Returns whether the drone is currently climbing.is_move_active
– Returns whether the drone is currently moving.is_turn_active
– Returns whether the drone is currently turning.is_hovering
- Returns whether the drone is currently hovering.is_taking_off
– Returns whether the drone is currently taking off.is_landing
– Returns whether the drone is currently landing.is_landed
- Returns whether the drone is currently landed.
Comportamiento#
take_off#
take_off
starts the propellers and lifts the drone into the air. This method must be used before other movements can be made.
Uso:
drone.take_off(climb_to, units, wait)
Parámetros |
Descripción |
---|---|
|
La posición z a la que volará el dron. |
|
The unit to use:
|
|
Optional.
|
# Fly for 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
land#
land
lowers the drone to the ground. The propellers will continue to run until the project is stopped.
Uso:
drone.land(wait)
Parámetros |
Descripción |
---|---|
|
Optional.
|
# Land after 1 second
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
hover#
hover
stops the drone from moving in any direction and holds its current position in the air.
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
moves the drone in a specified vertical direction.
Usage:
drone.climb(direction, velocity)
Parámetros |
Descripción |
---|---|
|
The direction in which the drone will fly:
|
|
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
moves the drone in a specified vertical direction for a specific distance.
Uso:
drone.climb_for(direction, distance, units, velocity, wait)
Parámetros |
Descripción |
---|---|
|
The direction in which the drone will fly:
|
|
La distancia que volará el dron. |
|
Optional. The unit that represents the distance:
|
|
Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje. Si no se especifica, la velocidad predeterminada es del 50 %. |
|
Optional.
|
# 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
moves the drone to a specific z position.
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. |
|
Optional. The unit that represents the distance:
|
|
Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje. |
|
Optional.
|
# 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
moves the drone at a specified angle and velocity.
Uso:
drone.move_at(angle, velocity)
Parámetros |
Descripción |
---|---|
|
El ángulo, en número entero o decimal, en el que se mueve el dron, que va de 0 a 360 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
moves the drone in a specific direction for a specific distance using the current set_move_velocity
.
Uso:
drone.move_for(angle, distance, units, velocity, wait)
Parámetros |
Descripción |
---|---|
|
El ángulo, como número entero o flotante, en el que se mueve el dron, que varía de 0 a 360 grados. |
|
La distancia, en número entero o decimal, que se moverá el dron. |
|
Optional. The unit that represents the distance:
|
|
Opcional. La velocidad a la que se moverá el dron como porcentaje. |
|
Optional.
|
# 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
moves the drone to a specified position in the air while maintaining the same heading.
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. |
|
Optional. The unit that represents the distance:
|
|
Opcional. La velocidad a la que se moverá el dron como porcentaje. |
|
Opcional. La velocidad a la que ascenderá el dron, expresada en porcentaje. |
|
Optional.
|
# 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
turns the drone in a specific direction using the current set_turn_velocity
.
Uso:
drone.turn(direction, velocity)
Parámetros |
Descripción |
---|---|
|
The direction the drone will turn:
|
|
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
turns the drone in a specified direction for a set distance relative to its current facing direction using the current set_turn_velocity
.
Uso:
drone.turn_for(direction, angle, velocity, wait)
Parámetros |
Descripción |
---|---|
|
The direction the drone will turn:
|
|
El ángulo, como número entero o flotante, en el que gira el dron, que varía de 0 a 360 grados. |
|
Opcional. La velocidad a la que girará el dron como porcentaje. |
|
Optional.
|
# 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
turns the drone to face a specific heading using the current 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. |
|
Optional.
|
# 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
moves the drone using vector-based motion, combining movement on the X-axis, Y-axis, and Z-axis while having the drone rotate at the same time.
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
sets the viewpoint that is used when steering the drone.
Uso:
drone.set_steering_mode(style)
Parámetros |
Descripción |
---|---|
|
Sets the POV that is used to steer the drone.
|
# 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
sets the drone’s movement style.
Este estilo de movimiento se utiliza cuando se vuela el dron con un controlador.
Uso:
drone.set_movement_mode(style)
Parámetros |
Descripción |
---|---|
|
Sets the speed that is used to steer the drone.
|
# 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
sets the default climbing speed as a percentage. This will affect any following methods related to climbing. The default climb velocity is 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
sets the default movement speed as a percentage. This will affect any following methods related to moving. The default move velocity is 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
sets the default movement speed as a percentage. This will affect any following methods related to turning. The default turn velocity is 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
sets a limit to how high the drone will fly.
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. |
|
Optional. The distance units are:
|
# 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
sets the drone’s current x, y, or z coordinate to a specified value.
Uso:
drone.set_xyz_position(x, y, z, units)
Note: All parameters are optional, but at least one (x
, y
, or z
) must be specified.
Parámetros |
Descripción |
---|---|
|
Optional. The x coordinate to set for the drone in |
|
Optional. The y coordinate to set for the drone in |
|
Optional. The z coordinate to set for the drone in |
|
Optional. The unit that represents the distance:
|
# 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
returns the maximum height that the drone can reach as an integer.
Uso:
drone.get_max_z_height(units)
Parámetros |
Descripción |
---|---|
|
Optional. The unit of measurement:
|
# 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
returns the drone’s current flying state as a DroneFlightStateType:
MOTOR_OFF
- No other flight state is true.CALIBRATION
- The drone is calibrating its sensors.MOTOR_START
- The drone is starting its motors.FLIGHT_READY
- The drone is ready to fly.FLIGHT
- The drone is in flight.
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
returns the drone’s x coordinate as a float.
Usage:
drone.get_x_position(units)
Parámetros |
Descripción |
---|---|
|
Optional. The unit that represents the position:
|
# 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
returns the drone’s y coordinate as a float.
Uso:
drone.get_y_position(units)
Parámetros |
Descripción |
---|---|
|
Optional. The unit that represents the position:
|
# 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
returns the drone’s z coordinate as a float.
Uso:
drone.get_z_position(units)
Parámetros |
Descripción |
---|---|
|
Optional. The unit that represents the position:
|
# 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
returns a Boolean indicating whether the Propeller Lock is enabled on the drone.
True
– Propeller Lock is enabled.False
– Propeller Lock is not enabled.
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
returns a Boolean indicating whether the drone is climbing.
True
– The drone is currently climbing.False
– The drone is not climbing.
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
returns a Boolean indicating whether the drone is currently using a move method.
True
– The drone is currently using a move method.False
– The drone is not currently using a move method.
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
returns a Boolean indicating whether the drone is turning.
True
– The drone is currently turning.False
– The drone is not turning.
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
returns a Boolean indicating whether the drone is maintaining its position (hovering).
True
– The drone is currently maintaining its position (hovering).False
– The drone is currently changing its position.
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
returns a Boolean indicating whether the drone is in the process of taking off.
True
– The drone is currently in the process of taking off.False
– The drone is not in the process of taking off.
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
returns a Boolean indicating whether the drone is in the process of landing.
True
– The drone is currently in the process of landing.False
– The drone is not in the process of landing.
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
returns a Boolean indicating whether the drone is currently landed.
True
– The drone is landed.False
– The drone is not landed.
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)