В этом разделе описаны сообщения MAVLink, используемые в системе UWB‑посадки: структура обмена, направления передачи и назначение сообщений. XML‑описания кастомных сообщений приведены в Приложении A.
Ниже представлена схема взаимодействия компонентов системы (ридеры, LE, автопилот).

Рисунок 10‑1 — Диаграмма обмена сообщениями системы.
| Message Name | Direction | Description (RU) | Frequency |
|---|---|---|---|
| UWB_READER_CONFIG | Reader → LE | Конфигурация ридера: идентификатор/серийный номер, координаты FRD и прочие рабочие настройки ридера. | При запуске и при изменении |
| UWB_SITE_STATUS | Reader → LE | Состояние активного сайта: идентификатор и геодезические координаты площадки, координаты точки посадки в NED, текущий статус (inactive/active/error). | По событию (после уверенного приёма на площадке) |
| UWB_RANGE | Reader → LE | Массив измерений расстояний до реперов с идентификаторами, RSSI и метками времени; используется для расчёта координат в LE. | 8 Гц (на ридер) |
| HEARTBEAT | Reader → LE | Контроль доступности ридера для LE. | 1 Гц |
| TIMESYNC | Reader ↔ LE | Согласование временных меток между ридером и LE для корректной временной привязки измерений. | 2 Гц (каждые 500 мс) |
| TIMESYNC | LE ↔ FCU | Синхронизация времени между LE и автопилотом для согласования временных меток. | 2 Гц (каждые 500 мс) |
| HEARTBEAT | LE → FCU | Контроль доступности LE для FCU. | 1 Гц |
| ATTITUDE_QUATERNION_COV | FCU → LE | Ориентация дрона (кватернион + ковариации); используется для преобразования NED → FRD. | Настройка LE (обычно 10–50 Гц) |
| HIGHRES_IMU | FCU → LE | Линейные ускорения, угловые скорости, магнитометр; для согласования движения с UWB‑позиционированием. | Настройка LE (обычно 10–100 Гц) |
| LANDING_TARGET | LE → FCU | Положение посадочной цели в СК FRD; используется автопилотом в режиме Precision Landing. | Настройка LE обычно 20 Гц |
UWB_READER_CONFIG при запуске/смене настроек, затем циклически отправляют HEARTBEAT, а также телеметрию дистанций UWB_RANGE. При уверенном приёме на конкретной площадке ридер отправляет UWB_SITE_STATUS.LANDING_TARGET с частотой 20 Гц.TIMESYNC выполняется между LE и ридерами, а также между LE и FCU (интервал 500 мс).UWB_READER_CONFIG; LE устанавливает TIMESYNC и начинает получать HEARTBEAT от ридеров.UWB_SITE_STATUS.UWB_RANGE с периодом 20 Гц; LE вычисляет координаты и принимает ориентацию от FCU.LANDING_TARGET с периодом 20 Гц; TIMESYNC LE↔FCU поддерживает согласование меток.Ниже приведены XML‑определения сообщений, используемых между ридерами и LE.
Указаны только сообщения, задействованные в текущей архитектуре.
<!-- [1] Reader (TG8 TOF Anchor) configuration -->
<message id="42010" name="UWB_READER_CONFIG">
<description>Configuration of the UWB reader mounted on the drone (position in body frame).</description>
<field type="uint64_t" name="time_usec">Current system time [us]</field><!-- 0 if unknown -->
<field type="uint32_t" name="reader_id">Reader serial number</field>
<field type="float" name="bx">Reader X in drone/body frame [m]</field>
<field type="float" name="by">Reader Y in drone/body frame [m]</field>
<field type="float" name="bz">Reader Z in drone/body frame [m]</field>
<field type="uint16_t" name="seq">Sequence counter (increments on change)</field>
</message><message id="42011" name="UWB_SITE_STATUS">
<description>Status of the active UWB landing/positioning site.</description>
<field type="uint64_t" name="time_usec">Current system time [us]</field>
<field type="uint64_t" name="first_seen_usec">Time when site first detected [us]</field>
<field type="uint64_t" name="last_update_usec">Time of last site update [us]</field>
<field type="uint32_t" name="site_id">Numeric site identifier</field>
<field type="int32_t" name="siteLon_e7">WGS84 longitude [degE-7]</field>
<field type="int32_t" name="siteLat_e7">WGS84 latitude [degE-7]</field>
<field type="int32_t" name="siteAlt_mm">Altitude MSL [mm]</field>
<field type="float" name="landX_m">Landing point X in site NED [m]</field>
<field type="float" name="landY_m">Landing point Y in site NED [m]</field>
<field type="float" name="landZ_m">Landing point Z in site NED [m]</field>
<field type="uint8_t" name="state" enum="UWB_SITE_STATE">0: inactive, 1: active, 2: error</field>
</message>
<!-- [3] Single range measurement -->
<message id="42012" name="UWB_RANGE">
<description>Single UWB range measurement with optional site coordinates.</description>
<field type="uint64_t" name="time_usec">LE-synchronized measurement time [us]</field><!-- 0 if unknown -->
<field type="uint32_t" name="reader_id">Reader serial number</field>
<field type="uint32_t" name="site_id">Site identifier</field>
<field type="uint32_t" name="reper_id">Reper serial number</field>
<field type="float" name="reperX_m">Reper X in site NED [m]</field>
<field type="float" name="reperY_m">Reper Y in site NED [m]</field>
<field type="float" name="reperZ_m">Reper Z in site NED [m]</field>
<field type="uint8_t" name="tof_seq">TOF cycle sequence number</field>
<field type="float" name="range_m">Measured range [m]</field>
<field type="int16_t" name="rssi_dbm10">RSSI [dBm/10]</field>
<field type="uint8_t" name="range_class" enum="UWB_RANGE_CLASS">EMPTY:0, NLOS:1, UNDEF:2, LOS:3</field>
</message>
Конец раздела 10.