Skip to content

Точна посадка

PX4 підтримує точне приземлення для Multicopters на стаціонарних або рухомих цілях. Ціль може бути надана вбудованим ІЧ-датчиком та приземленням, або зовнішньою системою позиціонування.

Пристрій для точного приземлення може бути запущений/ініційований як частина місії, у режимі повернення на посадку або при вході у режим польоту Точна посадка.

:::note Точна посадка можлива лише з дійсною глобальною позицією (через обмеження в поточній реалізації контролера позиції). :::

Загальний огляд

Режими посадки

Точну посадку можна налаштувати як "обов'язкову" або "вигідну". Вибір режиму впливає на те, як виконується точна посадка.

Необхідний режим

У Required Mode транспортний засіб буде шукати ціль, якщо нічого не видно під час початку посадки. Транспортний засіб виконає точну посадку, якщо ціль буде знайдена.

Процедура пошуку полягає у підйомі на висоту пошуку (PLD_SRCH_ALT). Якщо мішень все ще не видно на висоті пошуку після закінчення часу пошуку (PLD_SRCH_TOUT), то ініціюється звичайна посадка на поточному місці.

:::note Якщо використовується позамежна система позиціонування, PX4 передбачає, що ціль буде видима, коли отримує повідомлення MAVLink LANDING_TARGET. :::

Опортуністичний режим

У режимі Opportunistic Mode транспортний засіб використовуватиме точну посадку, якщо (і тільки якщо) ціль буде видима, коли розпочинається посадка. Якщо ціль не видно, транспортний засіб негайно виконує звичайну посадку на поточному місці.

Фази посадки

Режим Точної посадки має три етапи:

  1. Горизонтальний підхід: Транспортний засіб підходить до цілі горизонтально, утримуючи свою поточну висоту. Як тільки положення цілі відносно транспортного засобу опускається нижче порогового значення (PLD_HACC_RAD), відбувається вхід до наступної фази. Якщо ціль втрачається під час цієї фази (не видно довше, ніж PLD_BTOUT), ініціюється процедура пошуку (під час необхідної точної посадки) або транспортний засіб робить звичайну посадку (під час можливої точної посадки).

  2. Спуск над ціль: Транспортний засіб спускається, залишаючись при цьому над ціллю. Якщо ціль втрачається під час цієї фази (не видно довше, ніж PLD_BTOUT), ініціюється процедура пошуку (під час необхідної точної посадки) або транспортний засіб робить звичайну посадку (під час можливої точної посадки).

  3. Останній підхід: Коли транспортний засіб знаходиться близько до землі (ближче, ніж PLD_FAPPR_ALT), він спускається, залишаючись при цьому над ціллю. Якщо ціль втрачається під час цієї фази, спуск продовжується незалежно від виду точної посадки.

Процедури пошуку ініціюються на перших і других етапах і виконуються не більше PLD_MAX_SRCH разів. Діаграма потоку фаз посадки

Діаграма потоку, що показує фази, може бути знайдена на діаграмі потоку фаз посадки нижче.

Початок точної посадки

Точне приземлення можна використовувати у місіях, під час фази посадки у режимі Повернення, або ввійшовши в режим Точна посадка.

Місія Точна посадка

Точне приземлення може бути запущено як частина місії, використовуючи MAV_CMD_NAV_LAND з відповідно встановленим param2:

  • 0: нормальне приземлення без використання цілі.
  • 1: Opportunistic режим точної посадки
  • 2: Required режим точної посадки

Режим повернення з точною посадкою

Точна посадка може бути використана у фазі посадки у режимі повернення.

Це вмикається за допомогою параметра RTL_PLD_MD, який приймає такі значення:

Режим польоту з точною посадкою

Точна посадка може бути ввімкнена, переключившись у режим польоту з точною посадкою.

Ви можете перевірити це, використовуючи консоль MAVLink QGroundControl для введення наступної команди:

sh
commander mode auto:precland

:::note При переході до режиму таким чином, точна посадка завжди "вимагається"; немає способу вказати тип посадки. :::

