Ekosystem Team Awareness Kit (TAK) jest jedną z najszerzej wdrożonych taktycznych platform oprogramowania stosowanych przez sojusznicze siły lądowe. Zbudowany wokół otwartego protokołu i architektury klientów rozszerzalnej przez wtyczki, umożliwia zespołom tworzącym oprogramowanie obronne dodawanie specjalistycznych możliwości — strumieni danych z czujników, łączności z backendem C2, danych logistycznych, koordynacji ognia — bez rozwidlania głównej aplikacji. Ten artykuł omawia strukturę ekosystemu, działanie API wtyczek oraz wymagania dotyczące budowy wtyczki niezawodnie integrującej się z istniejącym systemem dowodzenia i kontroli.

Architektura ekosystemu TAK

Ekosystem TAK to rodzina klientów świadomości sytuacyjnej i oprogramowania serwerowego. Na poziomie klientów: ATAK (Android Team Awareness Kit) działa na wzmocnionych urządzeniach Android i jest dominującym formatem dla sił pieszych. WinTAK to odpowiednik systemu Windows, powszechnie używany na posterunkach dowodzenia i stanowiskach roboczych zamontowanych w pojazdach, gdzie rozmiar ekranu i moc obliczeniowa są mniej ograniczone. iTAK działa na iOS i jest stosowany w niektórych rolach obserwatora i lotnictwa. Wszystkie trzy klienty korzystają z tego samego modelu danych i protokołu, więc pozycja zgłoszona z urządzenia ATAK pojawia się natychmiast na konsoli WinTAK podłączonej do tego samego serwera.

TAK Server — dostępny jako projekt open-source FreeTAKServer oraz w kilku komercyjnych dystrybucjach, w tym CloudTAK — stanowi centrum architektury. Jego zadaniem jest federowanie strumieni zdarzeń Cursor on Target (CoT): akceptowanie CoT od podłączonych klientów przez TCP/TLS, dystrybucja tych zdarzeń do innych podłączonych klientów, utrwalanie obrazu operacyjnego i umożliwianie klientom podłączonym przez WAN współdzielenia tego samego wspólnego obrazu operacyjnego (COP) co jednostki połączone lokalną siatką.

Federacja rozszerza to jeszcze dalej. Dwie instancje TAK Server mogą ustanowić łącze federacyjne, dzięki czemu zdarzenia z puli klientów jednego serwera stają się widoczne na drugim — mechanizm, dzięki któremu sojusznicze siły współdzielą częściowy COP bez łączenia całych sieci. Niestandardowe backendy C2 podłączają się do tej architektury na poziomie TAK Server, a nie na poziomie klienta, co oznacza, że dobrze zaprojektowana integracja z C2 nie wymaga żadnych zmian w samej aplikacji ATAK.

Architektura wtyczek: jak działają wtyczki ATAK

Wtyczka ATAK to pakiet APK systemu Android instalowany obok aplikacji hosta ATAK. W momencie instalacji ATAK odczytuje manifest wtyczki, rejestruje ją w menedżerze wtyczek i udostępnia punkt wejścia wtyczki z szuflady wtyczek ATAK. Wtyczka nie zastępuje żadnej części ATAK — rozszerza ją. ATAK nadal działa w pełni, jeśli wtyczka zostanie odinstalowana lub wyłączona.

Punkty wejścia cyklu życia

Punkt wejścia wtyczki rozszerza klasę AbstractPlugin i implementuje dwie podstawowe metody cyklu życia. onCreate jest wywoływany, gdy ATAK ładuje wtyczkę — tutaj wtyczka rejestruje swoje narzędzia, warstwy nakładki i odbiorniki zdarzeń oraz uruchamia wszelkie usługi działające w tle. onDestroy jest wywoływany, gdy ATAK usuwa wtyczkę — wszystkie zasoby muszą zostać tu zwolnione w sposób czysty, w tym wątki działające w tle, połączenia sieciowe i warstwy mapy. Wycieki pamięci w onDestroy są najczęstszym źródłem niestabilności ATAK powodowanej przez wtyczki innych firm.

Punkty rozszerzenia interfejsu użytkownika

