Sensores#

Introducción#

El dron VEX AIR incluye un sensor inercial para medir el movimiento de rotación y para detectar cambios en el movimiento, así como un sensor de alcance para detectar distancias. El dron VEX AIR también puede realizar un seguimiento de los niveles de batería. Estos sensores permiten que el dron rastree su orientación, rumbo, aceleración y distancia de los objetos.

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

Inercial: rastrea el movimiento de rotación del dron.

  • get_rotation – Devuelve cuánto ha girado el dron desde que comenzó.

  • get_heading – Devuelve el encabezado actual (0 a 359,99°).

  • get_yaw – Devuelve el ángulo de guiñada (–180 a 180°).

  • get_roll – Devuelve el ángulo de balanceo (–180 a 180°).

  • get_pitch – Devuelve el ángulo de inclinación (–180 a 180°).

  • reset_rotation – Restablece el valor de rotación a 0.

  • reset_heading – Establece el encabezado actual en 0.

  • set_heading – Establece el encabezado en un valor específico.

  • get_acceleration – Devuelve la aceleración en una dirección específica.

  • get_turn_rate – Devuelve la velocidad de giro en grados por segundo.

Rango: detecta distancias desde los sensores de rango del dron.

  • get_distance — Devuelve la distancia entre el sensor de rango seleccionado y el objeto detectado más cercano.

Batería: devuelve el porcentaje de batería del dron.

Inercial#

get_rotation#

get_rotation devuelve cuántos grados ha girado el dron desde que comenzó. Suma todas las vueltas y devuelve el total en grados: positivo para el sentido de las agujas del reloj, negativo para el sentido contrario a las agujas del reloj.

Usage:
drone.inertial.get_rotation()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the rotation after turning
drone.take_off(climb_to=500)
drone.turn_for(LEFT, 450, 50)
print(drone.inertial.get_rotation(), end="")
drone.land()

get_heading#

get_heading devuelve el ángulo de rumbo del dron como un flotador en el rango de 0 a 359,99 grados.

Usage:
drone.inertial.get_heading()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the drone's heading after turning
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn(RIGHT)
wait(5, SECONDS)
controller.screen.print("Heading: ")
controller.screen.print(drone.inertial.get_heading())
drone.land()

get_yaw#

get_yaw devuelve el ángulo de guiñada del dron en el rango de –180.0 a 180.0 grados como un flotador.

La siguiente imagen utiliza una flecha para mostrar la dirección de rotación positiva de la guiñada.

Un dron VEX AIR con la nariz orientada hacia la esquina inferior derecha, con una flecha azul que se extiende hacia abajo desde el centro. Alrededor de la flecha azul, una flecha curva negra apunta en el sentido de las agujas del reloj y está etiquetada como Guiñada, lo que indica la dirección positiva de la guiñada.

Usage:
drone.inertial.get_yaw

Parámetros

Descripción

Este método no tiene parámetros.

# Display the yaw angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Yaw: ")
    controller.screen.print(drone.inertial.get_yaw())
    wait(0.2, SECONDS)

get_roll#

get_roll devuelve el ángulo de balanceo del dron en el rango de –180.0 a 180.0 grados como flotación.

La siguiente imagen usa una flecha para mostrar la dirección de rotación positiva para el rollo.

Un dron VEX AIR con la nariz orientada hacia la esquina inferior derecha, con una flecha verde que se extiende directamente desde la nariz del dron. Alrededor de la flecha verde, una flecha curva negra apunta en sentido contrario a las agujas del reloj, lo que indica la dirección positiva del balanceo.

Usage:
drone.inertial.get_roll()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the roll angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Roll: ")
    controller.screen.print(drone.inertial.get_roll())
    wait(0.2, SECONDS)

get_pitch#

get_pitch devuelve el ángulo de cabeceo del dron en el rango de –180.0 a 180.0 grados como un flotador.

La siguiente imagen utiliza una flecha para mostrar la dirección de rotación positiva para el cabeceo.

Un dron VEX AIR mirando hacia la esquina inferior derecha con una flecha roja que se extiende desde el lado derecho del dron, junto al logotipo de VEX. Alrededor de la flecha roja, una flecha curva negra que apunta en sentido contrario a las agujas del reloj indica la dirección positiva del cabeceo.

Usage:
drone.inertial.get_pitch()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the pitch angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Pitch: ")
    controller.screen.print(drone.inertial.get_pitch())
    wait(0.2, SECONDS)

reset_rotation#

reset_rotation restablece el valor de rotación del dron a 0 grados.

