STANAG 4609
KLV МЕТАДАНІ
ОГЛЯД STANAG 4609 KLV
Чому це має значення — метадані STANAG
Якщо Lisa 26 генеруватиме відео у власному форматі, жодна союзна система не зможе його читати. STANAG 4609 — це стандарт NATO для вбудовування метаданих у відео. Будь-яка NATO-сумісна система C2 — від шведського батальйонного командного пункту до NATO AWACS — може приймати відео Lisa 26 і негайно бачити метадані: де був дрон, куди він дивився, що виявив. Це і є взаємодія. Без неї Lisa 26 залишиться ізольованим островом.
Структура KLV-пакета
Кожен відеокадр несе KLV-пакет метаданих. Пакет — це послідовність трійок тег-довжина-значення. Ключові теги, визначені MISB ST 0601:
| Тег | Назва | Джерело в Lisa 26 | Примітка |
|---|---|---|---|
| 2 | UNIX Timestamp | Системний годинник (NTP через Starlink) | Точність до мікросекунд |
| 13 | Platform Latitude | EKF3 або оцінка оператора | Градуси, WGS84 |
| 14 | Platform Longitude | EKF3 або оцінка оператора | Градуси, WGS84 |
| 15 | Platform Altitude | Барометр (BMP390) | Метри MSL |
| 16 | Platform Heading | EKF3 AHRS (гіроскоп) | Градуси, істинні |
| 17 | Platform Pitch | EKF3 AHRS | Градуси |
| 18 | Platform Roll | EKF3 AHRS | Градуси |
| 40 | Target Location Lat | Проєкція пікселя на землю | Центр детекції |
| 41 | Target Location Lon | Проєкція пікселя на землю | Центр детекції |
| 65 | Platform Designation | Рядок-ідентифікатор дрона | Наприклад «FPV-ALFA-01» |
Кожен відеокадр несе невидимі дані, закодовані у транспортному потоці згідно зі специфікацією MISB Standard 0601. Мінімально необхідні теги включають позицію сенсора, орієнтацію сенсора, позицію цілі та часову мітку. Необов'язкові теги надають додатковий контекст: швидкість вітру, ідентифікатор платформи, рівень класифікації та ідентифікатор місії. Будь-яка система NATO, здатна читати STANAG 4609, може декодувати і показати ці теги без спеціального ПЗ чи конвертації форматів.
Процес кодування додає приблизно 200 байт на кадр у транспортний потік відео — мізерно порівняно з самими відеоданими, але ці байти несуть критичний оперативний контекст. Без метаданих записаний відеофрагмент — це просто пікселі: аналітик, що переглядає запис через кілька годин, не може визначити, де був дрон, куди дивилася камера і на якій висоті. З вбудованими метаданими кожен окремий кадр стає самодостатнім геопросторовим записом, який будь-яка NATO-система може декодувати і показати на карті без ручного географічного прив'язування.
Взаємодія через метадані
Кожна країна NATO, яка експлуатує ISR-дрони, використовує різні відеоформати, різні протоколи телеметрії і різне ПЗ наземних станцій. Без спільного стандарту метаданих обмін відео між країнами вимагає ручного введення координат — шведський оператор читає координати зі свого екрана і вводить їх у норвезьку систему. Цей процес вносить транскрипційні помилки (перестановка цифр у сітці MGRS може розташувати ціль за кілометр від реального місця) і займає 30–60 секунд на ціль. Метадані KLV усувають обидві проблеми.
З KLV-метаданими STANAG 4609, вбудованими у відеопотік, норвезький оператор TAK, отримуючи відео Fischer 26, бачить координати цілі, автоматично накладені на свою карту — жодного ручного введення, жодних транскрипційних помилок, нульова затримка. Метадані подорожують разом із відеокадрами через будь-яку систему розподілу: супутниковий лінк, ретранслятор MANET, запис на SD-картці або IP-мережу. Навіть якщо відео архівоване і переглядається через кілька днів, координати залишаються вбудованими і точними. Ця взаємодія — основа об'єднаних дронових операцій JEF: без KLV багатонаціональна координація дронів потребує передачі координат голосом, що повільно і схильно до помилок.
Реалізація на Jetson Orin Nano
Кодування метаданих KLV виконується як легкий процес на Jetson Orin Nano поряд із YOLOv8 та ORB-SLAM3. Кодер читає позицію і орієнтацію дрона з потоку телеметрії MAVLink (30 Гц), читає координати цілей з виходу детекцій YOLOv8 і будує KLV-пакет, сумісний із MISB ST 0601, для кожного відеокадру. Розмір пакета: приблизно 200 байт на кадр. При 30 кадрах/с: 6 кБ/с метаданих — мізерна пропускна здатність порівняно зі стисненим відеопотоком. Дані KLV мультиплексуються в транспортний потік H.264 як окремий PES (Packetized Elementary Stream) згідно зі специфікацією контейнера MPEG-2 TS. Будь-який STANAG 4609-сумісний програвач декодує і відео, і метадані без змін.
Пов'язані розділи
Реалізація
# STANAG 4609 KLV Metadata Encoder
import struct
def encode_klv_packet(drone_lat, drone_lon, drone_alt,
cam_pitch, cam_roll, cam_yaw,
target_lat, target_lon, timestamp_us):
"""Encode MISB ST 0601 KLV metadata for drone video."""
klv = bytearray()
# Key: UAS Datalink Local Set (06 0E 2B 34)
klv += bytes([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x0B, 0x01, 0x01,
0x0E, 0x01, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00])
# Tag 2: Precision Time Stamp (microseconds since epoch)
klv += encode_tag(2, struct.pack(">Q", timestamp_us))
# Tag 13: Sensor Latitude (scaled int32, ±90°)
lat_scaled = int(drone_lat / 90.0 * 2147483647)
klv += encode_tag(13, struct.pack(">i", lat_scaled))
# Tag 14: Sensor Longitude
lon_scaled = int(drone_lon / 180.0 * 2147483647)
klv += encode_tag(14, struct.pack(">i", lon_scaled))
# Tag 15: Sensor True Altitude (meters, uint16 offset 900)
alt_scaled = int((drone_alt + 900) * 19.2)
klv += encode_tag(15, struct.pack(">H", alt_scaled))
# Tag 23/24: Target Location
klv += encode_tag(23, struct.pack(">i", int(target_lat/90*2147483647)))
klv += encode_tag(24, struct.pack(">i", int(target_lon/180*2147483647)))
return bytes(klv)
Джерела
Нормативні джерела. NATO STANAG 4609 Ed.4: NATO Digital Motion Imagery Standard — опублікований NATO Standardization Office. MISB ST 0601: UAS Datalink Local Set — Motion Imagery Standards Board, motion-imagery.org. Структура контейнера MPEG-TS — ISO/IEC 13818-1. Теги KLV (2, 13, 14, 15, 16, 17, 18, 40, 41, 65) та їхні дефініції, масштабовані цілі числа — документовано в специфікації MISB ST 0601.
Математично перевірювані оцінки. Розмір пакета 200 байт на кадр × 30 кадрів/с = 6 кБ/с — проста арифметика. Кодування цілих масштабованих значень (lat × 2147483647 / 90) — стандарт MISB.
Операційні оцінки — не верифіковано в польових умовах. Оціночна додаткова затримка менше 1 мс через KLV-інтеграцію — розрахункова на основі алгоритмічної вартості struct.pack, не виміряна на Jetson Orin Nano. Час транскрипції координат «30–60 секунд на ціль» та типовий рівень помилок MGRS «1 км» при перестановці цифр — оцінки FSG-A на основі опублікованого аналізу командних процедур. Твердження «будь-яка NATO-система може декодувати без зміни» є правдивим для NATO-сертифікованих систем, але не для експериментальних чи національних систем, що можуть мати відмінні реалізації.
Зовнішні стандарти та джерела. NATO STANAG 4609 Ed.4: NATO Digital Motion Imagery Standard. MISB ST 0601: UAS Datalink Local Set (motion-imagery.org). Документація GStreamer KLV muxer. Посібник FFmpeg з ін'єкції MISB-метаданих. FSG-A не тестувала KLV-кодер на реальному відео від бойового дрона — апаратура комерційно доступна, але інтеграція концептуальна.