Аналізатор затримки конвеєра виявлення
Інтерактивний анімований конвеєр що показує кожен етап від захоплення кадру камерою через інференс YOLOv8, проекцію MGRS та передачу MANET до оновлення дисплея COP.
Interactive: Detection Pipeline Latency Analyzer
Each stage of the detection pipeline has measured latency. Click RUN to see the pipeline execute in real time. Adjust the relay hops to see how MANET distance affects total latency.
Наскрізна затримка виявлення від сенсора до командира
Аналізатор конвеєра вимірює кожну мілісекунду від моменту захоплення кадру камерою до моменту появи цілі на оперативній карті командира. Загальна затримка конвеєра визначає швидкість реагування бригади на нові загрози. При нульових ретрансляційних переходах MANET (пряме з'єднання) повний конвеєр займає 35 мілісекунд — швидше за один моргання людського ока. При трьох переходах (типове бригадне розгортання) затримка зростає до 59 мілісекунд. Навіть при максимальних семи переходах через 30-кілометрову мережу загальна затримка залишається менше 100 мілісекунд — фактично реальний час для тактичного прийняття рішень.
Покроковий розбір етапів конвеєра
Конвеєр складається з восьми послідовних етапів кожен з виміряною затримкою. Захоплення кадру сенсором IMX477 займає 5 мілісекунд. Інференс YOLOv8 на Jetson Orin Nano (оптимізація FP16 TensorRT) — 15 мілісекунд це найдовший і найбільш обчислювально інтенсивний етап де нейронна мережа обробляє зображення 640×640 пікселів для виявлення та класифікації техніки особового складу та дронів. Проекція піксель-MGRS на реальні координати — 2 мілісекунди. Злиття Демпстера-Шейфера — 3 мілісекунди. Серіалізація Cursor on Target XML — 1 мілісекунда. Шифрування AES-256 — 1 мілісекунда. Передача MANET — 8 мілісекунд на кожен перехід. Вставка в базу PostGIS — 5 мілісекунд. Пуш WebSocket до COP-дисплеїв — 3 мілісекунди.
Кількість переходів MANET та вплив архітектури ретрансляції
Повзунок переходів MANET демонструє лінійну залежність між глибиною мережі та затримкою передачі. Кожен ретрансляційний перехід додає 8 мілісекунд. При нульових переходах лише локальні етапи обробки впливають на затримку. При семи переходах передача MANET становить 56 мілісекунд — більше ніж усі інші етапи разом. Тому позиціонування Fischer 26 як ретрансляційного вузла є вирішальним: оптимальне розміщення може зменшити кількість переходів з семи до трьох скоротивши загальну затримку на 32 мілісекунди.
Прочитати повну технічну документацію →
Вибір моделі YOLOv8 та донавчання під північні умови
15-мілісекундний час інференсу передбачає YOLOv8n (nano), експортований у формат TensorRT FP16, що працює на Jetson Orin Nano. Модель nano обрано замість більших варіантів small (s) і medium (m), оскільки Orin Nano має обмежену GPU-пам\'ять (8 ГБ спільної), і час інференсу для YOLOv8s перевищив би 30 мілісекунд, подвоївши затримку AI-етапу. Щоб компенсувати менший розмір моделі, референсна конфігурація донавчає YOLOv8n на північно-специфічному наборі даних, що містить шведські військові транспортні засоби (Strv 122, Strf 90, BV 206), російські військові транспортні засоби (T-72B3, БМП-2, БТР-82А) і північні особливості місцевості (засніжені транспортні засоби, транспорт під смерековим пологом, техніка при −30 °C з мінімальним тепловим підписом). Донавчання на 5 000 анотованих зображень покращує точність виявлення з 45 відсотків (COCO попередньо навчений) до 87 відсотків на північних цілях.
Проєкція піксель-MGRS без GPS
Перетворення координати центрального пікселя bounding box на реальну MGRS-координату потребує чотирьох входів: позиція пікселя (u, v) у кадрі камери, внутрішні параметри камери (фокусна відстань, головна точка, коефіцієнти дисторсії), орієнтація дрона з EKF3 AHRS (крен, тангаж, рискання — доступні без GPS), і висота дрона з барометра BMP390 (±0,5 м відносна точність, невразлива до РЕБ). Проєкція будує промінь від камери через піксель, повертає його на орієнтацію IMU у світові координати і перетинає його з горизонтальною площиною землі на висоті рельєфу під дроном. Без GPS абсолютна позиція має 50–200 м невизначеності залежно від дрейфу візуальної навігації, але відносні позиції виявлень у межах одного польоту точні до 5–10 м, тому що дрейф IMU стабільний між усіма проєкціями з того самого польоту.
Реалізація
# Detection Pipeline Latency — Stage Breakdown
STAGES = [
("IMX477 capture", 5), # ms
("YOLOv8 FP16", 15), # Jetson Orin Nano
("Pixel→MGRS", 2), # coordinate projection
("DS fusion", 3), # Dempster-Shafer
("CoT XML", 1), # serialization
("AES-256", 1), # encryption
("MANET TX", 8), # per hop
("PostGIS insert", 5), # database
("WebSocket push", 3), # COP update
]
def pipeline_latency(manet_hops=3):
"""Total latency from camera to COP display."""
total = 0
for name, ms in STAGES:
actual = ms * manet_hops if "MANET" in name else ms
total += actual
print(f" {name:20s} {actual:4d}ms (cumulative: {total}ms)")
return total
for hops in [0, 3, 7]:
print(f"\n=== {hops} MANET hops ===")
t = pipeline_latency(hops)
print(f" TOTAL: {t}ms — {'REAL-TIME' if t < 100 else 'NEAR RT'}")
Джерела
- ArduPilot — ardupilot.org
- FOI — FOI publications catalogue (foi.se/publications)