5. Логика работы системы
5.1. Общий обзор
Система UWB-посадки обеспечивает определение положения дрона относительно площадки и передачу этих данных автопилоту через сообщение MAVLink 2 LANDING_TARGET.
Основные компоненты системы:
- UWB-реперы (UU-AE70-I5-P1) — формируют координатную систему площадки (NED) и обеспечивают измерения расстояний.
- UWB-ридеры (UU-TG8-2V-P1) — установлены на дроне, принимают сигналы от реперов, вычисляют дистанции и передают данные в Raspberry Pi LE.
- Raspberry Pi LE (Location Engine) — вычисляет координаты дрона, преобразует их из NED в FRD и передаёт автопилоту сообщения
LANDING_TARGET. - Автопилот (CUAV X7+ Pro) — принимает
LANDING_TARGETи использует данные для режима Precision Landing.
5.2. Последовательность инициализации
Запуск Raspberry Pi LE
- Запускается служба
uwb_landle.service. - Загружается конфигурация из
/home/uwblandle/configs/config.json. - Открываются UART-порты для связи с ридерами и автопилотом.
Инициализация ридеров
- Каждый ридер после включения отправляет в LE сообщение
UWB_READER_CONFIG, содержащее его основные настройки и параметры работы. - LE начинает обмен синхронизационными сообщениями
TIMESYNCс каждым ридером для выравнивания временной базы. - После этого устанавливается регулярный обмен сообщениями
HEARTBEAT, предназначенными для контроля состояния связи и обнаружения потери соединения.
Инициализация сайта
- Когда ридеры начинают уверенно принимать измерения от реперов текущего сайта, они отправляют в LE сообщения
UWB_SITE_STATUSсо статусом активного сайта. - В этих сообщениях передаётся основная информация о площадке: идентификатор сайта, координаты в WGS-84 и в СК NED, а также текущее состояние (активен / неактивен / ошибка).
- LE регистрирует появление активного сайта и сохраняет его параметры для дальнейших расчётов.
- Обмен
HEARTBEATиTIMESYNCпродолжается для обеспечения стабильной связи и корректного времени.
5.3. UWB-позиционирование на сайте
- После инициализации ридеры измеряют время пролёта (ToF) сигналов до реперов и вычисляют дистанции.
- Каждый ридер формирует сообщения
UWB_RANGE, содержащие идентификаторы реперов, измеренные дистанции, RSSI и временные метки, и передаёт их в LE. - Raspberry Pi LE получает потоки
UWB_RANGEот всех ридеров, объединяет их и вычисляет координаты дрона в СК NED.
5.4. Синхронизация и интеграция с автопилотом
Синхронизация времени.
LE выполняет обмен сообщениямиTIMESYNCс автопилотом для согласования временной базы и минимизации задержек.
Параллельно продолжается обменHEARTBEATс ридерами для контроля состояния каналов связи.Приём данных ориентации.
LE принимает от автопилота сообщенияATTITUDE_QUATERNION_COVиHIGHRES_IMU.
Эти данные объединяются с результатами UWB-позиционирования для расчёта положения дрона относительно площадки.Формирование результатов.
На основе объединённых данных формируется сообщениеLANDING_TARGETс координатами в СК FRD, которое передаётся автопилоту по MAVLink для использования в режиме Precision Landing.
5.5. Основной цикл работы LE (псевдокод)
while service_active:
receive_HEARTBEAT() # мониторинг ридеров
receive_UWB_RANGE() # измерения от ридеров
compute_position_NED() # расчёт координат по UWB
read_ATTITUDE_QUATERNION() # ориентация дрона
transform_to_FRD() # преобразование координат NED → FRD
send_LANDING_TARGET() # передача автопилоту
monitor_links_and_time() # контроль TIMESYNC и состояния каналов
5.6. Fail-safe и контроль ошибок
| Сценарий | Реакция LE | Действие автопилота |
|---|---|---|
| Потеря связи с ридером > 1 с | ридер помечается как неактивный | работа по оставшимся ридерам |
| Потеря всех ридеров | приостановка LANDING_TARGET | переход в Loiter или Resume GPS |
| Потеря TIMESYNC | предупреждение, переход на внутренние таймеры | возможный дрейф времени |
| Ошибка HEARTBEAT | предупреждение в журнале, флаг «degraded» | без действий |
| Нарушение формата сообщений | запись ошибки, сброс UART-порта | без действий |
5.7. Временные характеристики
| Параметр | Значение | Комментарий |
|---|---|---|
| Частота измерений UWB | 8 Гц | типовое значение |
Частота LANDING_TARGET | 20 Гц | |
| Средняя задержка LE → FCU | ≤ 5 мс | при нормальной нагрузке |
| Тайм-аут данных UWB | 1 с | после чего передача останавливается |
Интервал TIMESYNC | 500 мс | двусторонняя синхронизация LE ↔ автопилот |
Интервал HEARTBEAT | 1 с | диагностика каналов и отклик ридеров |
5.8. Диагностика и состояния LE
- HEARTBEAT — каждую секунду (1 Гц).
- Логи:
/home/uwblandle/logs/uwb_landing_system.<дата>.log. - Ключевые поля: число активных ридеров, количество видимых реперов, качество решения, время цикла, состояние синхронизации.
Раздел 5 описывает инициализацию и рабочие процессы системы, механизмы синхронизации, интеграцию с автопилотом и обработку ошибок.