ATAK udostępnia trzy podstawowe punkty rozszerzenia dla interfejsu użytkownika wtyczek. Do menu radialnego — okrągłego menu kontekstowego pojawiającego się po długim naciśnięciu elementu mapy — można wstrzykiwać akcje wtyczek, dzięki czemu kliknięcie prawym przyciskiem myszy raportu pozycji może uruchomić przepływ pracy specyficzny dla wtyczki, na przykład generowanie misji ogniowej z punktu celu. Pasek narzędzi wtyczki umożliwia dodanie przycisku do głównego paska narzędzi ATAK, który otwiera niestandardowy panel rozwijany. Pełnoekranowe fragmenty mogą być wypychane na stos nawigacji ATAK dla bardziej złożonych przepływów pracy, takich jak formularze wprowadzania danych.

Cały interfejs użytkownika wtyczki musi być zaprojektowany pod kątem obsługi jedną ręką, z kompatybilnością z rękawicami. Cele dotykowe poniżej 56 dp są niedopuszczalne. Każdy przepływ pracy wprowadzania danych, który wymaga więcej niż trzech interakcji do ukończenia, powinien zostać przemyślany od nowa — operatorzy w kontakcie nie mają czasu na skomplikowane formularze.

Wzorce dostępu do danych

Wtyczki uzyskują dostęp do danych mapy przez MapView, który udostępnia metody dodawania, aktualizowania i usuwania elementów mapy. Elementy punktowe (markery pozycji, kontakty sensorów) są instancjami PointMapItem. Elementy obszarów i linii to podklasy Shape. Każdy element mapy nosi identyfikator UID, który musi być stabilny podczas aktualizacji — zmiana UID tworzy zduplikowany element zamiast aktualizować istniejący, co jest jednym z najczęstszych błędów wtyczek w systemach produkcyjnych.

Dogłębna analiza CoT: protokół łączący wszystko

Cursor on Target to oparty na XML protokół zdarzeń stanowiący podstawę wszystkich wymian danych w ekosystemie TAK. Każdy obiekt na mapie ATAK jest reprezentowany jako zdarzenie CoT. Gruntowne rozumienie CoT jest warunkiem wstępnym wszelkich prac nad integracją z C2.

Struktura zdarzenia

Zdarzenie CoT ma trzy obowiązkowe elementy najwyższego poziomu. Element główny event zawiera typ zdarzenia (taksonomię rozdzielaną kropkami zaczynającą się od a- dla atomów, b- dla bitów lub t- dla zadań), UID, znaczniki czasu time/start/stale, how (sposób wygenerowania zdarzenia — maszynowy lub ludzki) oraz atrybuty access i qos dla klasyfikacji i jakości usług. Element point zawiera szerokość geograficzną, długość geograficzną, błąd kołowy (ce), błąd liniowy (le) i wysokość ponad elipsoidą (hae). Element detail jest rozszerzalnym kontenerem na wszystko inne.

Blok detail jest miejscem, w którym przechowywane są dane specyficzne dla integracji. Standardowe pod-elementy to contact (znak wywoławczy i adres punktu końcowego), __group (nazwa grupy i rola), status (bateria, gotowość) i remarks (dowolny tekst). Niestandardowe dane są przenoszone w pod-elementach z przestrzeniami nazw: wtyczka wsparcia ogniowego może dodać element <fireMission> z numerem celu, metodą zaangażowania i promieniem niebezpiecznego zbliżenia. Standardowy ATAK renderuje te niestandardowe elementy jako nieznane szczegóły i ignoruje je; towarzysząca wtyczka znająca schemat wyświetla je poprawnie.

Kluczowe typy zdarzeń dla integracji z C2

Taksonomia typów zdarzeń obejmuje tysiące konkretnych typów. Dla integracji z C2 najbardziej istotne są: a-f-G-U-C (przyjazna jednostka naziemna, kombatant — standardowy ślad sił własnych), a-h-G (wrogie śledzenie naziemne), a-u-G (nieznany grunt), b-m-p-w (punkt trasy), b-r-f-h-c (wniosek o wsparcie ogniowe) i t-x-m-c (wiadomość czatu). Zrozumienie hierarchii typów — litery prefiksu kodują przynależność, wymiar walki i funkcję — pozwala wtyczce generować poprawnie renderowane ikony bez żadnych zasobów ikon specyficznych dla wtyczki.

Zarządzanie nieaktualnością

