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 – 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

Conseguidores

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

climb_to

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

units

The unit to use:

  • CM - Centimeters
  • MM - Millimeters
  • INCHES

wait

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

wait

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

direction

The direction in which the drone will fly: UP or 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 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

direction

The direction in which the drone will fly: UP or DOWN.

distance

La distancia que volará el dron.

units

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

z

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

units

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • INCHES

velocity

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

wait

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

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

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

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • INCHES

velocity

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

wait

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

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

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

direction

The direction the drone will turn: LEFT or 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 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

direction

The direction the drone will turn: LEFT or 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

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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

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

Optional. wait=True (default) makes the project wait until the robot is done moving before the next line of code runs. wait=False makes the next line of code run right away.

# 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 along the x-axis (horizontal) and y-axis (vertical) while also rotating the drone.

Note: This method sets movement and turn velocity values directly, so it does not use set_move_velocity or 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 sets the viewpoint that is used when steering the drone.

Uso:

drone.set_steering_mode(style)

Parámetros

Descripción

style

Sets the POV that is used to steer the drone. HEADLESS means the drone moves relative to where it was facing at the start of the project. STANDARD is used by default, and causes the drone to move relative to where it is facing.

# 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

style

Sets the speed that is used to steer the drone.

  • BALANCED – The drone moves at a medium base speed.
  • PERFORMANCE – The drone moves at a faster base speed.
  • PRECISION (default) – The drone moves at a slower base speed.

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

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 sets the default movement velocity 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

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 sets the default turning velocity 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

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 sets a limit to how high the drone will fly.

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

Optional. The distance units are:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 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

x

Optional. The x coordinate to set for the drone in units as a decimal (float) or integer.

y

Optional. The y coordinate to set for the drone in units as a decimal (float) or integer.

z

Optional. The z coordinate to set for the drone in units as a decimal (float) or integer.

units

Optional. The unit that represents the distance:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 returns the maximum height that the drone can reach as an integer.

Uso:

drone.get_max_z_height(units)

Parámetros

Descripción

units

Optional. The unit of measurement:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 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 decimal (float).

Usage:
drone.get_x_position(units)

Parámetros

Descripción

units

Optional. The unit that represents the position:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 returns the drone’s y coordinate as a decimal (float).

Uso:

drone.get_y_position(units)

Parámetros

Descripción

units

Optional. The unit that represents the position:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 returns the drone’s z coordinate as a decimal (float).

Uso:

drone.get_z_position(units)

Parámetros

Descripción

units

Optional. The unit that represents the position:

  • CM – Centimeters
  • MM (default) – Millimeters
  • 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 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)