Skip to content

Основные полётные функции FlightLib

artem30801 edited this page Nov 14, 2018 · 9 revisions

Модуль FlightLib библиотеки CleverFlightLib предназначен для еще более упрощенного программирования автономного дрона.

Описание API

Взлет и посадка

takeoff и land созданы таким образом, что их можно вызывать без аргументов. Все значения по умолчанию подстроены под использование библиотеки на коптерах Clever2 и Clever3, однако все функции могут быть гибко подстроены под любую другую платформу. Эти функции - асинхронные, и управление следующему оператору не будет передано до полного завершения текущей задачи.

takeoff

Выполняет необходимые проверки, выполняет арминг коптера и переводит его в полетный режим offboard(в случае отказа программа автоматически завершается), занимает указанную высоту во указанном фрейме (fcu_horiz по умолчанию), переводит коптер в указанный фрейм (aruco_map по умолчанию), корректирует высоту и фиксирует свою позицию. В случае успешного выполнения взлета функция возвращает True; при не успешном позиционировании - False.


Аргументы:

  • z: целевая высота взлета (в метрах); по умолчанию 1.0

  • speed_takeoff: скорость при взлете и наборе высоты (в м\с); по умолчанию 1.0

  • speed_inair: скорость при позиционировании и корректировке высоты после взлета (в м\с); по умолчанию 1.0

  • yaw: угол по рысканью во фрейме frame_id_inair(в радианах), поворот будет выполнен во время корректировки позиции; по умолчанию nan (текущее рысканье не будет изменено)

  • frame_id_takeoff: фрейм для выполнения отрыва от земли и набора минимальной высоты; по умолчанию fcu_horiz

  • frame_id_inair: фрейм для корректировки высоты и удержания точки поле взлета; по умолчанию aruco_map

  • tolerance: допустимая точность позиционирования (в метрах); по умолчанию 0.25

  • wait_ms: задержка при обновлении данных (при проверке состояний и позиционирования) (в миллисекундах); по умолчанию 25

  • delay_fcu: задержка с момента старта до проверки телеметрии при наборе необходимой высоты (в миллисекундах); по умолчанию 1000; необходимо, если точное позиционирование недоступно без достижения коптером некоторой высоты

  • timeout_arm: время ожидания перехода коптера в полетный режим offboard и его арминга (в миллисекундах); по умолчанию 1500; при превышении этого времени программа прекращается

  • timeout_takeoff: время ожидания набора необходимой высоты во фрейме frame_id_takeoff (в миллисекундах); по умолчанию 3000; при превышении этого времени программа переходит к корректировке высоты во фрейме frame_id_inair

  • timeout_inair: время ожидания набора корректировки высоты и позиционирования над точкой взлета во фрейме frame_id_inair (в миллисекундах); по умолчанию 7500; при превышении этого времени функция возвращает False

land

Выполняет необходимые проверки, снижает коптер до заданной высоты, после чего переводит в полётный режим 'autoland'. Автоматически дизармит коптер после посадки. При завершении посадки возвращает True. В случае ручного перехвата во время или до запуска функции, переход в в полётный режим 'autoland' не совершается, функция возвращает False