:::note На момент написання немає зручного способу безпосередньо викликати точну посадку (окрім командування режимом повернення):

  • QGroundControl не надає його як параметр користувальницького інтерфейсу.
  • Команда MAV_CMD_NAV_LAND працює лише в місіях.
  • Команда MAV_CMD_DO_SET_MODE має працювати, але вам потрібно визначити відповідні базові і користувацькі режими, які використовує PX4 для представлення режиму точної посадки. :::

Налаштування обладнання

Налаштування IR Сенсора/Бікона

Рішення з інфрачервоним датчиком/посадковим маяком потребує датчика IR-LOCK та напрямленого донизу датчика відстані, підключеного до автопілота, а також інфрачервоного маяка в якості цілі (наприклад, IR-LOCK MarkOne). Це дозволяє приземлитися з точністю приблизно 10 см (в той час як точність GPS може бути в декілька метрів).

Встановіть датчик IR-LOCK, слідуючи офіційному посібнику. Переконайтеся, що ось x сенсора вирівняна з осью y транспортного засобу, а ось y сенсора вирівняна з напрямком -x транспортного засобу (це відбувається, якщо камера нахилена вниз на 90 градусів від напрямку вперед).

Установіть датчик дальності/відстані (виявлено, що LidarLite v3 працює добре).

INFO

Багато датчиків дальності на основі інфрачервоного випромінювання погано працюють в присутності маяка IR-LOCK. Зверніться до посібника з IR-LOCK для інших сумісних датчиків.

Позабортне позиціонування

Для позабортового рішення потрібна система позиціонування, яка реалізує Landing Target Protocol MAVLink. Це може використовувати будь-який механізм позиціонування для визначення місця посадки, наприклад комп'ютерного зору та візуального маркера.

Система повинна публікувати координати цілі в повідомленні LANDING_TARGET. Зверніть увагу, що PX4 вимагає, щоб LANDING_TARGET.frame був MAV_FRAME_LOCAL_NED і заповнював лише поля x, y, та z. Початок локальної системи NED [0,0] - це домашня позиція (ви можете відобразити цю домашню позицію на глобальні координати, використовуючи GPS_GLOBAL_ORIGIN).

PX4 не вимагає явно датчика відстані або інших датчиків, але він буде працювати краще, якщо зможе точніше визначати своє власне положення.

Конфігурація прошивки

Для точної посадки потрібні модулі irlock та landing_target_estimator. Ці модулі включені до прошивки PX4 за замовчуванням для більшості польотних контролерів.

Вони не включені за замовчуванням на контролерах, що базуються на FMUv2. На цих та інших платах, де вони не включені, ви можете додати їх, встановивши наступні ключі на 'y' у відповідному конфігураційному файлі для вашого автопілота (наприклад, як зроблено тут для FMUv5: PX4-Autopilot/boards/px4/fmu-v5/default.px4board):

CONFIG_DRIVERS_IRLOCK=y
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y

Конфігурація PX4 (параметри)

Датчик IR-Lock вимкнено за замовчуванням. Увімкніть його, встановивши SENS_EN_IRLOCK на 1 (true).

LTEST_MODE визначає, чи припускається, що ціль є нерухомою або рухливою. Якщо параметр LTEST_MODE встановлено на значення moving (наприклад, він встановлений на транспортний засіб, на який має сісти багтроплан), вимірювання цілі використовуються лише для генерації цілейових точок позиції в контролері точної посадки. Якщо параметр LTEST_MODE встановлено ​​на значення stationary, вимірювання цілі також використовуються оцінювачем позиції транспортного засобу (EKF2 або LPE).

Інші важливі параметри перераховані в посиланнях на параметри в референсі параметрів під Landing_target estimator та Precision land. Деякі з найбільш корисних перераховані нижче.

