Skip to content

Приймачі ADS-B/FLARM/UTM: Уникнення повітряного трафіку

PX4 підтримує просте уникнення повітряного трафіку in missions за допомогою ADS-B, FLARM або UTM транспондерів, які використовують стандартні інтерфейси MAVLink.

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

Підтримуване обладнання

Система уникнення PX4 працює з продуктами ADS-B або FLARM, які постачають дані транспондера за допомогою повідомлення MAVLink ADSB_VEHICLE, та продуктами UTM, які постачають дані транспондера за допомогою повідомлення MAVLink UTM_GLOBAL_POSITION.

Було протестовано з наступними пристроями:

Налаштування програмного забезпечення

Будь-який з пристроїв може бути підключений до будь-якого вільного/не використаного послідовного порту на контролері польоту. Зазвичай вони пов'язані з TELEM2 (якщо це не використовується для іншої мети).

PingRX

Порт PingRX MAVLink використовує роз'єм-матинг JST ZHR-4 з роз'ємом, як показано нижче.

PinСигналВольтаж
1 (red)RX (IN)+5V tolerant
2 (blk)TX (OUT)
3 (blk)Живлення+4 to 6V
4 (blk)GNDGND

PingRX поставляється з кабелем-перехідником, який можна підключити безпосередньо до порту TELEM2 (DF13-6P) на mRo Pixhawk. Для інших портів або плат, вам доведеться отримати свій власний кабель.

FLARM

FLARM має вбудований роз'єм DF-13 6 Pin, який має ідентичну розпіновку з mRo Pixhawk.

PinСигналВольтаж
1 (red)VCC+4В до +36В
2 (blk)TX (OUT)+3.3V
3 (blk)RX (IN)+3.3V
4 (blk)-+3.3V
5 (blk)-+3.3V
6 (blk)GNDGND

::: інформація TX та RX на контролері польоту повинні бути підключені до RX та TX на FLARM, відповідно. :::

Конфігурація програмного забезпечення

Конфігурація порту

Отримувачі налаштовані так само, як будь-який інший Пристрій MAVLink. Єдине специфічне налаштування полягає в тому, що швидкість передачі даних порту повинна бути встановлена на 57600, а профіль з низькою пропускною здатністю (MAV_X_MODE).

Припускаючи, що ви підключили пристрій до порту TELEM2, встановіть параметри так, як показано:

Перезавантажте пристрій.

Тепер ви знайдете новий параметр, який називається SER_TEL2_BAUD, який повинен бути встановлений на 57600.

Налаштування передачі трафіку

Налаштуйте дію у випадку потенційної зіткнення за допомогою параметри нижче:

ПараметрОпис
NAV_TRAFF_AVOIDУвімкніть режим уникнення трафіку, вказавши відповідь уникнення. 0: Вимкнути, 1: Лише попередження, 2: Режим повернення, 3: Режим посадки.
NAV_TRAFF_A_HORГоризонтальний радіус циліндра навколо транспортного засобу, який визначає його повітряний простір (тобто повітряний простір на земельній площині).
NAV_TRAFF_A_VERВертикальна висота вище і нижче транспортного засобу циліндра, яка визначає його повітряний простір (див. також NAV_TRAFF_A_HOR).
NAV_TRAFF_COLL_TПоріг часу зіткнення. Уникнення буде викликати якщо передбачуваний час, поки зіткнення не знизиться нижче цієї вартості (орієнтовний час ґрунтується на відносній швидкості руху та UAV).

Імплементація

ADSB/FLARM

PX4 слухає дійсні звіти про транспондери під час місій.

Якщо отримано дійсний звіт від транспондера, PX4 спочатку використовує інформацію про транспондер руху, щоб оцінити, чи показує напрямок та висота руху, що буде перетинатися з повітряним простором БПЛА. Повітряний простір БПЛА складається з оточуючого циліндра, визначеного радіусом NAV_TRAFF_A_HOR та висотою NAV_TRAFF_A_VER, з БПЛА у центрі. Датчик руху перевіряє, чи час до перетину з повітряним простором БПЛА нижче порогу NAV_TRAFF_COLL_T на основі відносної швидкості. Якщо обидва перевірки виконані, запускається дія Traffic Avoidance Failsafe, і транспортний засіб або попереджує, або сідає, або повертається.

Код можна знайти в Navigator::check_traffic (/src/modules/navigator/navigator_main.cpp).

PX4 також передаватиме дані транспондера на GCS, якщо це було налаштовано для екземпляра MAVLink (це рекомендується). Останні 10 цифр GUID відображаються як ідентифіфікація дрона.

