Cursor on Target (CoT) este un format de mesaje bazat pe XML dezvoltat de Laboratorul de Cercetare al ForИ›elor Aeriene ale SUA la Г®nceputul anilor 2000 pentru a rezolva o problemДѓ specificДѓ: cum partajezi poziИ›ia, identitatea И™i starea unei И›inte sau unitДѓИ›i Г®ntre sisteme militare eterogene care nu au fost proiectate sДѓ interopereze? RДѓspunsul CoT a fost o schemДѓ XML minimalДѓ, extensibilДѓ, pe care orice sistem o putea produce И™i consuma, fДѓrДѓ registru central sau autoritate de coordonare necesarДѓ.
DouДѓ decenii mai tГўrziu, CoT a devenit standardul de facto pentru raportarea poziИ›iilor И™i partajarea evenimentelor Г®n ecosistemul marginii tactice. ATAK (Android Team Awareness Kit), WinTAK, iTAK, TAK Server И™i sute de plugin-uri И™i integrДѓri personalizate vorbesc toИ›i CoT. Orice software de apДѓrare care trebuie sДѓ schimbe date de poziИ›ie cu sistemele tactice de teren va trebui sДѓ genereze sau sДѓ consume mesaje CoT. Acest articol explicДѓ Г®n detaliu formatul И™i aratДѓ cum sДѓ implementezi un parser И™i generator CoT.
Ce Este CoT И™i Cum a Devenit Standardul De Facto
CoT a obținut dominanța nu printr-un proces formal de standardizare ci prin adoptare organică condusă de utilitate operațională. Laboratorul de Cercetare al Forțelor Aeriene a lansat formatul ca parte a conceptului său „Cursor on Target" — ideea că orice senzor ar trebui să poată cue orice armă sau afișaj prin partajarea unei structuri de date comune care descrie o țintă. Simplitatea formatului XML, combinată cu extensibilitatea sa și absența restricțiilor de licențiere, a permis adoptarea rapidă.
Factorul critic de activare a fost adoptarea CoT de cДѓtre ATAK ca format intern И™i extern de date. ATAK a devenit aplicaИ›ia dominantДѓ de conИ™tientizare a situaИ›iei pentru soldaИ›ii pedestri, iar deoarece tot ce produce ATAK este un eveniment CoT, orice sistem care se integreazДѓ cu ATAK trebuie sДѓ vorbeascДѓ CoT. Formatul s-a rДѓspГўndit de la ATAK la staИ›iile de control la sol pentru UAV, afiИ™ajele BMS montate pe vehicule, software-ul postului de comandДѓ И™i sistemele COP bazate pe web. PГўnДѓ la mijlocul anilor 2010, construirea unui sistem software tactic care nu suporta CoT era o datorie semnificativДѓ de integrare.
Structura XML: Elementele Event, Point, Detail
Un mesaj CoT este un document XML cu un singur element rДѓdДѓcinДѓ: <event>. Fiecare mesaj CoT este un eveniment, indiferent dacДѓ descrie o actualizare de poziИ›ie, un raport de senzor, un mesaj de chat sau o sarcinДѓ de misiune. Elementul event poartДѓ mai multe atribute obligatorii care identificДѓ tipul evenimentului, sursa И™i fereastra de timp.
Un raport de poziИ›ie CoT minimal aratДѓ astfel:
<event version="2.0"
uid="ALPHA-1-1"
type="a-f-G-U-C"
how="m-g"
time="2026-05-11T08:30:00.000Z"
start="2026-05-11T08:30:00.000Z"
stale="2026-05-11T08:31:00.000Z">
<point lat="48.3794"
lon="31.1656"
hae="150.0"
ce="10.0"
le="5.0"/>
<detail>
<contact callsign="ALPHA-1-1"/>
<group name="Cyan" role="Team Member"/>
<status battery="85"/>
<track speed="0.0" course="270.0"/>
</detail>
</event>
DescompunГўnd atributele cheie:
uid: Un identificator unic global pentru entitatea raportată. UID-ul persistă la toate rapoartele pentru aceeași entitate. Pentru un soldat care folosește ATAK, UID-ul este de obicei derivat din identificatorul hardware al dispozitivului. Pentru un UAV, UID-ul este de obicei numărul de serie al aeronavei. Unicitatea UID este aplicată prin convenție, nu de un registru — implementările ar trebui să folosească o schemă UID semnificativă, rezistentă la coliziuni (de exemplu: <callsign>-<unit>-<device-hash>).
type: Un И™ir ierarhic care codificДѓ clasificarea entitДѓИ›ii. Иirul type foloseИ™te o ierarhie separatДѓ prin puncte: primul caracter codificДѓ domeniul de afiliere (a = atomi, adicДѓ entitДѓИ›i fizice), al doilea segment codificДѓ afilierea (f = prietenos, h = ostil, n = neutru, u = necunoscut), al treilea segment codificДѓ domeniul (G = terestru, A = aerian, S = naval, U = subacvatic), iar segmentele ulterioare codificДѓ tipul unitДѓИ›ii. Tipul a-f-G-U-C se decodificДѓ ca: atom, prietenos, terestru, unitate, luptДѓ. Tipul a-h-A se decodificДѓ ca: atom, ostil, aerian.
time / start / stale: Trei timestamp-uri UTC ISO 8601 care definesc când a fost generat evenimentul (time), când starea raportată a devenit validă (start) și când raportul trebuie considerat expirat (stale). Timpul stale este critic — un consumator trebuie să nu mai afișeze o entitate sau să reducă încrederea sa vizuală când ora curentă depășește timestamp-ul stale. Setarea corectă a stale este o sursă frecventă de erori: un raport cu un timp stale la 24 de ore în viitor va rămâne pe COP indefinit după ce sursa trece offline.
point: Poziția entității în coordonate WGS84. lat și lon sunt în grade zecimale. hae este înălțimea deasupra elipsoidului WGS84 în metri (nu înălțimea deasupra nivelului mediu al mării — fii conștient de această distincție când integrezi cu sisteme care folosesc MSL). ce și le sunt eroarea circulară și eroarea liniară — incertitudinea de poziție 1-sigma în metri orizontal și respectiv vertical.
detail: Un element XML extensibil care poartă date specifice aplicației. Elementul detail nu are schemă fixă — orice elemente copil sunt valide. Ecosistemul TAK definește un set de sub-elemente detail bine cunoscute (contact, group, status, track, precisionlocation) pe care ATAK le recunoaște și afișează. Plugin-urile personalizate adaugă propriile sub-elemente detail.
Tipuri CoT: Ierarhia de Clasificare
Ierarhia de tipuri CoT este aspectul cel mai important al formatului pentru un dezvoltator de sisteme C2. Иirul type determinДѓ cum sistemul receptor clasificДѓ, simbolizeazДѓ И™i gestioneazДѓ evenimentul. CГўteva prefixe de tip critice:
a-f-G (Terestru Prietenos): Unitate terestrДѓ prietenoasДѓ. RedatДѓ cu simbolul dreptunghi albastru conform MIL-STD-2525. Toate unitДѓИ›ile terestre prietenoase pedestri И™i motorizate folosesc acest prefix, cu segmente suplimentare specificГўnd tipul unitДѓИ›ii.
a-h-G (Terestru Ostil): Unitate terestrДѓ ostilДѓ. RedatДѓ cu simbolul diamant roИ™u. UrmДѓ raportatДѓ de un senzor cu evaluare ostilДѓ.
a-u-G (Terestru Necunoscut): Contact terestru cu afiliere necunoscutДѓ. Redat cu semnul de Г®ntrebare galben. Folosit pentru contacte radar neidentificate И™i pentru contacte unde afilierea nu a fost evaluatДѓ.
a-f-A (Aerian Prietenos): UrmДѓ aerianДѓ prietenoasДѓ. Folosit pentru UAV-uri prietenoase, elicoptere И™i aeronave cu aripi fixe.
b-m-p-s-p-loc: Un waypoint de planificare a misiunii — parte a ierarhiei de tipuri broadcast/management. Folosit pentru planificarea rutelor și partajarea straturilor de misiune.
t-x-c-t: Un mesaj GeoChat. ATAK foloseИ™te CoT pentru a transmite mesaje text Г®ntre utilizatori; ierarhia de tipuri identificДѓ evenimentul ca un eveniment de comunicare mai degrabДѓ decГўt un raport de poziИ›ie.
TAK Server: Rutare, Filtrare И™i Federare
TAK Server este componenta server-side a ecosistemului TAK. Primește mesaje CoT de la clienții conectați (dispozitive ATAK, instanțe WinTAK, integrări personalizate) și le rutează către alți clienți conectați pe baza regulilor configurabile. Un deployment de bază TAK Server permite tuturor clienților conectați să vadă toate evenimentele CoT de la toți ceilalți clienți conectați — un model de difuzare plat.
Pentru deployment-uri operaționale, filtrarea și federarea sunt esențiale. Pachetele de date (fișiere de configurare distribuite clienților) controlează ce clienți se conectează la ce instanțe TAK Server. Grupurile limitează ce clienți pot vedea ce evenimente — atribuirea clienților unui grup înseamnă că primesc doar evenimentele de la alți clienți din același grup. Enterprise Sync permite pachetele de misiune, hărțile și datele de configurare să fie distribuite de la TAK Server clienților conectați.
Federarea conecteazДѓ mai multe instanИ›e TAK Server, permiИ›Гўnd evenimentelor CoT sДѓ curgДѓ Г®ntre instanИ›ele server din locaИ›ii geografice diferite sau la niveluri de securitate diferite. Un TAK Server la nivel de batalion poate federat cu un TAK Server la nivel de brigadДѓ, cu regulile de federare controlГўnd ce tipuri de evenimente traverseazДѓ graniИ›a. Federarea este mecanismul prin care poziИ›iile eИ™aloanelor inferioare devin vizibile pe sistemele COP de eИ™alon superior fДѓrДѓ a necesita conexiuni directe ale clienИ›ilor la sistemul superior.
Implementare Г®n Python: Parsarea И™i Generarea CoT
Ecosistemul Python are mai multe biblioteci CoT. Biblioteca pytak (menИ›inutДѓ de comunitatea TAK) furnizeazДѓ o implementare completДѓ a generДѓrii evenimentelor CoT И™i o arhitecturДѓ bazatДѓ pe coadДѓ pentru integrarea cu TAK Server. Pentru parsare, xml.etree.ElementTree standard al Python este suficient; pentru producИ›ie, lxml cu validare XSD este recomandat.
Generarea unui raport de poziИ›ie:
import uuid
from datetime import datetime, timezone, timedelta
import xml.etree.ElementTree as ET
def generate_cot_position(uid, callsign, lat, lon, hae, affiliation="f", domain="G"):
now = datetime.now(timezone.utc)
stale = now + timedelta(minutes=1)
fmt = "%Y-%m-%dT%H:%M:%S.000Z"
event = ET.Element("event", {
"version": "2.0",
"uid": uid,
"type": f"a-{affiliation}-{domain}-U-C",
"how": "m-g",
"time": now.strftime(fmt),
"start": now.strftime(fmt),
"stale": stale.strftime(fmt)
})
ET.SubElement(event, "point", {
"lat": str(lat),
"lon": str(lon),
"hae": str(hae),
"ce": "10.0",
"le": "5.0"
})
detail = ET.SubElement(event, "detail")
ET.SubElement(detail, "contact", {"callsign": callsign})
ET.SubElement(detail, "track", {"speed": "0.0", "course": "0.0"})
return ET.tostring(event, encoding="unicode")
Conectarea la un TAK Server prin TCP И™i trimiterea unui eveniment CoT necesitДѓ stabilirea unei conexiuni socket TCP la portul 8087 (sau TLS pe 8089) И™i scrierea И™irului XML urmatДѓ de un byte terminator null (\x00 sau \n Г®n funcИ›ie de versiunea serverului). Biblioteca pytak abstractizeazДѓ aceasta И™i suportДѓ И™i UDP multicast pentru deployment-uri locale Г®n reИ›ea.
Ghid pentru timpul stale: SeteazДѓ timpul stale la aproximativ 2Г— intervalul de actualizare aИ™teptat pentru tipul de entitate. Pentru un soldat pedestru care se actualizeazДѓ la fiecare 30 de secunde, stale ar trebui sДѓ fie 60 de secunde. Pentru un UAV care se actualizeazДѓ la 1 Hz, stale ar trebui sДѓ fie 5-10 secunde. Un timp stale prea lung cauzeazДѓ persistenИ›a urmelor fantomДѓ pe COP dupДѓ ce o entitate trece offline; un timp stale prea scurt cauzeazДѓ pГўlpГўirea urmelor valide cГўnd actualizДѓrile sunt Г®ntГўrziate de jitter de reИ›ea.