Każde zdarzenie CoT nosi znacznik czasu nieaktualności. ATAK usuwa zdarzenia z mapy, gdy stają się nieaktualne — jest to mechanizm automatycznego starzenia się śladów sił własnych. Wtyczka generująca raporty pozycji musi odświeżać je przed utratą aktualności — typowe aktualizacje pozycji są wysyłane co 30–60 sekund z oknem nieaktualności wynoszącym 5 minut. Wtyczka, która generuje zdarzenie raz i nie odświeża go, zobaczy, jak jej elementy znikają z mapy — jest to częsty błąd w pierwszych wersjach integracji z C2.

Wzorce integracji z C2

Istnieją dwa podstawowe wzorce integracji systemu C2 z ekosystemem TAK. Wzorzec bramy działa na poziomie TAK Server bez konieczności stosowania wtyczki na urządzeniu. Wzorzec wtyczki działa na urządzeniu ATAK i jest odpowiedni, gdy integracja musi reagować na działania operatora na urządzeniu.

Wzorzec bramy: TAK Server do backendu C2

Brama to samodzielna usługa łącząca się ze strumieniem CoT TAK Server (przez API federacji lub jako wtyczka TAK Server) oraz z API systemu C2. Gdy z TAK Server dociera nowy raport pozycji, brama tłumaczy go z XML CoT na format śladu systemu C2 i wysyła go do API C2. Gdy system C2 generuje nowy kontakt lub zadanie, brama generuje zdarzenie CoT i publikuje je w TAK Server, skąd propaguje się do wszystkich podłączonych klientów ATAK.

Takie podejście nie wymaga wtyczki na urządzeniu ani zmian w aplikacji ATAK. Jest właściwym wyborem, gdy integracja jest przede wszystkim serwerowa, a system C2 jest autorytetem. Głównym wyzwaniem jest opóźnienie: cykl aktualizacji pozycji przebiegający przez ATAK → TAK Server → brama → API C2 → brama → TAK Server → ATAK wprowadza opóźnienia mogące sięgać kilku sekund w zależności od interwałów odpytywania i warunków sieciowych. W przypadku udostępniania śladów w czasie zbliżonym do rzeczywistego preferowany jest model subskrypcji TAK Server przy użyciu połączeń WebSocket zamiast odpytywania REST.

Wzorzec wtyczki: integracja z C2 na urządzeniu

Wzorzec wtyczki uruchamia integrację z C2 bezpośrednio na urządzeniu ATAK. Wtyczka utrzymuje połączenie z API C2 (REST lub WebSocket) i wstrzykuje zdarzenia CoT bezpośrednio do wewnętrznej magistrali zdarzeń ATAK, z pominięciem TAK Server dla przychodzącego przepływu danych. Eliminuje to jeden przeskok sieciowy i pozwala wtyczce dodawać kontekst specyficzny dla urządzenia — bieżącą pozycję operatora, wybrane elementy mapy, aktywne zadania — do wychodzących raportów C2.

Przepływ odwrotny — z ATAK do systemu C2 — działa przez subskrypcję magistrali zdarzeń CoT ATAK za pomocą CotEventListener. Odbiornik otrzymuje wszystkie zdarzenia CoT widoczne dla ATAK, w tym te z innych urządzeń. Wtyczka musi starannie filtrować: powinna przekazywać tylko zdarzenia, które bieżące urządzenie zainicjowało (sprawdzić prefiks UID), i nie może ponownie przekazywać zdarzeń, które dotarły z systemu C2 przez bramę, aby nie tworzyć pętli sprzężenia zwrotnego zalewającej C2 duplikatami śladów.

Uwaga inżynierska: Identyfikatory UID zdarzeń CoT generowane przez bramy C2 powinny zawierać rozpoznawalny prefiks przestrzeni nazw — na przykład C2-GW-{uuid}. Dzięki temu wtyczka może odfiltrować je z subskrypcji przepływu odwrotnego bez konieczności utrzymywania oddzielnej listy blokad. Uzgodnij konwencję UID przed napisaniem jakiegokolwiek kodu integracji.

Bezpieczeństwo: podpisywanie, certyfikaty i obsługa oznaczeń klasyfikacji

Bezpieczeństwo wtyczek ATAK jest egzekwowane na dwóch poziomach: wymogu podpisania wtyczki i wymogu szyfrowania transportu CoT. Oba muszą być spełnione w przypadku każdej wtyczki przeznaczonej do użytku operacyjnego.

Podpisywanie wtyczek