UTM

PX4 прослуховує повідомлення MAVLink UTM_GLOBAL_POSITION під час місій. Коли отримано дійсне повідомлення, його прапорці дійсності, позиція та напрямок відображаються в тій же темі UORB transponder_report, що використовується для уникнення трафіку ADS-B.

Виконання інакше точно таке, як описано у вищезазначеному розділі.

::: інформація UTM_GLOBAL_POSITION містить додаткові поля, які не надаються транспондером ADSB (див. ADSB_VEHICLE). Поточна реалізація просто відкидає додаткові поля (включаючи інформацію про заплановану наступну точку шляху транспортного засобу). :::

Тестування/Симульований трафік ADSB

Ви можете симулювати трафік ADS-B для тестування. Зверніть увагу, що для цього потрібно, щоб ви збудували PX4.

::: інформація Симульований трафік ADS-B може спричинити реальні аварійні дії. Використовуйте обережно в реальному польоті! :::

Щоб увімкнути цю функцію:

  1. Розкоментуйте код у AdsbConflict::run_fake_traffic()(AdsbConflict.cpp).
  2. Перебудувати та запустити PX4.
  3. Виконайте команду navigator fake_traffic у QGroundControl MAVLink Shell (або в іншій консолі PX4 або MAVLink, наприклад, у терміналі симулятора PX4).

Код у функції run_fake_traffic() потім виконується. Ви повинні бачити попередження ADS-B в консолі/оболонці MAVLink, і QGC також повинен показувати спливаюче вікно з даними про рух літаків ADS-B.

За замовчуванням run_fake_traffic() публікує ряд повідомлень про трафік (він викликає AdsbConflict::fake_traffic() для видачі кожного звіту). Ці симулюють трафік ADS-B там, де може виникнути конфлікт, де конфлікту не буде, а також спамять буфер трафіку.

::: деталі інформації про тестові методи

Відповідні методи визначені в AdsbConflict.cpp.

Метод run_fake_traffic()

Метод run_fake_traffic() виконується, коли викликається команда navigator fake_traffic.

Метод викликає метод fake_traffic() для генерації симульованих повідомлень транспондера навколо поточного положення транспортного засобу. Воно проходить в поточному положенні транспортного засобу, інформація про симульований трафік, такий як виклик, відстані, напрямки, різниці в висоті, швидкості та типи емітерів.

(Закоментований) код у функції run_fake_traffic() симулює різні сценарії, включаючи конфлікти та відсутність конфліктів, а також спамінг буфера трафіку.

Метод fake_traffic()

AdsbConflict::fake_traffic() викликається методом run_fake_traffic() для створення окремих звітів транспондерів ADS-B.

Це приймає кілька параметрів, які вказують на характеристики фальшивого трафіку:

  • викликний знак: Викликний знак фальшивого транспондера.
  • відстань: Горизонтальна відстань до фейкового транспортного засобу від поточного транспортного засобу.
  • direction: Напрямок в NED від цього транспортного засобу до шахрайського в радіанах.
  • traffic_heading: Напрямок руху трафіку в NED в радіанах.
  • altitude_diff: Висотна різниця фальшивого трафіку. Позитив вгору.
  • hor_velocity: Горизонтальна швидкість фальшивого трафіку, у м/с.
  • ver_velocity: Вертикальна швидкість фальшивого трафіку, у м/с.
  • тип_емітера: Тип штучного транспортного засобу, як перераховане значення.
  • icao_address: ICAO адреса.
  • lat_uav: Широта цього літального апарату (використовується для розміщення фальшивого трафіку навколо літального апарату)
  • on_uav: Lon цього літального апарату (використовується для розміщення фальшивого трафіку навколо літального апарату)
  • alt_uav: Висота літального апарату (як посилання - використовується для розміщення фальшивого трафіку навколо літального апарату)

Метод створює симульоване повідомлення транспондера біля транспортного засобу, використовуючи наступні кроки:

  • Обчислює широту та довготу трафіку на основі позиції БПЛА, відстані та напрямку.
  • Обчислює нову висоту, додавши різницю висоти до висоти БПЛА.
  • Заповнює тему TransponderReport симульованими даними про трафік.
  • Якщо дошка підтримує унікальний універсальний ідентифікатор (UUID), метод отримує UUID за допомогою board_get_px4_guid та копіює його до поля uas_id структури. В іншому випадку воно генерує симульований GUID.
  • Публікує симульоване повідомлення про трафік за допомогою orb_publish.

:::

Подальша інформація