Аргументы:

  • preland: необходимо ли предварительное снижение до указанной высоты; по умолчанию True
  • z целевая высота снижения (в метрах); по умолчанию 1.0
  • timeout_preland: время ожидания корректировки высоты и позиционирования над точкой посадки во фрейме frame_id_preland (в миллисекундах); по умолчанию 10000; при превышении этого времени функция переведет коптер в полетный режим autoland
  • frame_id_preland: фрейм для снижения высоты; по умолчанию aruco_map
  • timeout_land: время ожидания посадки и автоматического дизарма в полётном режиме autoland (в миллисекундах); по умолчанию 5000`; при превышении этого времени функция автоматически произведет дизарм коптера
  • wait_ms: задержка при обновлении данных при посадке (при проверке состояния коптера) (в миллисекундах); по умолчанию 100

Полёт по точкам

navto

Синхронная функция полёта в точку по заданным координатам(функция не ожидает прилёта коптера в заданную точку, управление следующему оператору программы передается мгновенно). Всегда возвращает True


Аргументы:

  • x, y, z - целевые координаты в заданном фрейме frame_id; обязательные аргументы.
  • yaw: угол по рысканью во фрейме frame_id(в радианах), по умолчанию nan (текущее рысканье не будет изменено)
  • speed: скорость перемещения (в м\с); по умолчанию 1.0
  • frame_id: фрейм для навигации; по умолчанию aruco_map

reach

Асинхронная функция полёта в точку по заданным координатам(функция ожидает прилёта коптера в заданную точку, управление следующему оператору программы передается после полного выполнения). Возвращает True, если коптер достиг заданной точки вовремя, False при превышении времени ожидания прилёта timeout.


Аргументы:

  • x, y, z - целевые координаты в заданном фрейме frame_id; обязательные аргументы.
  • yaw: угол по рысканью во фрейме frame_id(в радианах), по умолчанию nan (текущее рысканье не будет изменено)
  • speed: скорость перемещения (в м\с); по умолчанию 1.0
  • tolerance: допустимая точность позиционирования (в метрах); по умолчанию 0.2
  • frame_id: фрейм для навигации; по умолчанию aruco_map
  • wait_ms: задержка при обновлении данных при (при проверке координат коптера) (в миллисекундах); по умолчанию 100
  • timeout: время ожидания достижения заданной точки коптером во фрейме frame_id (в миллисекундах); по умолчанию 7500; при превышении этого времени функция возвращает False

attitude

Асинхронная функция изменения высоты при сохранении текущих координат x и y(функция ожидает прилёта коптера в заданную точку, управление следующему оператору программы передается после полного выполнения). Возвращает True, если коптер достиг заданной точки вовремя, False при превышении времени ожидания прилёта timeout.


Аргументы:

  • z - целевая высота в заданном фрейме frame_id; обязательные аргументы.
  • yaw: угол по рысканью во фрейме frame_id(в радианах), по умолчанию nan (текущее рысканье не будет изменено)
  • speed: скорость перемещения (в м\с); по умолчанию 1.0
  • tolerance: допустимая точность позиционирования (в метрах); по умолчанию 0.2
  • frame_id: фрейм для навигации; по умолчанию aruco_map
  • wait_ms: задержка при обновлении данных при (при проверке координат коптера) (в миллисекундах); по умолчанию 100
  • timeout: время ожидания достижения заданной точки коптером во фрейме frame_id (в миллисекундах); по умолчанию 5000; при превышении этого времени функция возвращает False

Дополнительные полётные функции

rotate_to

Асинхронная функция изменения угла по рысканью yaw при сохранении текущих координат x, y, z(функция ожидает поворота коптера в заданный угол, управление следующему оператору программы передается после полного выполнения). Возвращает True, если коптер достиг заданного угла вовремя, False при превышении времени ожидания прилёта timeout.


Аргументы:

  • yaw: целевой угол по рысканью во фрейме frame_id(в радианах), по умолчанию nan (текущее рысканье не будет изменено)
  • speed: скорость позиционирования (в м\с); по умолчанию 1.0
  • tolerance: допустимая точность позиционирования (в радианах); по умолчанию 0.2
  • frame_id: фрейм для навигации; по умолчанию aruco_map
  • wait_ms: задержка при обновлении данных при (при проверке координат коптера) (в миллисекундах); по умолчанию 100
  • timeout: время ожидания достижения заданной точки коптером во фрейме frame_id (в миллисекундах); по умолчанию 5000; при превышении этого времени функция возвращает False

spin

Асинхронная функция вращения по рысканью (yaw) в течение заданного времени timeout при сохранении текущих координат x, y, z (управление следующему оператору передается управление следующему оператору программы передается после полного выполнения). По истечении заданного времени прекращает вращение. Всегда возвращает True


Аргументы:

  • yaw_rate: целевая угловая скорость по рысканью во фрейме frame_id(в радианах/секунду), по умолчанию 0.2
  • speed: скорость позиционирования (в м\с); по умолчанию 1.0
  • frame_id: фрейм для навигации; по умолчанию aruco_map
  • timeout: время вращения по рысканью (yaw) коптером во фрейме frame_id (в миллисекундах); по умолчанию 5000; Если присвоить значение "None", то функция будет завершена без ожидания и вращение не будет прекращено (до выполнения следующего полетного оператора)

circle

flip

Безопасность

Вычисления и телеметрия