Датчики#

Введение#

Дрон VEX AIR оснащен инерциальным датчиком для измерения вращательного движения и обнаружения изменений в движении, а также датчиком дальности для определения расстояний. Дрон VEX AIR также может отслеживать уровень заряда батареи. Эти датчики позволяют дрону отслеживать свою ориентацию, курс, ускорение и расстояние до объектов.

Ниже приведён список всех доступных методов:

Инерциальная система — отслеживание вращательного движения дрона.

  • get_rotation – Возвращает, насколько повернулся дрон с момента начала вращения.

  • get_heading – Возвращает текущий курс (от 0 до 359,99°).

  • get_yaw – Возвращает угол рыскания (от –180 до 180°).

  • get_roll – Возвращает угол крена (от –180 до 180°).

  • get_pitch – Возвращает угол тангажа (от –180 до 180°).

  • reset_rotation – Сбрасывает значение вращения до 0.

  • reset_heading – Устанавливает текущий заголовок на 0.

  • set_heading – Устанавливает заголовок на определенное значение.

  • get_acceleration – Возвращает ускорение в определенном направлении.

  • get_turn_rate – Возвращает скорость поворота в градусах в секунду.

Диапазон — Определение расстояний с помощью датчиков дальности дрона.

  • get_distance — Возвращает расстояние между выбранным датчиком расстояния и ближайшим обнаруженным объектом.

Заряд батареи - Отобразите процент заряда батареи дрона.

  • get_battery_level – Возвращает уровень заряда батареи дрона в процентах.

Инерционный#

get_rotation#

Функция get_rotation ( get_rotation возвращает количество градусов, на которое повернулся дрон с момента начала вращения. Она суммирует все повороты и возвращает общее значение в градусах: положительное значение означает вращение по часовой стрелке, отрицательное — против часовой стрелки.

Usage:
drone.inertial.get_rotation()

Параметры

Описание

Этот метод не имеет параметров.

# 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 возвращает угол курса дрона в виде числа с плавающей запятой в диапазоне от 0 до 359,99 градусов.

Usage:
drone.inertial.get_heading()

Параметры

Описание

Этот метод не имеет параметров.

# 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 get_yaw` возвращает угол рыскания дрона в диапазоне от –180,0 до 180,0 градусов в виде числа с плавающей запятой.

На изображении ниже стрелкой показано направление положительного вращения по оси рыскания.

Дрон VEX AIR с носом, направленным в нижний правый угол, с синей стрелкой, идущей вниз от центра. Вокруг синей стрелки черная изогнутая стрелка указывает по часовой стрелке и обозначена как Yaw, указывая положительное направление рыскания.

Usage:
drone.inertial.get_yaw

Параметры

Описание

Этот метод не имеет параметров.

# 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 возвращает угол крена дрона в диапазоне от –180,0 до 180,0 градусов в виде числа с плавающей запятой.

На изображении ниже стрелкой показано направление положительного вращения для крена.

Дрон VEX AIR с носом, направленным в нижний правый угол, с зеленой стрелкой, выходящей прямо из носа дрона. Вокруг зеленой стрелки черная изогнутая стрелка указывает против часовой стрелки, показывая положительное направление крена.

Usage:
drone.inertial.get_roll()

Параметры

Описание

Этот метод не имеет параметров.

# 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 возвращает угол тангажа дрона в диапазоне от –180,0 до 180,0 градусов в виде числа с плавающей запятой.

На изображении ниже стрелкой показано направление положительного вращения для изменения тангажа.

Дрон VEX AIR, направленный в нижний правый угол, с красной стрелкой, выходящей из правой стороны дрона, рядом с логотипом VEX. Вокруг красной стрелки черная изогнутая стрелка, указывающая против часовой стрелки, показывает положительное направление тангажа.

Usage:
drone.inertial.get_pitch()

Параметры

Описание

Этот метод не имеет параметров.

# 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 сбрасывает значение вращения дрона до 0 градусов.

Usage:
drone.inertial.reset_rotation()

Параметры

Описание

Этот метод не имеет параметров.

# 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 сбрасывает курс дрона до 0 градусов.

Применение:

drone.inertial.reset_heading()

Параметры

Описание

Этот метод не имеет параметров.

# 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 устанавливает направление дрона на заданное значение в градусах.

Применение:

drone.inertial.set_heading(heading)

Параметры

Описание

heading

Значение, используемое для нового направления, находится в диапазоне от 0 до 359,99 градусов.

# 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 get_acceleration` возвращает ускорение дрона в заданном направлении. Возвращаемое значение представляет собой скорость изменения скорости, измеренную в единицах g (где 1g ≈ 9,81 м/с²), в виде числа с плавающей запятой в диапазоне от -4,00 до 4,00.

На изображении ниже стрелками показано направление положительного ускорения (вперед и вправо) и отрицательного ускорения (вниз).

На изображении показан дрон VEX AIR с зеленой стрелкой, идущей от носа дрона, с надписью «Вперед», синей стрелкой, идущей от центра нижней части дрона, с надписью «Вниз», и красной стрелкой, идущей от правой стороны дрона рядом с логотипом VEX, с надписью «Вправо».

Применение:

drone.inertial.get_acceleration(type)

Параметры

Описание

type

Направление ускорения для указания:

  • 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 get_turn_rate` возвращает скорость вращения дрона вокруг указанной оси. Она возвращает значение в градусах в секунду \(dps\) в виде числа с плавающей запятой от –1000,00 до 1000,00 dps.

На изображении ниже стрелками показано направление положительного вращения для крена, тангажа и рыскания.

На изображении показан дрон VEX AIR со стрелками направления. Зеленая стрелка исходит из носовой части дрона, а черная изогнутая стрелка направлена ​​против часовой стрелки вокруг нее и обозначена как «Крен». Синяя стрелка исходит из центра нижней части дрона, а черная изогнутая стрелка направлена ​​по часовой стрелке вокруг нее и обозначена как «Рыскание». Красная стрелка исходит с правой стороны дрона рядом с логотипом VEX, а черная изогнутая стрелка направлена ​​против часовой стрелки вокруг нее и обозначена как «Тангоут».

Usage:
drone.inertial.get_turn_rate(axis)

Параметры

Описание

axis

Какую ориентацию следует указать:

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

Диапазон#

get_distance#

get_distance возвращает расстояние между выбранным датчиком расстояния и ближайшим обнаруженным объектом.

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

Параметры

Описание

range

Используемый датчик дальности: FORWARD_RANGE или DOWNWARD_RANGE FORWARD_RANGE сообщает расстояние от передней части дрона. DOWNWARD_RANGE сообщает расстояние от нижней части дрона.

units

Дополнительно. Единица измерения расстояния:

  • MM (по умолчанию) — миллиметры
  • CM — сантиметры
  • 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()

Батарея#

get_battery_level#

get_battery_level возвращает уровень заряда батареи дрона в процентах. Она возвращает число от 0 до 100.

Usage:
drone.get_battery_level()

Параметры

Описание

Этот метод не имеет параметров.

# 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!")