ПЕРЕЙТИ ДО ЗМІСТУ
Дистанційна ударна група Альфа
EN SV ВИДАННЯ 2026-Q2 АКТИВНА
НЕТАЄМНО
FSG-A // ІНТЕРАКТИВНІ ІНСТРУМЕНТИ

Планувальник ротації покриття ISR

Інтерактивний планувальник ротації ISR Fischer 26 для цілодобового спостереження. Розрахунок мінімальної кількості дронів у повітрі, прогалин покриття та інтервалів зміщення.

▶ ІНТЕРАКТИВНИЙ ІНСТРУМЕНТ LISA 26
Автор: Tiny

Interactive: ISR Coverage Rotation Planner

Fischer 26 — 24-Hour Coverage Model

Plan Fischer 26 rotation to maximize persistent ISR coverage. Adjust fleet size, endurance, and recharge time to see how many drones are airborne at any hour.

Fleet Size
Endurance (h)
Recharge (h)
Coverage/drone (km²)

Постійне ISR-покриття з обмеженим флотом дронів

Планувальник ротації вирішує проблему планування безперервного повітряного спостереження дронами з обмеженою автономністю. П'ять Fischer 26 з 2-годинною автономністю та 2,5-годинною зарядкою не можуть літати одночасно — планувальник розраховує оптимальний інтервал зміщення щоб коли один дрон повертається на зарядку інший запускався на заміну. Візуальна 24-годинна шкала часу показує точно коли кожен дрон у повітрі (зелений) і заряджається (сірий) та виявляє прогалини коли жоден дрон не літає. Зі стандартною конфігурацією планувальник підтримує в середньому 2,2 дрони в повітрі безперервно з нульовими прогалинами.

Аналіз прогалин та розмір флоту

Критичний показник — мінімальна кількість дронів у повітрі в найгіршому випадку за 24-годинний цикл. Якщо це значення падає до нуля існує вікно коли бригада не має ISR-покриття і фактично оперує наосліп. Планувальник показує що чотири Fischer 26 зі стандартним профілем дають періодичні прогалини 15–20 хвилин. П'ять усувають усі прогалини. Шість забезпечують резерв — якщо один дрон втрачено від вогню противника решта п'ять підтримують безперервне покриття.

Оптимізація інтервалу зміщення

Оптимальний інтервал зміщення дорівнює загальному часу циклу поділеному на розмір флоту. Для 5 дронів з 4,5-годинним циклом зміщення становить 54 хвилини — один дрон запускається кожні 54 хвилини за ковзним графіком. Відхилення від оптимального інтервалу — наприклад запуск двох дронів одночасно після затримки обслуговування — створює тимчасове перенасичення а потім прогалину. Візуалізація часової шкали планувальника робить ці помилки планування негайно видимими.

Вплив погоди на планування покриття

Скандинавська погода суттєво впливає на автономність Fischer 26 і, отже, на планування ротації покриття. При −20 °C ємність LiPo-акумулятора падає приблизно до 50 % від номіналу, скорочуючи ефективну автономність із 2 годин до 1 години. Планувальник покриття має це враховувати: або подвоїти розмір флоту (10 дронів замість 5), або прийняти періодичні прогалини покриття в екстремальному холоді. Дощ понад 5 мм/год знижує ефективність оптичної камери, але не впливає на теплове виявлення — планувальник повинен рекомендувати лише тепловий ISR під час опадів. Вітер понад 15 м/с повністю перевищує безпечну експлуатаційну оболонку Fischer 26, що вимагає заземлення всіх фіксовано-крилих ISR і переходу на наземні сенсорні мережі.

Протокол передачі між вихідним і вхідним дроном

54-хвилинний інтервал зміщення створює 10–15 хвилинний період перекриття, коли і вихідний, і вхідний Fischer 26 одночасно в повітрі. Це перекриття навмисне і критичне для безперервного покриття — вхідний дрон повинен встановити MANET-мережеве з\'єднання і підтвердити функціональність сенсорів до того, як вихідний дрон повернеться на зарядку. Протокол передачі складається з чотирьох кроків: вхідний дрон досягає оперативної висоти і підтверджує потік даних COP; вхідний дрон перевіряє, що його конвеєр виявлення YOLOv8 генерує валідні виявлення; вихідний дрон отримує підтвердження завершення передачі; вихідний дрон починає політ повернення на базу. Якщо будь-який крок не виконано, вихідний дрон продовжує місію до розв\'язання проблеми, використовуючи 20 % резерв палива, спеціально передбачений для затримок передачі.

Реалізація

# ISR Coverage Rotation — Stagger Optimization
class CoverageModel:
    def __init__(self, n_drones, endurance_h, recharge_h):
        self.n = n_drones
        self.endurance = endurance_h
        self.cycle = endurance_h + recharge_h

    def airborne_at(self, t_hours):
        """Count airborne drones at time t."""
        count = 0
        for i in range(self.n):
            offset = i * (self.cycle / self.n)
            phase = (t_hours + offset) % self.cycle
            if phase < self.endurance:
                count += 1
        return count

    def min_airborne_24h(self):
        """Worst-case airborne count in 24h cycle."""
        return min(self.airborne_at(t/4) for t in range(96))

# 5× Fischer 26: 2h flight, 2.5h charge
model = CoverageModel(5, 2.0, 2.5)
stagger_min = (model.cycle / model.n) * 60
print(f"Stagger: {stagger_min:.0f} min between launches")
print(f"Min airborne: {model.min_airborne_24h()}")
print(f"Coverage: {model.min_airborne_24h() * 100} km² minimum")

Джерела

  • ArduPilot — ardupilot.org
  • FOI — FOI publications catalogue (foi.se/publications)

Пов'язані розділи