Екосистема Team Awareness Kit (TAK) — одна з найширше розгорнутих тактичних програмних платформ, що використовуються союзними наземними силами сьогодні. Побудована на відкритому протоколі та клієнтській архітектурі з розширенням через плагіни, вона дозволяє командам оборонного програмного забезпечення додавати спеціалізовані можливості — потоки даних сенсорів, підключення до бекенду C2, логістичні дані, координацію вогневої підтримки — без розгалуження основного застосунку. У цій статті розглядається структура екосистеми, принцип роботи API плагінів і що потрібно для створення плагіна, що надійно інтегрується з наявною системою командування та управління.
Архітектура екосистеми TAK
Екосистема TAK — це сімейство клієнтів ситуаційної обізнаності та серверного програмного забезпечення. На клієнтському рівні: ATAK (Android Team Awareness Kit) працює на захищених Android-пристроях і є домінуючим форм-фактором для піших підрозділів. WinTAK — аналог для Windows, що зазвичай використовується на командних пунктах і вбудованих робочих станціях, де розмір екрана та обчислювальна потужність менш обмежені. iTAK працює на iOS і використовується у деяких ролях спостерігачів і авіації. Усі три клієнти мають спільну модель даних і протокол, тому позиція, надіслана з пристрою ATAK, миттєво з'являється на консолі WinTAK, підключеній до того самого сервера.
TAK Server — доступний як проект FreeTAKServer з відкритим вихідним кодом і у вигляді кількох комерційних дистрибутивів, включно з CloudTAK — знаходиться в центрі архітектури. Його завдання — федерування потоків подій Cursor on Target (CoT): приймання CoT від підключених клієнтів через TCP/TLS, розповсюдження цих подій іншим підключеним клієнтам, збереження оперативної картини та забезпечення спільної оперативної картини (COP) для клієнтів, підключених через WAN, і локальних підрозділів, що використовують mesh-мережі.
Федерування розширює це ще далі. Два екземпляри TAK Server можуть встановити федеративний зв'язок, так що події з пулу клієнтів одного сервера стають видимими на іншому — механізм, завдяки якому союзні сили обмінюються частковою COP без об'єднання своїх мереж. Власні бекенди C2 підключаються до цієї архітектури на рівні TAK Server, а не на рівні клієнта, що означає: добре спроектована інтеграція C2 не вимагає жодних змін у самому застосунку ATAK.
Архітектура плагінів: як працюють плагіни ATAK
Плагін ATAK — це APK-файл для Android, що встановлюється поруч з хост-застосунком ATAK. Під час встановлення ATAK зчитує маніфест плагіна, реєструє його у менеджері плагінів і робить точку входу плагіна доступною через панель плагінів ATAK. Плагін не замінює жодну частину ATAK — він розширює її. ATAK продовжує повноцінно функціонувати, якщо плагін видалено або відключено.
Хуки життєвого циклу
Точка входу плагіна розширює AbstractPlugin і реалізує два основні методи життєвого циклу. onCreate викликається при завантаженні плагіна ATAK — тут плагін реєструє свої інструменти, шари накладання та слухачі подій, а також запускає необхідні фонові сервіси. onDestroy викликається при вивантаженні плагіна — тут мають бути коректно звільнені всі ресурси: фонові потоки, мережеві з'єднання та шари карти. Витоки пам'яті в onDestroy — найпоширеніше джерело нестабільності ATAK, спричиненої сторонніми плагінами.
Точки розширення UI
ATAK надає три основні точки розширення для UI плагіна. У радіальне меню — кругове контекстне меню, що з'являється при довгому натисканні на елемент карти — можна впроваджувати дії плагіна, щоб клацання правою кнопкою на позиційному звіті запускало специфічний для плагіна робочий процес, наприклад формування вогневої місії з цільової точки. Панель інструментів плагіна дозволяє додати кнопку до головної панелі ATAK, що відкриває власну спадну панель. Повноекранні фрагменти можуть бути поміщені до стеку навігації ATAK для складніших робочих процесів, таких як форми введення даних.
Весь UI плагіна має бути розроблений для роботи однією рукою в рукавицях. Сенсорні цілі менше 56dp неприпустимі. Будь-який процес введення даних, що вимагає більше трьох взаємодій, слід переосмислити — оператори в контакті не мають часу на складні форми.
Патерни доступу до даних
Плагіни отримують доступ до даних карти через MapView, що надає методи для додавання, оновлення та видалення елементів карти. Точкові елементи (маркери позицій, контакти сенсорів) є екземплярами PointMapItem. Площинні та лінійні елементи є підкласами Shape. Кожен елемент карти має UID, який має бути стабільним між оновленнями — зміна UID створює дублікат елемента замість оновлення наявного, що є однією з найпоширеніших помилок плагінів у виробничих системах.
Детальний огляд CoT: протокол, що з'єднує все
Cursor on Target — це протокол обміну подіями на основі XML, що лежить в основі всього обміну даними в екосистемі TAK. Кожен об'єкт на карті ATAK представлений як подія CoT. Глибоке розуміння CoT є обов'язковою умовою для будь-якої роботи з інтеграцією C2.
Структура події
Подія CoT має три обов'язкові елементи верхнього рівня. Кореневий елемент event містить тип події (таксономія з крапковим роздільником, що починається з a- для атомів, b- для бітів або t- для завдань), UID, часові мітки time/start/stale, атрибут how (як подія була згенерована — машиною чи людиною) і атрибути access та qos для класифікації та якості обслуговування. Елемент point містить широту, довготу, кругову похибку (ce), лінійну похибку (le) і висоту над еліпсоїдом (hae). Елемент detail — розширюваний контейнер для всього іншого.
Блок detail — це місце, де живуть специфічні для інтеграції дані. Стандартні піделементи включають contact (позивний та адреса кінцевої точки), __group (назва групи та роль), status (заряд батареї, готовність) і remarks (довільний текст). Власні дані передаються в піделементах з просторами імен: плагін вогневої підтримки може додати елемент <fireMission> з номером цілі, методом ураження та радіусом небезпечного зближення. Стандартний ATAK відображає ці власні елементи як невідомий detail і ігнорує їх; компаньйон-плагін, що знає схему, відображає їх коректно.
Ключові типи подій для інтеграції з C2
Таксономія типів подій охоплює тисячі конкретних типів. Для інтеграції з C2 найбільш релевантні: a-f-G-U-C (дружній наземний підрозділ, бойовий — стандартний трек синіх сил), a-h-G (ворожий наземний трек), a-u-G (невідомий наземний), b-m-p-w (маршрутна точка), b-r-f-h-c (запит на вогневу підтримку) і t-x-m-c (текстове повідомлення). Розуміння ієрархії типів — літери префікса кодують приналежність, бойовий вимір і функцію — дозволяє плагіну генерувати коректно відображувані іконки без жодних специфічних для плагіна ресурсів іконок.
Керування застарінням
Кожна подія CoT має часову мітку stale. ATAK видаляє події з карти, коли вони застарівають, — це механізм автоматичного старіння треків синіх сил. Плагін, що генерує позиційні звіти, має оновлювати їх до того, як вони застаріють — типові оновлення позиції надсилаються кожні 30–60 секунд із вікном застарівання 5 хвилин. Плагін, що генерує подію один раз і не оновлює її, побачить, що його елементи зникають з карти, — це поширена помилка у перших версіях інтеграцій C2.
Патерни інтеграції C2
Існують два основні патерни інтеграції C2-системи з екосистемою TAK. Патерн шлюзу діє на рівні TAK Server без необхідності плагіна на пристрої. Патерн плагіна працює на пристрої ATAK і підходить, коли інтеграція має реагувати на дії оператора на пристрої.
Патерн шлюзу: TAK Server до бекенду C2
Шлюз — це окремий сервіс, що підключається до потоку CoT TAK Server (через Federation API або як плагін TAK Server) і до API C2-системи. Коли від TAK Server надходить новий позиційний звіт, шлюз транслює його з XML CoT до формату треку C2-системи і надсилає до C2 API. Коли C2-система генерує новий контакт або завдання, шлюз генерує подію CoT і публікує її до TAK Server, звідки вона поширюється на всі підключені клієнти ATAK.
Цей підхід не вимагає плагіна на пристрої і жодних змін у застосунку ATAK. Він підходить, коли інтеграція переважно сервер-до-сервера і C2-система є авторитетним джерелом. Основна проблема — затримка: цикл оновлення позиції, що проходить шлях пристрій ATAK → TAK Server → шлюз → C2 API → шлюз → TAK Server → пристрій ATAK, може вносити затримки в кілька секунд залежно від інтервалів опитування та мережевих умов. Для обміну треками близько до реального часу модель підписки TAK Server із використанням з'єднань WebSocket краща за REST-опитування.
Патерн плагіна: інтеграція C2 на пристрої
Патерн плагіна виконує інтеграцію C2 безпосередньо на пристрої ATAK. Плагін підтримує з'єднання з C2 API (REST або WebSocket) і впроваджує події CoT безпосередньо у внутрішню шину подій ATAK, повністю оминаючи TAK Server для вхідного потоку даних. Це усуває один мережевий перехід і дозволяє плагіну додавати специфічний для пристрою контекст — поточну позицію оператора, вибрані елементи карти, активні завдання — до вихідних звітів C2.
Зворотний потік — від ATAK до C2-системи — реалізується шляхом підписки на шину подій CoT ATAK через CotEventListener. Слухач отримує всі події CoT, видимі ATAK, включно з тими, що надійшли від інших пристроїв. Плагін має ретельно фільтрувати: пересилати лише події, що ініційовані поточним пристроєм (перевіряти префікс UID), і не повторно пересилати події, що надійшли від C2-системи через шлюз, — інакше виникне зворотна петля, що заповнить C2 дублікатами треків.
Інженерна нотатка: UID подій CoT, згенерованих шлюзами C2, мають містити впізнаваний префікс простору імен — наприклад, C2-GW-{uuid}. Це дозволяє плагіну відфільтровувати їх із підписки на зворотний потік без ведення окремого списку блокування. Домовтеся про угоду щодо UID до написання будь-якого коду інтеграції.
Безпека: підписання, сертифікати та обробка класифікованих даних
Безпека плагінів ATAK забезпечується на двох рівнях: вимога до підписання плагіна та вимога до шифрування транспортування CoT. Обидва мають бути виконані для будь-якого плагіна, призначеного для оперативного використання.
Підписання плагінів
ATAK у державних конфігураціях вимагає, щоб плагіни були підписані довіреним центром сертифікації. Це відрізняється від підписання Google Play — якірним вузлом довіри є CA TAK Server, а не Google. APK плагіна має бути підписаний сертифікатом від цього CA до того, як ATAK завантажить його. Робочий процес такий: генерація пари ключів, подача запиту на підписання сертифіката адміністратору TAK Server, вбудовування підписаного сертифіката до сховища ключів плагіна і підписання APK цим сховищем. Непідписані плагіни або плагіни, підписані ненадійним CA, відхиляються без повідомлення.
У середовищах розробки зазвичай використовують самопідписаний CA і вручну розповсюджують CA-сертифікат на тестові пристрої. У виробничому середовищі CA, як правило, є тією самою PKI-інфраструктурою, що використовується для автентифікації клієнтів у TLS-з'єднаннях TAK Server.
Зашифроване транспортування CoT
Трафік CoT у виробничих середовищах передається через TLS із взаємною автентифікацією — і клієнт, і сервер надають сертифікати. Це означає, що кожен пристрій ATAK потребує клієнтського сертифіката, виданого CA TAK Server, а TAK Server потребує серверного сертифіката, якому довіряють клієнти. Реєстрація сертифікатів здійснюється через кінцеву точку реєстрації TAK Server, яка видає клієнтські сертифікати на основі попередньо спільного пароля або токена реєстрації.
Плагін, що відкриває власні мережеві з'єднання до бекенду C2, також має використовувати TLS з прив'язкою сертифіката. Дозволяти плагіну відкочуватися на відкритий текст — навіть тимчасово, під час розробки — формує звичку, яка зберігається у виробництві. Будуйте з TLS з першого дня.
Грифи класифікації в CoT
Події CoT, що містять класифіковані дані, використовують піделемент detail/classification для позначення події рівнем класифікації. Стандартне відображення ATAK не розрізняє візуально класифіковані та некласифіковані події — відповідальність за забезпечення передачі класифікованих подій виключно через засекречені мережі та їх зберігання лише на затверджених пристроях лежить на плагіні та системному адміністраторі. Плагін, розроблений для засекречених середовищ, має перевіряти класифікацію подій, що він отримує, перед їх відображенням або пересиланням, і відмовлятися пересилати класифіковані події до систем, що не мають права їх отримувати.
Типові варіанти використання плагінів
Найбільш оперативно цінні плагіни ATAK слідують повторюваному патерну: вони з'єднують спеціалізоване джерело даних із загальною оперативною картиною, скорочуючи кількість окремих екранів, які оператор має відстежувати.
Накладання відеопотоку з БпЛА. Плагін отримує відеопотік від наземної станції управління (GCS) БпЛА через RTSP або HLS і відображає його на панелі ATAK. Одночасно він отримує телеметрію від GCS — позицію БпЛА, азимут і кут нахилу гімбала, поле зору сенсора — і відображає полігон відбитку на карті ATAK, показуючи саме те, на що наразі спрямована камера БпЛА. Оператори можуть торкнутися точки всередині відбитку, щоб отримати точні координати, що забезпечує швидку передачу цілі без окремої робочої станції GCS.
Відображення контактів SIGINT. Приймач пеленгації звітує про лінії пеленга — напрямок від відомої точки збору до джерела випромінювання, що становить інтерес. Плагін перетворює їх на події лінії пеленга CoT і відображає на карті ATAK у вигляді ліній, що розходяться, з конусами невизначеності. Коли дві або більше ліній пеленга перетинаються, плагін може обчислити і відобразити приблизну позицію джерела випромінювання. Ця можливість інтегрується безпосередньо в тактичну картину без потреби в окремій робочій станції SIGINT. Докладніше про інтеграцію радіочастотних джерел даних читайте в нашій статті про інтеграцію тактичного радіопрограмного забезпечення.
Відстеження логістики та поповнення запасів. Логістичний плагін підключається до системи ланцюга постачання підрозділу і відображає поточне місцезнаходження транспортних засобів забезпечення, розрахунковий час їх прибуття на передову лінію та вміст кожного транспортного засобу. Запити на поповнення запасів, подані через плагін, генерують структуровані події завдань CoT, що надходять до системи логістики через шлюз C2, замикаючи цикл від запиту до доставки без голосового радіообміну.
Облік втрат. Медичний плагін дозволяє медикам записувати події втрат — категорію (невідкладна, пріоритетна, звичайна), механізм поранення, надану допомогу, статус евакуації — безпосередньо на карті ATAK у точці поранення. Подія є точкою CoT з медичним блоком detail. Вона надходить до дисплея WinTAK батальйонного лікаря в режимі реального часу і до системи координації медичної евакуації через шлюз C2, усуваючи радіодоповідь за формою 9-line як єдиний засіб передачі даних про втрати під вогнем.
Запити на вогневу підтримку. Цифровий плагін вогневої підтримки автоматизує підготовку та передачу запитів на вогневу підтримку. Оператор вибирає ціль на карті ATAK, заповнює структуровану форму запиту (опис цілі, метод ураження, позначення небезпечного зближення), і плагін генерує стандартизовану подію CoT для вогневих завдань. Подія одночасно надходить на дисплей офіцера вогневої підтримки і до C2-системи вогневих завдань без повторного введення. Плагін може отримувати підтвердження запитів на відкриття вогню та повідомлення про пострілі від C2 вогневих завдань і відображати їх на пристрої оператора.
Детальний огляд того, як CloudTAK слугує серверним хребтом для цих інтеграцій у мережевих середовищах, читайте у нашому посібнику з інтеграції API CloudTAK.
Тестування та розгортання
Тестування плагіна інтеграції ATAK з C2 потребує репрезентативного тестового середовища: екземпляр TAK Server, щонайменше два пристрої ATAK (один генерує події, інший їх спостерігає) і тестовий екземпляр або симулятор C2-системи. Найпоширеніші збої інтеграції — відсутність оновлення застарілих подій, дублікати UID, зворотні петлі у зворотному потоці — виявляються лише під навантаженням із кількома одночасно активними пристроями.
Розгортання здійснюється через пакети даних TAK Server. Пакет даних — це ZIP-архів, що містить APK плагіна, файл конфігурації плагіна (попередньо заповнений адресами серверів і обліковими даними) і CA-сертифікат, необхідний для TLS. Оператор встановлює пакет даних через менеджер імпорту ATAK, і всі компоненти надаються за один крок. Це значно надійніше, ніж ручне встановлення APK та реєстрація сертифікатів у польових умовах.
Тестування впливу на заряд акумулятора заслуговує окремої уваги. Плагін, що підтримує постійне з'єднання WebSocket з C2 API, може збільшити витрату акумулятора типового захищеного пристрою на 15–25%. Використовуйте інструмент battery historian від Android для вимірювання та оптимізації патернів wake lock і мережевої активності плагіна перед розгортанням. Оператори помітять — і відключать — плагін, що розряджає їхній пристрій помітно швидше, ніж базовий ATAK.
TAKpilot — це рівень інтеграції TAK-до-C2 від Corvus Intelligence: готовий до виробництва шлюз, що підключає розгортання ATAK і WinTAK до бекендів C2, забезпечуючи трансляцію CoT, керування сертифікатами та двонапрямлену синхронізацію треків без розробки власних плагінів на кожному пристрої.
Дізнатися більше про TAKpilot →