ATAK w konfiguracjach rządowych wymaga podpisania wtyczek przez zaufany urząd certyfikacji. Jest to oddzielne od podpisywania w Google Play — zakotwiczeniem zaufania jest urząd certyfikacji TAK Server, a nie Google. Pakiet APK wtyczki musi być podpisany certyfikatem z tego urzędu, zanim ATAK go załaduje. Przepływ pracy wygląda następująco: generowanie pary kluczy, przesłanie żądania podpisania certyfikatu do administratora TAK Server, osadzenie podpisanego certyfikatu w magazynie kluczy wtyczki i podpisanie APK tym magazynem kluczy. Niepodpisane wtyczki lub wtyczki podpisane przez niezaufany urząd certyfikacji są odrzucane po cichu.

W środowiskach programistycznych powszechne jest używanie urzędu certyfikacji z samopodpisanym certyfikatem i ręczna dystrybucja certyfikatu CA na urządzenia testowe. W środowiskach produkcyjnych urząd certyfikacji jest zazwyczaj tą samą infrastrukturą PKI używaną do uwierzytelniania klientów w połączeniach TLS z TAK Server.

Szyfrowany transport CoT

Ruch CoT w środowiskach produkcyjnych jest przesyłany przez TLS z wzajemnym uwierzytelnianiem — zarówno klient, jak i serwer przedstawiają certyfikaty. Oznacza to, że każde urządzenie ATAK potrzebuje certyfikatu klienta wystawionego przez urząd certyfikacji TAK Server, a TAK Server potrzebuje certyfikatu serwera, któremu ufają klienty. Rejestracja certyfikatu jest obsługiwana przez punkt końcowy rejestracji TAK Server, który wystawia certyfikaty klienta na podstawie współdzielonego hasła lub tokenu rejestracyjnego.

Wtyczka otwierająca własne połączenia sieciowe z backendem C2 musi również używać TLS z przypinaniem certyfikatu. Zezwolenie wtyczce na powrót do nieszyfrowanego połączenia — nawet tymczasowo, podczas programowania — tworzy nawyk, który przetrwa do środowiska produkcyjnego. Buduj z TLS od pierwszego dnia.

Oznaczenia klasyfikacji w CoT

Zdarzenia CoT zawierające dane niejawne używają pod-elementu detail/classification do oznaczenia zdarzenia poziomem klasyfikacji. Standardowe renderowanie ATAK nie odróżnia wizualnie zdarzeń niejawnych od jawnych — obowiązkiem wtyczki i administratora systemu jest zapewnienie, że zdarzenia niejawne są przesyłane wyłącznie przez sieci niejawne i przechowywane tylko na zatwierdzonych urządzeniach. Wtyczka zaprojektowana dla środowisk niejawnych powinna sprawdzać klasyfikację odbieranych zdarzeń przed ich wyświetleniem lub przekazaniem i odmawiać przekazywania zdarzeń niejawnych do systemów nieupoważnionych do ich odbioru.

Typowe przypadki użycia wtyczek

Najcenniejsze operacyjnie wtyczki ATAK podążają za powtarzającym się wzorcem: łączą specjalistyczne źródło danych ze wspólnym obrazem operacyjnym, zmniejszając liczbę oddzielnych ekranów, które operator musi monitorować.

Nakładka wideo z BSP. Wtyczka odbiera strumień wideo z naziemnej stacji kontroli BSP (GCS) przez RTSP lub HLS i wyświetla go w panelu ATAK. Jednocześnie odbiera telemetrię z GCS — pozycję BSP, azymut i kąt depresji gimba, pole widzenia sensora — i renderuje wielokąt odcisku na mapie ATAK pokazujący dokładnie to, co aktualnie widzi kamera BSP. Operatorzy mogą dotknąć punktu w obrębie odcisku, aby uzyskać precyzyjne współrzędne, umożliwiając szybkie przekazywanie celu bez oddzielnego stanowiska roboczego GCS.

Wyświetlanie kontaktów SIGINT. Odbiornik określania kierunku zgłasza linie namiaru — kierunek z punktu zbiórki do nadajnika będącego przedmiotem zainteresowania. Wtyczka przekształca je na zdarzenia linii namiaru CoT i wyświetla je na mapie ATAK jako promieniujące linie z stożkami niepewności. Gdy dwie lub więcej linii namiaru przecina się, wtyczka może obliczyć i wyświetlić szacowaną pozycję nadajnika. Ta możliwość integruje się bezpośrednio z obrazem taktycznym bez konieczności stosowania oddzielnego stanowiska roboczego SIGINT. Więcej na temat integracji źródeł danych RF można znaleźć w naszym artykule o integracji taktycznego oprogramowania radiowego.