Usage:
drone.inertial.reset_rotation()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the new rotation after resetting
drone.take_off(climb_to=500)
drone.turn(RIGHT)
while not drone.inertial.get_rotation() > 360:
    wait(5, MSEC)
drone.hover()
drone.inertial.reset_rotation()
wait(1, SECONDS)
print(drone.inertial.get_rotation(), end="")
drone.land()

reset_heading#

reset_heading restablece el rumbo del dron a 0 grados.

Uso:

drone.inertial.reset_heading()

Parámetros

Descripción

Este método no tiene parámetros.

# Turn to a heading, reset the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.reset_heading()
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

set_heading#

set_heading establece el rumbo del dron en un valor especificado en grados.

Uso:

drone.inertial.set_heading(heading)

Parámetros

Descripción

heading

El valor a utilizar para el nuevo encabezado en el rango de 0 a 359,99 grados.

# Turn to a heading, set the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.set_heading(90)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

get_acceleration#

get_acceleration devuelve la aceleración del dron en una dirección específica. El valor devuelto representa la tasa de cambio en la velocidad, medida en unidades de g (donde 1g ≈ 9.81 m/s²), como un flotador que varía de -4.00 a 4.00.

La siguiente imagen utiliza flechas para mostrar la dirección de la aceleración positiva hacia adelante y hacia la derecha, y la aceleración negativa hacia abajo.

Se muestra un dron VEX AIR con una flecha verde que se extiende desde la nariz del dron con la etiqueta Forward, una flecha azul que se extiende desde el centro de la parte inferior del dron con la etiqueta Downward y una flecha roja que se extiende desde el lado derecho del dron junto al logotipo de VEX, con la etiqueta Rightward.

Uso:

drone.inertial.get_acceleration(type)

Parámetros

Descripción

type

La dirección de la aceleración a informar:

  • DOWNWARD
  • FORWARD
  • RIGHTWARD

# Display the acceleration as the drone takes off
drone.take_off(500, wait=False)
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print(drone.inertial.get_acceleration(DOWNWARD))
    wait(5, MSEC)

get_turn_rate#

get_turn_rate devuelve la velocidad a la que el dron está girando a lo largo del eje especificado. Esto devuelve un valor en grados por segundo \(dps\) como un flotador de –1000.00 a 1000.00 dps.

La siguiente imagen usa flechas para mostrar la dirección de rotación positiva para balanceo, cabeceo y guiñada.

Se muestra un dron VEX AIR con flechas de dirección. Una flecha verde se extiende desde la nariz del dron con una flecha curva negra que apunta en sentido contrario a las agujas del reloj a su alrededor, etiquetada Roll. Una flecha azul se extiende desde el centro de la parte inferior del dron con una flecha curva negra que apunta en el sentido de las agujas del reloj a su alrededor, etiquetada Yaw. Y una flecha roja se extiende desde el lado derecho del dron junto al logotipo de VEX, con una flecha curva negra que apunta en sentido contrario a las agujas del reloj a su alrededor, con la etiqueta Pitch.

Usage:
drone.inertial.get_turn_rate(axis)

Parámetros

Descripción

axis

Qué orientación informar:

  • YAW
  • ROLL
  • PITCH

# Display the drone turn rate as it is rotated by hand.
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(7, 1)
    controller.screen.print(drone.inertial.get_turn_rate(ROLL))

Intervalo#

get_distance#

get_distance devuelve la distancia entre el sensor de rango seleccionado y el objeto detectado más cercano.

Usage:
drone.range.get_distance(range, units)

Parámetros

Descripción

range

El sensor de rango a utilizar: FORWARD_RANGE o DOWNWARD_RANGE. FORWARD_RANGE informa la distancia desde la parte frontal del dron. DOWNWARD_RANGE informa la distancia desde la parte inferior del dron.

units

Opcional. La unidad de distancia:

  • MM (predeterminado) — milímetros
  • CM — centímetros
  • INCHES

# Fly forward until close to an object
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
while not drone.range.get_distance(FORWARD_RANGE, MM) < 750:
    wait(0.1, SECONDS)
drone.land()

Batería#

get_battery_level#

get_battery_level devuelve el nivel de carga de la batería del dron como un porcentaje. Esto devuelve un número del 0 al 100.

Usage:
drone.get_battery_level()

Parámetros

Descripción

Este método no tiene parámetros.

# Display the drone's battery level
if drone.get_battery_level() < 25:
    controller.screen.print("Charge the drone Battery!")
else:
    controller.screen.print("Ready to fly!")