Точна посадка
PX4 підтримує точне приземлення для Multicopters на стаціонарних або рухомих цілях. Ціль може бути надана вбудованим ІЧ-датчиком та приземленням, або зовнішньою системою позиціонування.
Пристрій для точного приземлення може бути запущений/ініційований як частина місії, у режимі повернення на посадку або при вході у режим польоту Точна посадка.
:::note Точна посадка можлива лише з дійсною глобальною позицією (через обмеження в поточній реалізації контролера позиції). :::
Загальний огляд
Режими посадки
Точну посадку можна налаштувати як "обов'язкову" або "вигідну". Вибір режиму впливає на те, як виконується точна посадка.
Required Mode
У Required Mode транспортний засіб буде шукати ціль, якщо нічого не видно під час початку посадки. Транспортний засіб виконає точну посадку, якщо ціль буде знайдена.
Процедура пошуку полягає у підйомі на висоту пошуку (PLD_SRCH_ALT). Якщо мішень все ще не видно на висоті пошуку після закінчення часу пошуку (PLD_SRCH_TOUT), то ініціюється звичайна посадка на поточному місці.
:::note Якщо використовується позамежна система позиціонування, PX4 передбачає, що ціль буде видима, коли отримує повідомлення MAVLink LANDING_TARGET. :::
Opportunistic Mode
У режимі Opportunistic Mode транспортний засіб використовуватиме точну посадку, якщо (і тільки якщо) ціль буде видима, коли розпочинається посадка. Якщо ціль не видно, транспортний засіб негайно виконує звичайну посадку на поточному місці.
Фази посадки
Режим Точної посадки має три етапи:
Горизонтальний підхід: Транспортний засіб підходить до цілі горизонтально, утримуючи свою поточну висоту. Як тільки положення цілі відносно транспортного засобу опускається нижче порогового значення (PLD_HACC_RAD), відбувається вхід до наступної фази. Якщо ціль втрачається під час цієї фази (не видно довше, ніж PLD_BTOUT), ініціюється процедура пошуку (під час необхідної точної посадки) або транспортний засіб робить звичайну посадку (під час можливої точної посадки).
Спуск над ціль: Транспортний засіб спускається, залишаючись при цьому над ціллю. Якщо ціль втрачається під час цієї фази (не видно довше, ніж
PLD_BTOUT
), ініціюється процедура пошуку (під час необхідної точної посадки) або транспортний засіб робить звичайну посадку (під час можливої точної посадки).Останній підхід: Коли транспортний засіб знаходиться близько до землі (ближче, ніж PLD_FAPPR_ALT), він спускається, залишаючись при цьому над ціллю. Якщо ціль втрачається під час цієї фази, спуск продовжується незалежно від виду точної посадки.
Процедури пошуку ініціюються на перших і других етапах і виконуються не більше PLD_MAX_SRCH разів. Діаграма потоку фаз посадки
Діаграма потоку, що показує фази, може бути знайдена на діаграмі потоку фаз посадки нижче.
Початок точної посадки
Точне приземлення можна використовувати у місіях, під час фази посадки у режимі Повернення, або ввійшовши в режим Точна посадка.
Mission Precision Landing
Точне приземлення може бути запущено як частина місії, використовуючи MAV_CMD_NAV_LAND з відповідно встановленим param2
:
0
: Normal landing without using the target.1
: Opportunistic режим точної посадки2
: Required режим точної посадки
Return Mode Precision Landing
Precision landing can be used in the Return mode landing phase.
This is enabled using the parameter RTL_PLD_MD, which takes the following values:
0
: Precision landing disabled (land as normal).1
: Opportunistic режим точної посадки2
: Required режим точної посадки
Precision Landing Flight Mode
Precision landing can be enabled by switching to the Precision Landing flight mode.
You can verify this using the QGroundControl MAVLink Console to enter the following command:
sh
commander mode auto:precland
:::note When switching to the mode in this way, the precision landing is always "required"; there is no way to specify the type of landing. :::
:::note At time of writing is no convenient way to directly invoke precision landing (other than commanding return mode):
- QGroundControl does not provide it as a UI option.
- MAV_CMD_NAV_LAND only works in missions.
- MAV_CMD_DO_SET_MODE should work, but you will need to determine the appropriate base and custom modes used by PX4 to represent the precision landing mode. :::
Налаштування обладнання
IR Sensor/Beacon Setup
Рішення з інфрачервоним датчиком/посадковим маяком потребує датчика IR-LOCK та напрямленого донизу датчика відстані, підключеного до автопілота, а також інфрачервоного маяка в якості цілі (наприклад, IR-LOCK MarkOne). Це дозволяє приземлитися з точністю приблизно 10 см (в той час як точність GPS може бути в декілька метрів).
Встановіть датчик IR-LOCK, слідуючи офіційному посібнику. Переконайтеся, що ось x сенсора вирівняна з осью y транспортного засобу, а ось y сенсора вирівняна з напрямком -x транспортного засобу (це відбувається, якщо камера нахилена вниз на 90 градусів від напрямку вперед).
Встановіть датчик відстані (LidarLite v3 виявився працездатним).
:::note Багато датчиків дальності на основі інфрачервоного випромінювання погано працюють в присутності маяка IR-LOCK. Зверніться до посібника з IR-LOCK для інших сумісних датчиків. :::
Позабортне позиціонування
Для позабортового рішення потрібна система позиціонування, яка реалізує Landing Target Protocol MAVLink. Це може використовувати будь-який механізм позиціонування для визначення місця посадки, наприклад комп'ютерного зору та візуального маркера.
The system must publish the coordinates of the target in the LANDING_TARGET message. Note that PX4 requires LANDING_TARGET.frame
to be MAV_FRAME_LOCAL_NED and only populates the fields x
, y
, and z
. The origin of the local NED frame [0,0] is the home position (you can map this home position to global coordinates using GPS_GLOBAL_ORIGIN).
PX4 does not explicitly require a distance sensor or other sensors, but will perform better if it can more precisely determine its own position.
Конфігурація прошивки
Для точної посадки потрібні модулі 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_IRLOCK | IR-LOCK Sensor (external I2C). Disable: 0 (default): Enable: 1 ). |
LTEST_MODE | Landing target is moving (0 ) or stationary (1 ). Default is moving. |
PLD_HACC_RAD | Horizontal acceptance radius, within which the vehicle will start descending. Default is 0.2m. |
PLD_BTOUT | Landing Target Timeout, after which the target is assumed lost. Default is 5 seconds. |
PLD_FAPPR_ALT | Final approach altitude. Default is 0.1 metres. |
PLD_MAX_SRCH | Maximum number of search attempts in an required landing. |
RTL_PLD_MD | RTL precision land mode. 0 : disabled, 1 : Opportunistic, 2 : Required. |
Масштабування ІЧ-маяка
Масштабування вимірювань може бути необхідним через спотворення об'єктива датчика 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.
Operating Principles
Оцінювач цілей посадки
landing_target_estimator
бере вимірювання з драйвера irlock, а також оцінює висоту місцевості для оцінки позиції маяка відносно транспортного засобу.
The measurements in irlock_report
містять тангенс кутів від центру зображення до маяка. Іншими словами, вимірювання - це компоненти x та y вектора, що вказує на маяк, де компонент z має довжину "1". Це означає, що масштабування вимірювання за відстанню від камери до маяка призводить до вектора від камери до маяка. Ця відносна позиція потім повертається у зіставлений з півночі, рівномірний корпусний каркас за допомогою оцінки польоту засобами повітряного судна. Обидва компоненти x та y відносного вимірювання позиції фільтруються в окремих фільтрах Калмана, які діють як прості фільтри згладжування з низькою пропускною спроможністю, що також генерують оцінку швидкості та дозволяють відкидати викиди.
landing_target_estimator
публікує приблизну відносну позицію і швидкість щоразу, коли новий звіт про irlock_report
об'єднується в оцінку. Нічого не публікується, якщо маяк не бачиться або вимірювання маяка відхиляються. The landing target estimate is published in the landing_target_pose
uORB message.
Покращена оцінка положення транспортного засобу
Якщо ціль вказана як стаціонарна за допомогою параметра LTEST_MODE
, оцінку положення/швидкості транспортного засобу можна покращити за допомогою вимірів цілі. Це виконується шляхом злиття швидкості цілі як вимірювання від'ємної швидкості транспортного засобу.
Діаграма потоку фаз посадки
Це зображення показує фази посадки у вигляді діаграми потоку.