Śledzenie logistyki i zaopatrzenia. Wtyczka logistyczna łączy się z systemem łańcucha dostaw jednostki i wyświetla bieżącą lokalizację pojazdów z zaopatrzeniem, ich szacowany czas przybycia na przedni skraj oraz zawartość każdego pojazdu. Wnioski o zaopatrzenie składane za pośrednictwem wtyczki generują strukturalne zdarzenia CoT z zadaniami, które płyną z powrotem do systemu logistycznego przez bramę C2, zamykając pętlę od wniosku do dostawy bez ruchu głosowego przez radio.

Śledzenie strat. Wtyczka statusu medycznego pozwala sanitariuszom rejestrować zdarzenia strat — kategoria (pilne, priorytetowe, zwykłe), mechanizm urazu, udzielona pomoc, status ewakuacji — bezpośrednio na mapie ATAK w miejscu urazu. Zdarzenie to punkt CoT z blokiem szczegółów medycznych. Płynie na wyświetlacz WinTAK batalionowego oficera medycznego w czasie rzeczywistym i do systemu koordynacji medevac przez bramę C2, eliminując raport 9-liniowy przez radio jako jedyny środek przekazywania danych o stratach pod ostrzałem.

Wnioski o wsparcie ogniowe. Wtyczka cyfrowa wsparcia ogniowego automatyzuje przygotowanie i transmisję wniosków o wsparcie ogniowe. Operator wybiera cel na mapie ATAK, wypełnia ustrukturyzowany formularz wniosku (opis celu, metoda ataku, oznaczenie niebezpiecznego zbliżenia), a wtyczka generuje standardowe zdarzenie CoT dla ognia. Zdarzenie płynie jednocześnie na wyświetlacz oficera wsparcia ogniowego i do systemu C2 dla ognia, bez przepisywania. Wtyczka może odbierać potwierdzenia wezwania do ognia i komunikaty o strzale z powrotem z systemu C2 i wyświetlać je na urządzeniu operatora.

Szczegółowe omówienie tego, jak CloudTAK pełni rolę szkieletu serwera dla tych integracji w środowiskach sieciowych, można znaleźć w naszym przewodniku dotyczącym integracji API CloudTAK.

Testowanie i wdrożenie

Testowanie wtyczki integrującej ATAK z C2 wymaga reprezentatywnego środowiska testowego: instancji TAK Server, co najmniej dwóch urządzeń ATAK (jedno generujące zdarzenia, drugie je obserwujące) i instancji testowej systemu C2 lub symulatora. Najczęstsze błędy integracji — nieodświeżające się nieaktualne zdarzenia, zduplikowane UID, pętle sprzężenia zwrotnego w przepływie odwrotnym — ujawniają się wyłącznie pod obciążeniem przy wielu jednocześnie aktywnych urządzeniach.

Wdrożenie odbywa się za pomocą pakietów danych TAK Server. Pakiet danych to archiwum ZIP zawierające APK wtyczki, plik konfiguracyjny wtyczki (wstępnie wypełniony adresami serwerów i danymi uwierzytelniającymi) oraz certyfikat CA wymagany do TLS. Operator instaluje pakiet danych z menedżera importu ATAK, a wszystkie komponenty są aprowizowane w jednym kroku. Jest to znacznie bardziej niezawodne niż ręczna instalacja APK i rejestracja certyfikatu w warunkach polowych.

Testowanie wpływu na baterię zasługuje na szczególną uwagę. Wtyczka utrzymująca trwałe połączenie WebSocket z API C2 może zwiększyć zużycie baterii o 15–25% na typowym wzmocnionym urządzeniu. Użyj narzędzia Android Battery Historian, aby zmierzyć i zoptymalizować wzorce blokad wybudzania i aktywności sieciowej wtyczki przed wdrożeniem. Operatorzy zauważą — i wyłączą — wtyczkę, która wyraźnie szybciej wyczerpuje baterię urządzenia niż standardowy ATAK.

TAKpilot to warstwa integracji TAK z C2 firmy Corvus Intelligence — gotowa do wdrożenia produkcyjnego brama łącząca wdrożenia ATAK i WinTAK z backendami C2, obsługująca tłumaczenie CoT, zarządzanie certyfikatami i dwukierunkową synchronizację śladów bez konieczności tworzenia niestandardowych wtyczek na każdym urządzeniu.

Poznaj TAKpilot →