Sensores#
Introdução#
O drone VEX AIR inclui um sensor inercial para medir o movimento rotacional e detetar mudanças de movimento, bem como um sensor de alcance para medir distâncias. O VEX AIR também monitoriza o nível da bateria. Estes sensores permitem que o drone acompanhe a sua orientação, direção, aceleração e distância dos objetos.
Segue-se uma lista de todos os métodos disponíveis:
Inercial - Acompanha o movimento rotacional do drone.
get_rotation– Retorna quanto o drone rodou desde que começou.get_heading– Retorna o rumo actual (0 a 359,99°).get_yaw– Devolve o ângulo de guinada (–180 a 180°).get_roll– Devolve o ângulo de rotação (–180 a 180°).get_pitch– Devolve o ângulo de inclinação (–180 a 180°).reset_rotation– Repõe o valor de rotação a 0.reset_heading– Define o rumo actual para 0.set_heading– Define o cabeçalho para um valor específico.get_acceleration– Devolve a aceleração numa direção específica.get_turn_rate– Devolve a taxa de rotação em graus por segundo.
Alcance — Deteta distâncias a partir dos sensores de alcance do drone.
get_distance— Retorna a distância entre o sensor de alcance selecionado e o objeto detetado mais próximo.
Bateria - Retorna a percentagem da bateria do drone.
get_battery_level– Retorna o nível da bateria do drone em percentagem.
Inercial#
get_rotation#
get_rotation devolve quantos graus o drone rodou desde que foi iniciado. Soma todas as rotações e devolve o total em graus: positivo para o sentido horário, negativo para o sentido anti-horário.
Usage:
drone.inertial.get_rotation()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 devolve o ângulo de direção do drone como um número de ponto flutuante no intervalo de 0 a 359,99 graus.
Usage:
drone.inertial.get_heading()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 devolve o ângulo de guinada do drone no intervalo de -180,0 a 180,0 graus como um número de ponto flutuante.
A imagem abaixo utiliza uma seta para mostrar o sentido da rotação positiva para o eixo de guinada (yaw).

Usage:
drone.inertial.get_yaw
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 devolve o ângulo de rotação do drone no intervalo de -180,0 a 180,0 graus como um número de ponto flutuante.
A imagem abaixo utiliza uma seta para mostrar o sentido da rotação positiva para o rolamento.

Usage:
drone.inertial.get_roll()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 devolve o ângulo de inclinação do drone no intervalo de -180,0 a 180,0 graus como um número de ponto flutuante.
A imagem abaixo utiliza uma seta para mostrar o sentido da rotação positiva do tom.

Usage:
drone.inertial.get_pitch()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 repõe o valor de rotação do drone para 0 graus.
Usage:
drone.inertial.reset_rotation()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 reinicia a direção do drone para 0 graus.
Utilização:
drone.inertial.reset_heading()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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 define a direção do drone para um valor especificado em graus.
Utilização:
drone.inertial.set_heading(heading)
Parâmetros |
Descrição |
|---|---|
|
O valor a utilizar para o novo rumo encontra-se no intervalo de 0 a 359,99 graus. |
# 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 devolve a aceleração do drone numa direção especificada. O valor devolvido representa a taxa de variação da velocidade, medida em unidades de g (em que 1g ≈ 9,81 m/s²), como um número de ponto flutuante que varia de -4,00 a 4,00.
A imagem abaixo utiliza setas para mostrar o sentido da aceleração positiva para a frente e para a direita, e a aceleração negativa para baixo.

Utilização:
drone.inertial.get_acceleration(type)
Parâmetros |
Descrição |
|---|---|
|
Sentido da aceleração a reportar:
|
# 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 devolve a taxa a que o drone está a rodar em torno do eixo especificado. Este devolve um valor em graus por segundo \(dps\) como um número de ponto flutuante de -1000,00 a 1000,00 dps.
A imagem abaixo utiliza setas para mostrar o sentido da rotação positiva para o rolamento, arfagem e guinada.

Usage:
drone.inertial.get_turn_rate(axis)
Parâmetros |
Descrição |
|---|---|
|
Qual a orientação a reportar:
|
# 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 devolve a distância entre o sensor de alcance selecionado e o objeto detetado mais próximo.
Usage:
drone.range.get_distance(range, units)
Parâmetros |
Descrição |
|---|---|
|
O sensor de alcance a utilizar: |
|
Opcional. Unidade de distância:
|
# 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()
Bateria#
get_battery_level#
get_battery_level devolve o nível de carga da bateria do drone em percentagem. Isto devolve um número de 0 a 100.
Usage:
drone.get_battery_level()
Parâmetros |
Descrição |
|---|---|
Este método não tem 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!")