ПараметрОпис
SENS_EN_IRLOCKIR-LOCK Sensor (зовнішній I2C). Вимкнути: 0 (за замовчуванням): Увімкнути: 1.
LTEST_MODEЦіль посадки рухається (0) або нерухома (1). За замовчуванням - рухома.
PLD_HACC_RADГоризонтальний радіус прийняття, всередині якого транспортний засіб почне спускатися. За замовчуванням - 0,2 м.
PLD_BTOUTТаймаут цілі посадки, після якого припускається, що ціль втрачена. За замовчуванням - 5 секунд.
PLD_FAPPR_ALTВисота останнього підходу. Висота останнього підходу. За замовчуванням - 0,1 метра.
PLD_MAX_SRCHМаксимальна кількість спроб пошуку у вимаганій посадці.
RTL_PLD_MDРежим точної посадки RTL. 0: вимкнено, 1: Опортунично, 2: Вимагається.

Масштабування ІЧ-маяка

Масштабування вимірювань може бути необхідним через спотворення об'єктива датчика IR-LOCK.

LTEST_SCALE_X та LTEST_SCALE_Y можуть бути використані для масштабування вимірів маяка, перед тим як вони будуть використані для оцінки позиції та швидкості маяка відносно транспортного засобу. Зверніть увагу, що LTEST_SCALE_X та LTEST_SCALE_Y вважаються в рамках датчика, а не в рамках транспортного засобу.

Щоб калібрувати ці параметри масштабу, встановіть LTEST_MODE на значення moving, підніміть свій багатокоптер вище за маяк і виконайте рухи вперед-назад та ліворуч-праворуч з транспортним засобом, під час цього записуючи дані з landing_target_pose та vehicle_local_position. Потім порівняйте landing_target_pose.vx_rel та landing_target_pose.vy_rel з vehicle_local_position.vx та vehicle_local_position.vy відповідно (обидва виміри у системі координат NED). Якщо оцінювані швидкості маяка завжди менші або більші за швидкості транспортного засобу, налаштуйте параметри масштабування для компенсації.

Якщо ви спостерігаєте повільні бокові коливання літального апарата під час точної посадки з параметром LTEST_MODE, встановленим на стаціонарний, ймовірно, вимірювання маяка занадто високі, і вам слід зменшити параметр масштабування у відповідному напрямку.

Моделювання

Точне приземлення з датчиком IR-LOCK та маяком може бути симульоване в Gazebo Classic.

Щоб запустити симуляцію зі світом, що містить маяк IR-LOCK та транспортний засіб із датчиком дальності та камерою IR-LOCK, виконайте наступну команду:

sh
make px4_sitl gazebo-classic_iris_irlock

Ви можете змінити розташування маяка або перемістивши її в Gazebo Classic GUI або змінивши її місце в Gazebo World.

Принцип дії

Оцінювач цілей посадки

landing_target_estimator бере вимірювання з драйвера irlock, а також оцінює висоту місцевості для оцінки позиції маяка відносно транспортного засобу.

The measurements in irlock_report містять тангенс кутів від центру зображення до маяка. Іншими словами, вимірювання - це компоненти x та y вектора, що вказує на маяк, де компонент z має довжину "1". Це означає, що масштабування вимірювання за відстанню від камери до маяка призводить до вектора від камери до маяка. Ця відносна позиція потім повертається у зіставлений з півночі, рівномірний корпусний каркас за допомогою оцінки польоту засобами повітряного судна. Обидва компоненти x та y відносного вимірювання позиції фільтруються в окремих фільтрах Калмана, які діють як прості фільтри згладжування з низькою пропускною спроможністю, що також генерують оцінку швидкості та дозволяють відкидати викиди.

landing_target_estimator публікує приблизну відносну позицію і швидкість щоразу, коли новий звіт про irlock_report об'єднується в оцінку. Нічого не публікується, якщо маяк не бачиться або вимірювання маяка відхиляються. Оцінка посадкової цілі публікується в повідомленні uORB landing_target_pose.

Покращена оцінка положення транспортного засобу

Якщо ціль вказана як стаціонарна за допомогою параметра LTEST_MODE, оцінку положення/швидкості транспортного засобу можна покращити за допомогою вимірів цілі. Це виконується шляхом злиття швидкості цілі як вимірювання від'ємної швидкості транспортного засобу.

Діаграма потоку фаз посадки

Це зображення показує фази посадки у вигляді діаграми потоку.

Precision Landing Flow Diagram