Вступ
Android Team Awareness Kit (ATAK) — це Android-платформа для геопросторової ситуаційної обізнаності та спільної роботи, яку спочатку розробили для військових потреб (там вона називається «Android Tactical Assault Kit») і яка сьогодні доступна також у цивільній версії (CivTAK). ATAK забезпечує відображення геоданих у реальному часі — наприклад, позицій підрозділів, небезпечних зон, цілей місії — на цифрових картах і допомагає користувачам у навігації, плануванні операцій та зв’язку. Ключові можливості — високопродуктивне відображення карт (2D/3D) з онлайн- та офлайн-картами, спільне використання об’єктів (точок, маршрутів, районів), а також вбудовані функції зв’язку: текстовий чат, обмін файлами, відео в реальному часі та трекінг. Окремо варто виділити розширювану архітектуру плагінів ATAK, яка дає змогу інтегрувати додаткові функції під конкретні завдання. CivTAK (ATAK-CIV) у 2020 році відкрили для публічного використання та перейменували на «Android Team Awareness Kit». Далі наведено технічний аналіз ATAK і CivTAK з фокусом на архітектурі системи, доступних API та інтерфейсах, розробці плагінів, реалізованих механізмах безпеки, протоколі Cursor-on-Target (CoT), відмінностях між військовою та цивільною версіями, а також доступних open-source-ресурсах і SDK для розробників. Ключові концепції проілюстровано прикладами та фрагментами коду.
Архітектура системи
ATAK побудовано як модульну клієнт-серверну систему: основний клієнт — це Android-застосунок, а компонент TAK Server (опційно) може слугувати центральним бекендом для координації кількох клієнтів. Архітектура Android-застосунку складається з кількох ключових компонентів, наведених у таблиці:
| Компонент | Опис |
|---|---|
| Картографічний рушій | Високопродуктивний рушій геоданих для 2D/3D-карт, спочатку на основі NASA WorldWind. Підтримує онлайн-джерела карт і офлайн-карти (растрові/векторні), а також масштабування до субметрових деталей. |
| Базова модель даних | Керування ситуаційними об’єктами (власна позиція, розташування членів команди, POI, маршрути, геозони тощо) та їхніми властивостями (символи, метадані). Відображення підрозділів і подій за військовою символікою APP-6/MIL-STD-2525. |
| Комунікаційний модуль | Відповідає за мережевий зв’язок і обмін даними між пристроями. Реалізований через протокол Cursor-on-Target (CoT), який спільно використовують усі клієнти та сервери сімейства TAK. |
| Додаткові інструменти та UI | Вбудовані інструменти для навігації та спільної роботи: зокрема відстеження інших користувачів у реальному часі, інструменти малювання та вимірювання (відстань, азимут), Geo-Chat (текстові повідомлення з прив’язкою до місця), передавання фото та відео, функції тривоги (аварійні маяки). Android-застосунок має гнучкий інтерфейс (панель інструментів, оверлеї), у який плагіни можуть вбудовувати додаткові елементи. |
| Фреймворк плагінів | Архітектура плагінів для динамічного завантаження розширень під час роботи. Плагіни можуть додавати нові UI-компоненти, інтерфейси даних або функції (наприклад, інтеграцію зовнішніх сенсорних систем, спеціальні інструменти для місій). Для цього ядро надає події, сервіси та API, через які плагіни взаємодіють із застосунком (див. API та інтерфейси). |
| Безпека та зберігання | Локальне зберігання даних місій, тайлів карт та історії на пристрої. CivTAK за замовчуванням шифрує локальні дані за допомогою парольної фрази (AES), заданої користувачем або згенерованої автоматично (ATAK CIV 4.0 User Guide). Для зв’язку ATAK пропонує опційне наскрізне шифрування в mesh-мережі (див. Механізми безпеки). |
Принцип роботи: клієнт ATAK отримує власну позицію від вбудованого GPS і показує користувачеві навколишню місцевість на карті. Дані про події (позиції, іконки, повідомлення) передаються через CoT іншим підключеним клієнтам — або безпосередньо в ad-hoc-мережі (через multicast/broadcast), або через TAK Server як посередника. Так усі підключені учасники отримують оновлення в реальному часі та бачать спільну оперативну картину. TAK Server слугує центральним вузлом для синхронізації та зберігання даних: він отримує CoT-повідомлення від усіх клієнтів і пересилає їх усім іншим. Крім того, сервер надає такі сервіси, як керування користувачами, збереження даних (база даних місій) і за потреби інтерфейси до інших систем. Сам ATAK працює на Android (Java/Kotlin), а критичні для продуктивності частини написано на C/C++ (рушій рендерингу). Завдяки модульності плагінів архітектура відкрита для найрізноманітніших розширень: комунікаційні плагіни можуть підключати альтернативні канали передавання (наприклад, акустичний модем через радіостанцію), а плагіни даних — зчитувати зовнішні потоки (наприклад, ADS-B-трекер літаків, телеметрію дронів). Такий відкритий дизайн робить ATAK надзвичайно гнучким для різних сфер застосування (армія, служби екстреного реагування, outdoor тощо), адже спеціальні функції можна додати як плагін, не змінюючи ядро. Військова та цивільна версії застосунку мають практично ідентичну архітектуру й повністю сумісні між собою — відмінності полягають переважно в додаткових плагінах або конфігураціях для армії (див. розділ Відмінності між ATAK і CivTAK).
API та інтерфейси
ATAK/CivTAK надає кілька інтерфейсів для розробників, щоб передавати дані в систему, отримувати їх або розширювати застосунок. По суті, є два підходи: (1) використання протоколу CoT для інтеграції зовнішніх даних і (2) розробка плагінів усередині застосунку ATAK за допомогою наданого API.
1. Протокол CoT як зовнішній інтерфейс: оскільки ATAK передає всю ситуаційну інформацію у вигляді подій Cursor-on-Target (CoT), зовнішню систему можна під’єднати до обміну даними, надсилаючи або отримуючи CoT-повідомлення. Наприклад, сенсор чи інша програма може надіслати CoT-повідомлення з певною подією (скажімо, позицією транспортного засобу чи тривожним сповіщенням) через UDP/TCP клієнтам ATAK або на TAK Server — і всі учасники, які отримають цей CoT, відобразять відповідний об’єкт на своїй карті. Так ATAK порівняно легко інтегрувати зі сторонніми системами: достатньо генерувати CoT-повідомлення в очікуваному форматі XML/Proto. І навпаки, CoT-дані з ATAK можна перехоплювати, щоб використовувати їх в інших застосунках (наприклад, передавати оперативну картину у власне програмне забезпечення). Сценарій використання: простий flow у Node-RED або Python-скрипт може, наприклад, періодично генерувати CoT-XML з GPS-координатами трекера, щоб показувати його як «віртуального учасника» в мережі ATAK. Оскільки CoT добре задокументований і стандартизований, існують бібліотеки для різних мов (наприклад, node-cot для JavaScript чи takproto для Python) для серіалізації та десеріалізації CoT-повідомлень. Крім того, деякі TAK-сервери (зокрема open-source FreeTAKServer) реалізують REST API, через який сторонні застосунки можуть, наприклад, додавати нові цілі чи повідомлення, — це зручна альтернатива прямому надсиланню CoT через UDP/TCP. Проте основним шляхом передавання даних залишається CoT: REST API на сервері зрештою теж перетворює запити на CoT-події для клієнтів.
2. API плагінів ATAK: для глибшої інтеграції та розширення самого ATAK платформа надає внутрішній API у складі Plugin SDK. Плагін працює всередині застосунку ATAK і має доступ до функцій і подій ядра ATAK. Технічно ATAK реалізує це за шаблоном, подібним до шини подій (event bus), та через визначені інтерфейсні класи. Центральні класи — зокрема ToolDropDownReceiver (або коротко DropDownReceiver) і MapComponent, від яких успадковуються класи в коді плагіна. MapComponent — точка входу плагіна: він ініціалізується під час завантаження й може, наприклад, реєструвати UI-компоненти (інструменти, оверлеї). DropDownReceiver реалізовано як broadcast receiver: він отримує специфічні для ATAK broadcast-події (наприклад, дії користувача чи системні події), а плагін обробляє їх у методі onReceive і реагує на них. Через свій API ATAK надає численні сервіси — наприклад, щоб малювати на карті, додавати маркери, отримувати доступ до внутрішньої моделі даних (CoT-подій) або надсилати мережеві повідомлення. Так плагін може програмно створити новий об’єкт і опублікувати його на карті, передавши CoT-подію через внутрішній диспетчер. Лістинг 1 показує спрощений фрагмент коду (Kotlin/Java) плагіна, який створює CoT-маркер і локально додає його в застосунок ATAK:
// Усередині плагіна ATAK: створення CoT-події та її розсилка в локальному клієнті
CotEvent cot = new CotEvent();
cot.uid = "Demo-1"; // унікальний ID
cot.type = "a-f-G-U-C"; // тип CoT (тут, напр., "friendly Ground Unit, Combat")
cot.time = new CoordinatedTime(); // поточна позначка часу
cot.start = cot.time;
cot.stale = cot.time.addMinutes(5); // дійсна 5 хвилин
cot.how = "m-g"; // how = спосіб визначення позиції (напр., m-g = GPS)
cot.setPoint(new CotPoint(50.775, 6.083, 0.0, 50.0, 50.0)); // позиція (lat, lon, hae, ce, le)
CotMapComponent.getInternalDispatcher().dispatch(cot); // внутрішня розсилка події (показ на карті)
Код використовує класи ATAK (CotEvent, CotPoint, CotMapComponent) із SDK. Спочатку створюється нова подія, задаються її атрибути (див. протокол CoT), після чого подія публікується через внутрішній диспетчер. Результат: власний клієнт ATAK одразу відображає подію на карті (тут, наприклад, як символ «дружнього підрозділу» відповідно до коду типу). За потреби ATAK також переслав би цю подію підключеним пірам/серверам, якщо її не позначено як суто локальну. Цей приклад ілюструє, як плагіни можуть програмно використовувати функції ATAK — скажімо, щоб підключати зовнішні джерела даних (телеметрію дронів, IoT-сенсори) або реалізовувати нові інструменти. Так, один із плагінів спільноти інтегрував керування дронами через MAVLink: він передає позиції дронів як CoT і надає інтерфейси керування.
Окрім інтерфейсів CoT і плагінів, ATAK підтримує й класичні файлові інтерфейси: через Overlay Manager користувачі можуть імпортувати файли KML, KMZ чи GPX, а так звані Data Packages дають змогу об’єднувати шари, файли ключів або дані місії в один пакет для передавання іншим (наприклад, як файл або через сервер). Утім, ці механізми призначені радше для кінцевих користувачів та обміну даними, ніж як API для розробників, тому згадуються тут лише для повноти картини. Отже, основними інтерфейсами для розробників є CoT (для слабкого зв’язування із зовнішніми системами) та ATAK Plugin SDK (для тісної інтеграції з повною функціональністю).
Розробка плагінів
Розробка власних плагінів для ATAK/CivTAK — основний спосіб розширити платформу та адаптувати її до конкретних вимог. Для цього ATAK пропонує офіційний Plugin Development Kit (SDK) і шаблони, за допомогою яких розробники можуть порівняно швидко створювати власні розширення. Нижче — найважливіші кроки та аспекти розробки плагінів:
- SDK і середовище розробки: вихідний код ATAK-CIV перебуває у вільному доступі (GitHub), а TAK Product Center також надає Plugins SDK. Розробники завантажують проєкт ATAK-CIV або пакет SDK, що містить приклади плагінів (HelloWorld тощо) і потрібні бібліотеки. Як IDE рекомендовано використовувати Android Studio. Після налаштування проєкту (імпорт шаблону плагіна як модуля та посилання на ATAK SDK у
local.properties) можна скомпілювати приклади плагінів і протестувати їх на Android-пристрої. Важливо: для розробки доцільно використовувати спеціальну debug-збірку ATAK (входить до SDK або доступна через civTAK.org), оскільки версія з Play Store може очікувати підписані плагіни. - Структура проєкту плагіна: плагін ATAK — це, по суті, окремий Android-застосунок (APK), який не має власного інтерфейсу в лаунчері, а завантажується ATAK. Шаблон плагіна зазвичай містить два центральні класи, наприклад
PluginTemplateDropDownReceiverіPluginTemplateMapComponent(назви залежать від шаблону). Вони успадковуються від базових класів ATAK, і ядро ATAK розпізнає їх за записами вAndroidManifest.xmlплагіна. Коли користувач активує плагін в ATAK (плагіни зазвичай розпізнаються автоматично, наприклад за назвою пакета чи маніфестом), ATAK створює екземплярMapComponentплагіна. У ньому плагін реєструє, наприклад, нові пункти меню (кнопки на панелі інструментів ATAK) або оверлеї.DropDownReceiverотримує натискання на ці елементи інтерфейсу плагіна й виконує відповідну логіку. Плагіни також можуть використовувати фонові сервіси або запускати власні Activity, які відображаються в ATAK як вбудовані вікна. - Використання API ATAK: усередині плагіна можна звертатися до численних функцій основного застосунку. Це відбувається через класи-менеджери та допоміжні класи, які надає ядро ATAK (у SDK вони підключаються як JAR-файли або Maven-залежності). Приклади: доступ до
MapViewдля малювання графіки;MissionPackageUtilsдля створення пакетів даних; сервісGeoChatдля програмного надсилання повідомлень у чат; або пряме використання класів CoT, як показано в лістингу 1. Документація в Plugin Development Guide (PDF у складі SDK) пояснює найважливіші класи та хуки життєвого циклу. Оскільки ATAK базується на Android, багато звичних патернів Android-розробки (життєвий цикл Activity, дозволи тощо) з певними обмеженнями діють і в плагіні — однак плагіни працюють у контексті застосунку ATAK, а не як повноцінні незалежні застосунки. Розробникам, наприклад, слід виконувати дії з інтерфейсом у правильному UI-потоці/контексті (Map-UI чи контекст плагіна). - Інструменти та налагодження: під час розробки корисно стежити за логами ATAK. ATAK записує багато подій (зокрема події плагінів) через Logcat Android. У документації SDK наведено фільтри для відображення релевантних логів (наприклад, усіх тегів
atak). Оскільки плагіни працюють разом з ATAK, до них можна під’єднати налагоджувач Android Studio, щойно ATAK запущено з плагіном. - Приклади та шаблони: офіційний SDK містить плагін HelloWorld, який мінімально демонструє, як плагін додає кнопку та показує Toast-повідомлення. Від нього розробники можуть поступово переходити до складніших функцій. Існують навчальні матеріали спільноти — наприклад, серія воркшопів RIIS, — які на прикладах (як-от інтеграція потоку даних дрона через MAVLink) показують процес розробки. Крім того, open-source-спільнота публікує плагіни, вихідний код яких можна використовувати як навчальний матеріал (наприклад, плагін SOOTHSAYER від CloudRF для ATAK на GitHub або LoRa-плагін atak-forwarder).
- Поширення та встановлення: готові плагіни можна поширювати як звичайні APK. Користувачі CivTAK можуть просто встановити APK плагіна з файлу; ATAK розпізнає плагін, і він з’являється у списку плагінів. Деякі плагіни для цивільного використання навіть доступні в Google Play — наприклад, плагін WASP (Wide Area Search Planning) або HAMMER (плагін акустичного модема для радіостанцій). Плагіни для військового використання зазвичай поширюються через державну платформу TAK.gov (лише для авторизованих користувачів). Під час розробки варто пам’ятати, що важлива сумісність із майбутніми версіями ATAK: API плагінів може змінюватися, тому плагіни, як правило, перекомпільовують із виходом нової версії ATAK (хоча TAK Product Center прагне зберігати зворотну сумісність).
Підсумовуючи: архітектура плагінів дає розробникам змогу створювати індивідуальні розширення для ATAK/CivTAK — від інтеграції спеціального комунікаційного обладнання та підключення пропрієтарних баз даних до реалізації абсолютно нових функцій в інтерфейсі. Завдяки наданому SDK та активній спільноті поріг входу знижено, тож сьогодні ATAK може похвалитися широким набором плагінів у різних сферах (багато з них — з відкритим кодом або доступні як референс).
Механізми безпеки
ATAK/CivTAK часто використовують у критичних до безпеки середовищах, тому механізми безпеки відіграють роль на кількох рівнях: (a) захист зв’язку (мережеве шифрування, автентифікація), (b) контроль доступу та ролі, а також (c) захист даних, що зберігаються локально на пристрої.
Мережеве шифрування та безпека: за замовчуванням ATAK надсилає CoT-повідомлення у відкритому вигляді через IP-мережі (UDP/TCP) — тобто сам протокол спочатку не має власного наскрізного шифрування. Тому безпека передавання даних значною мірою залежить від використаного транспортного середовища. У військових сценаріях ATAK зазвичай працює через уже захищені радіомережі або VPN-тунелі. Цивільним користувачам рекомендують, наприклад, налаштувати ZeroTier VPN для командного зв’язку, щоб передавати CoT-дані через інтернет у зашифрованому вигляді.
Починаючи з ATAK CIV 4.0, з’явилося вбудоване наскрізне шифрування для ad-hoc/mesh-мереж: користувачі можуть за бажанням згенерувати ключ AES-256 і поділитися ним з учасниками команди, щоб CoT-дані в локальній мережі передавалися в зашифрованому вигляді. Щойно всі задіяні пристрої завантажать однаковий ключ, вони прийматимуть одне від одного лише зашифровані CoT-повідомлення; пристрої без ключа відсікаються. Таке AES-шифрування в mesh-мережі гарантує, що навіть у незахищеному радіоканалі (наприклад, MANET без VPN) позиційні дані, чати тощо неможливо прочитати у відкритому вигляді. Налаштування виконується в параметрах ATAK у розділі Configure AES-256 Mesh Encryption і дає змогу згенерувати ключ (файл ключа), який потім розповсюджують на всі пристрої через Data Package або заздалегідь. Для з’єднань між клієнтами ATAK і центральним TAK Server зазвичай використовують TLS/SSL — офіційний TAK Server підтримує зашифровані з’єднання WebSocket/SSL. Згідно з документацією, TAK Server реалізує «зашифроване передавання даних» і контроль доступу, що на практиці означає TLS (для даних під час передавання) та автентифікацію. Сервер можна налаштувати так, щоб клієнти підключалися лише з дійсними сертифікатами або токенами доступу (автентифікація клієнта). Крім того, VPN або приватні APN у державному секторі дають змогу додатково ізолювати трафік TAK. Важливо: сам ATAK шифрує CoT-дані лише тоді, коли це налаштовано або використовується захищений транспорт — «з коробки» CivTAK передає дані в локальній мережі без шифрування, але залишає користувачеві вибір, які заходи безпеки активувати.
Автентифікація та контроль доступу: у суто одноранговому (peer-to-peer) режимі ATAK не має автентифікації користувачів — кожен, хто потрапив у mesh-мережу (і має ключ AES, якщо його задано), бачить усі дані. Натомість у конфігураціях із сервером кожен користувач входить на TAK Server під своїм обліковим записом. Сервер керує обліковими записами, групами та ролями. Так можна, наприклад, визначати, яку інформацію кожен користувач може бачити чи надсилати (Role-Based Access Control). Скажімо, певні CoT-події можна позначити як видимі лише для керівного складу. TAK Server 5.x підтримує такі ролі та правила фільтрації. Крім того, сервер журналює звернення, тож формується журнал аудиту: хто, коли і які дані надіслав чи отримав.
Захист локальних даних: під час першого запуску CivTAK автоматично генерує парольну фразу для шифрування локальних файлів (ATAK CIV 4.0 User Guide). Ця парольна фраза (користувач може її змінити) використовується, щоб зберігати на пристрої в зашифрованому вигляді, наприклад, кешовані карти, збережені дані місій чи налаштування. Так у разі втрати пристрою чутливі оперативні дані неможливо буде прочитати. Механізм працює прозоро у фоновому режимі. Крім того, ATAK дає змогу швидко видалити весь збережений вміст за допомогою функцій Wipe або Clear Data.
Інше: ATAK працює на Android як звичайний застосунок, тобто користується й функціями безпеки ОС (ізоляція в пісочниці, дозволи). Наприклад, плагіни мають бути підписані, або ж у застосунку потрібно явно дозволити завантаження непідписаних плагінів (захід проти несанкціонованого впровадження коду). Загалом екосистема TAK дотримується концепції, за якої безпека транспорту здебільшого забезпечується на мережевому рівні (VPN, TLS), а безпеку вмісту можна додатково посилити шифруванням на рівні застосунку. Тому для максимального захисту найкращі практики TAK рекомендують комбінацію: захищені мережеві канали (наприклад, VPN), надійна автентифікація користувачів, увімкнене AES-шифрування для CoT і фізичний захист пристроїв. У військовій версії ATAK можуть додатково використовуватися спеціальні сертифіковані криптомодулі (криптографія Type 1), яких немає в CivTAK, — однак публічної інформації про них майже немає, оскільки ці компоненти підпадають під ITAR та інші обмеження.
Протокол Cursor-on-Target (CoT)
Протокол Cursor-on-Target (CoT) — основа обміну даними в екосистемі TAK. Це XML-формат повідомлень, спочатку розроблений MITRE, що створює спільну «мову» для обміну критичною за часом інформацією про цілі та позиції між системами (Cursor on Target: Research for a Sensor Network – PMC). ATAK та всі інші TAK-клієнти (WinTAK, iTAK тощо) використовують CoT, щоб у стандартизованій формі кодувати й передавати таку інформацію, як місцезнаходження, напрямок руху, тип події, повідомлення та багато іншого.
Структура повідомлення: CoT-повідомлення зазвичай складається з одного XML-елемента <event> з різними атрибутами та вкладеними елементами. Приклад CoT-події (дуже спрощений) наведено в лістингу 2:
<event version="2.0" uid="UID12345" type="a-f-G-U-C" time="2025-02-26T17:30:00Z" start="2025-02-26T17:30:00Z" stale="2025-02-26T17:35:00Z" how="m-g">
<point lat="50.7762" lon="6.0838" hae="123.0" ce="5.0" le="10.0"/>
<detail>
<contact callsign="Alpha1"/>
<usericon iconsetpath="apps://icons/alpha.png"/>
</detail>
</event>
Приклад CoT-повідомлення в XML (дружній підрозділ «Alpha1» з позицією)
Кожен елемент event має обов’язкові атрибути:
- uid: унікальний ідентифікатор події (наприклад, серійний номер пристрою, позивний тощо). За ним розпізнаються оновлення наявних об’єктів.
- type: тип події, закодований як ієрархічний рядок. Перший символ позначає категорію (наприклад, a = «atom» для фізичних об’єктів). Далі через дефіс ідуть скорочення для приналежності (свій/чужий), домену та за потреби інших підтипів. У прикладі вище
a-f-G-U-Cозначає atom-friend-Ground-Unit-Combat (дружній наземний бойовий підрозділ). Багато цих кодів типів базуються на військовому стандарті MIL-STD-2525 (умовні знаки НАТО), що забезпечує узгоджене відображення на карті (FTS Documentation). - time, start, stale: позначки часу.
time— час створення події,start— початок дійсності (часто збігається з time), аstale— момент, після якого подія вважається застарілою й може бути видалена системою. Завдяки цьому кожен об’єкт має визначений час життя, що важливо для тимчасових подій (наприклад, позиції рухомої цілі, яку без оновлення через X секунд позначають як «більше не достовірну»). - how: (опційно) вказує, як було отримано інформацію, — наприклад,
m-gдля «machine, GPS» (визначено автоматично за GPS) абоh-eдля «введено вручну» (human-entered). Це може свідчити про надійність або джерело даних.
Вкладені елементи:
- <point>: містить географічну позицію та точність. Атрибути:
lat(широта),lon(довгота),hae(висота над еліпсоїдом, у метрах),ce(circular error, м — радіус горизонтальної похибки) іle(linear error, м — вертикальна похибка). У прикладі Alpha1 перебуває на висоті 123 м, а точність позиції становить 5 м по горизонталі та 10 м по вертикалі. - <detail>: тут можуть міститися додаткові відомості у вигляді структурованих вкладених елементів. Це гнучке поле, яке залежно від типу події може містити різну інформацію. Для подій позиціювання та ідентифікації типовими є такі записи:
<contact>з атрибутами на кшталтcallsign(позивний/ім’я користувача),<remarks>для довільних приміток,<group>для належності до команди,<status>(наприклад, ack/nack, статус активності) та багато іншого. У прикладі detail містить контакт «Alpha1», а також записusericon, який задає шлях до певної іконки (для власних символів). Елемент detail розширюваний — так, у блоці detail описують і повідомлення чату, відеопотоки чи показники сенсорів (часто з власними просторами імен XML залежно від типу даних).
Мінімальна CoT-подія може взагалі обходитися без detail, як показує приклад простої точки від MITRE. ATAK-плагіни часто використовують елемент detail, щоб передавати власні дані (payloads) або прапорці, — за умови, що всі клієнти вміють їх інтерпретувати.
Поширення та транспорт: в ATAK CoT-повідомлення надсилаються або через UDP broadcast/multicast (безпосередньо в mesh-мережі чи команді), або через TCP/SSL на сервер, який потім розсилає їх іншим. Ранні версії ATAK використовували виключно XML; новіші версії підтримують і бінарний варіант CoT на основі Google Protocol Buffers (так званий TAK Proto або CoT Proto) (TAK Protocol Description – Encode and Decode TAK data with Python). У ньому ті самі поля упаковано в компактний бінарний формат, що економить смугу пропускання та пришвидшує парсинг. Наприклад, ATAK 4.0+ у стандартному режимі «Mesh SA» надсилає CoT-повідомлення як Protobuf із фіксованим заголовком (магічний байт 0xBF, тобто 191, версія протоколу і знову 0xBF), а в режимі серверного потоку використовується заголовок із довжиною повідомлення змінного розміру. Для розробників це означає: інтеграцію можна реалізувати або у форматі XML (легко тестувати й читати), або у форматі Proto (ефективніший, але потребує схеми .proto) — обидва інтероперабельні та ідентичні за вмістом.
Сценарії використання: CoT створювався для опису найрізноманітніших подій. Окрім точок позицій, як CoT-події можна моделювати райони (полігони), маршрути (полілінії), треки сенсорів або завдання місії (тоді зазвичай зі складнішими блоками detail чи посиланням на зовнішні файли). ATAK використовує CoT не лише для трекінгу, а й, наприклад, для надсилання повідомлень чату (тоді в detail міститься, скажімо, <chat> з текстом) або ініціювання тривожних подій. Завдяки слабкому зв’язуванню через CoT інші системи — якщо вони «розмовляють» цим протоколом — можуть ставати частиною мережі без плагіна ATAK. Наприклад, існують платформи IoT-сенсорів, які публікують події (скажімо, виявлення пострілів) безпосередньо як CoT, після чого ті одразу з’являються в ATAK.
Отже, Cursor-on-Target пропонує уніфікований подієвий формат даних для інтероперабельності в реальному часі між найрізноманітнішими пристроями та застосунками. Стандартизація (доступна XML-схема) та широке використання в армії та цивільних службах екстреного реагування роблять CoT ключовим протоколом для систем ситуаційної обізнаності. Сам ATAK значною мірою популяризував CoT, показавши, наскільки потужною може бути спільна схема для обміну даними за принципом «кожен із кожним».
Відмінності між ATAK і CivTAK
Військова версія ATAK і цивільна версія CivTAK базуються на спільній кодовій базі й функціонально здебільшого ідентичні. CivTAK виокремили з ATAK, щоб мати версію, яку можна вільно поширювати й використовувати цивільним органам, організаціям і приватним особам без експортних обмежень. Технічно відмінності незначні:
- Доступні функції/плагіни: певні специфічні військові функції в CivTAK відсутні або вимкнені за замовчуванням. Наприклад, ATAK (Mil) може містити додаткові плагіни для розрахунку ураження, військових сенсорів або шифрованих радіостанцій, яких немає в CivTAK. Розробники зазначають, що у військовій версії є лише «невеликі специфічні для армії доповнення». Це можуть бути, наприклад, спеціальні набори символів чи інтеграції, які не мають значення для цивільних користувачів. Показово, що в публічному вихідному коді ATAK-CIV є функції, (поки що) недоступні через інтерфейс (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday), — можливо, тому, що вони актуальні лише для армії. Однак ключові можливості — карти, навігація, CoT, інтерфейс плагінів тощо — ідентичні.
- Модулі безпеки: як уже згадувалося, CivTAK використовує лише комерційну/публічно дозволену криптографію (AES-256, TLS). Модулів шифрування найвищого рівня секретності з військової версії (наприклад, для захисту секретної інформації НАТО) у CivTAK немає. Натомість у CivTAK доводиться покладатися на AES і VPN, чого, утім, для більшості застосувань достатньо. Крім того, ATAK-Mil може працювати в парі зі спеціальним обладнанням (крипточипами, захищеними радіостанціями) — у CivTAK ці інтерфейси марні, тому їх вилучено.
- Назви та символіка: у публічних матеріалах військовий ATAK часто називають «Assault Kit», тоді як CivTAK фігурує як «Team Awareness Kit». Утім, усередині застосунку терміни та символи здебільшого однакові. Військові підрозділи в CivTAK відображаються тими самими символами MIL-STD-2525; проте застосунок обходиться без бойових позначень. Тож відчуття «урізаної» версії не виникає — CivTAK і є ATAK, лише офіційно дозволений для цивільного використання.
- Версії та випуски: ATAK (mil) TAK Product Center поширює серед авторизованих користувачів (через TAK.gov), тоді як CivTAK доступний відкрито (завантаження через civtak.org, Google Play, GitHub). Починаючи з 2020 року версії CivTAK зазвичай виходять невдовзі після релізів на TAK.gov, тож обидві гілки здебільшого синхронізовані. Наприклад, ATAK-CIV 4.3 оприлюднили невдовзі після ATAK-Mil 4.3. Відкритий вихідний код ATAK-CIV має перевагу: спільнота може робити внески, — хоча рішення про те, які зміни потраплять до офіційної збірки, ухвалює TAK Program Office.
- Підтримка та використання: ATAK-Mil використовують переважно військові США та союзників на навчаннях і в операціях; CivTAK має дедалі ширшу базу користувачів серед державних служб США (пожежна охорона, поліція, цивільний захист), а також приватних користувачів (наприклад, мисливців, туристів). Утім, обидва варіанти можуть взаємодіяти — наприклад, пожежна команда на CivTAK може обмінюватися оперативною картиною із солдатами на ATAK (Mil) через спільні CoT-сервери, якщо вони використовують однакові мережеві ключі/сертифікати.
Отже, ATAK і CivTAK технічно майже рівноцінні, тож розробники, які створюють плагіни для CivTAK, з мінімальними змінами можуть використовувати їх і у військовому ATAK. Найбільша різниця полягає в питаннях поширення та ліцензування: CivTAK має відкритий код (частково public domain), тоді як військова версія ATAK є урядовим готовим продуктом (Government-off-the-shelf, GOTS), який можна використовувати лише з дозволу. Для більшості завдань розробки CivTAK цілком достатньо — але якщо плагін має працювати з вузькоспеціалізованим військовим обладнанням, це потрібно робити у співпраці з військовими розробниками.
Open-source-ресурси та SDK
Відкриття ATAK-CIV породило активну спільноту розробників. Існує безліч open-source-ресурсів, SDK і проєктів спільноти, які полегшують старт і розширюють можливості:
- Вихідний код ATAK-CIV: офіційний код доступний на GitHub (репозиторій Міністерства оборони США) (GitHub – deptofdefense/AndroidTacticalAssaultKit-CIV). Там же можна знайти готовий Plugin SDK ZIP із шаблонним кодом (GitHub – deptofdefense/AndroidTacticalAssaultKit-CIV). Файли README та CONTRIBUTING містять вказівки щодо процесу збирання (GitHub – deptofdefense/AndroidTacticalAssaultKit-CIV). Розробники можуть вивчати код, щоб розібратися в прихованих можливостях чи деталях API, — наприклад, у коді є коментарі щодо TAK Protocol v1 (ProtoBuf) (TAK Protocol Description – Encode and Decode TAK data with Python). З погляду ліцензування значна частина коду є public domain (робота уряду США) або поширюється під ліберальною ліцензією, що дає змогу вільно його розвивати (GitHub – deptofdefense/AndroidTacticalAssaultKit-CIV).
- TAK Server (open source): TAK Server також відкрили у 2022 році. Сервер на Java доступний на GitHub (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday), і організації можуть розгортати його самостійно. Легші альтернативи пропонують проєкти спільноти: FreeTAKServer (FTS) на Python — це компактний сервер із REST API та простим встановленням (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday) (TAK Server open apis : r/ATAK). Taky — ще один мінімалістичний TAK-сервер (теж на Python), наприклад для розгортання на Raspberry Pi (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). Ці проєкти ідеально підходять для тестування чи створення власних інтеграцій (через API) без залежності від великого офіційного сервера.
- Документація та вікі спільноти: є офіційні документи для кінцевих користувачів (наприклад, посібник користувача ATAK (ATAK CIV 4.0 User Guide)) та посібники для розробників плагінів. Спільнота також підтримує вікі (CivTAK JumpStart) на Reddit (GitHub – FreeTAKTeam/openTAKpickList: a list of hardware and software to be used in conjunction with ATAK platform) з інструкціями та FAQ. На civtak.org є розділ документації з уроками, наприклад про створення Data Packages (Documentation – CivTAK / ATAK). FreeTAKTeam (FTS) також публікує документацію на своїй сторінці GitHub, зокрема про набір символів MIL-STD-2525 та типи CoT (FTS Documentation) (FTS Documentation), що корисно розробникам, які хочуть використовувати власні символи чи типи.
- Спільноти розробників: активний обмін досвідом відбувається на Reddit (r/ATAK) (TAK Server open apis : r/ATAK) і в Discord (TAK Community Server) (Android Team Awareness Kit or ATAK / CivTAK – CivTAK / ATAK), де розробники ставлять запитання та діляться рішеннями. Крім того, з 2020 року щороку проходять конференції OpenTAK (Android Team Awareness Kit or ATAK / CivTAK – CivTAK / ATAK), на яких представляють нові плагіни, сценарії використання та найкращі практики.
- Open-source-плагіни та інструменти: багато плагінів опубліковано з відкритим кодом або неофіційно реалізовано заново. Приклади: atak-forwarder (GitHub) дає змогу підключити ATAK до радіомодулів LoRa Meshtastic (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). HAMMER — акустичний модем для голосових каналів зв’язку — опубліковано у вигляді коду, щоб передавати CoT через аудіо (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). APRS-TAK з’єднує ATAK із системою позиціювання радіоаматорів APRS (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). Крім того, існують інструменти візуалізації та аналізу, наприклад TAK Reader для офлайн-перегляду CoT-даних, TAK Graph для діагностики з’єднань тощо. openTAK-PickList, який підтримує спільнота, збирає понад 100 посилань на ресурси, плагіни, обладнання та навчальні матеріали, пов’язані з TAK (GitHub – FreeTAKTeam/openTAKpickList: a list of hardware and software to be used in conjunction with ATAK platform) (GitHub – FreeTAKTeam/openTAKpickList: a list of hardware and software to be used in conjunction with ATAK platform). Цей список — хороша відправна точка для загального огляду.
- SDK та бібліотеки: окрім офіційного ATAK Plugin SDK, існують бібліотеки для обробки даних CoT/TAK в інших середовищах. TakProto (Python) дає змогу кодувати й декодувати CoT як у форматі XML, так і у форматі Proto (TAK Protocol Description – Encode and Decode TAK data with Python). Node-CoT (JavaScript) робить те саме для застосунків на Node.js (dfpc-coe/node-CoT: Javascript Cursor-On-Target Library – GitHub). Для .NET існують парсери CoT і навіть спроби відтворити частину функціональності ATAK (наприклад, WinTAK як Windows-застосунок надає Міністерство оборони США, а iTAK є відповідним клієнтом для iOS).
- Карти та дані: open-source-інструменти полегшують завантаження додаткових геоданих в ATAK. Наприклад, проєкт ATAK-Maps пропонує набір картографічних сервісів, зокрема OpenStreetMap, Google Maps, супутникові знімки, — їх легко імпортувати як пакет даних (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). Так само можна підключити набори даних OpenElevation (The TAK Ecosystem: Military Coordination Goes Open Source | Hackaday). Завдяки цьому розробники та користувачі можуть повністю розкрити потенціал картографічного рушія, не залежачи від пропрієтарних даних.
Маючи ці ресурси, розробник може доволі автономно працювати в екосистемі TAK: від розгортання власної серверної інфраструктури та створення плагінів до тестування з іншими учасниками спільноти. Відкритість CivTAK стимулює інновації — постійно з’являються нові плагіни та інтеграції, які, своєю чергою, повертаються до спільноти. Для розробників, які хочуть писати власні розширення, особливо цінними є ATAK Plugin SDK, офіційні приклади та обмін досвідом із досвідченими розробниками плагінів. Поєднання стабільної базової платформи (ATAK) і гнучкості open-source-плагінів робить систему унікальною у своїй сфері та дає змогу реалізовувати складні застосунки для ситуаційної обізнаності з порівняно невеликими зусиллями.



