4. 集群任务数据模型

无人机集群执行一次任务,产生的数据远不止“飞了哪些点”。同一批架次里,既有随时间变化的位姿与链路质量,也有编队结构的动态重组,还有任务阶段切换、异常事件和平台健康状态。如果把这些数据混在一张宽表里,后续做回放、复盘、指标统计和模型训练都会非常吃力。因此,集群任务数据分析的第一步,是建立一套分层的任务数据模型,把“任务怎么走、平台在哪、编队怎么连、发生了什么、当前处于什么状态”这五类信息分别表达清楚,再用统一的时间基准和标识体系把它们关联起来。

任务剖面:把一次任务切成可计算的阶段

任务剖面描述的是任务从起飞到回收的整体阶段划分与阶段目标。它不是简单的航路点列表,而是带有阶段语义的时间区间。一个典型的侦察打击集群任务剖面可以划分为:地面准备、编队集结、区域进入、分区搜索、目标确认、协同打击、战果评估、返航回收八个阶段。每个阶段需要定义阶段标识、起止时间、参与平台集合、阶段目标、进入条件与退出条件。

例如,某次示例任务中,编队集结阶段的进入条件为“全部平台起飞完成且高度稳定在120m±10m”,退出条件为“所有平台进入预定集结空域且队形误差小于15m”。这些条件在数据模型中应表达为可判定的布尔表达式,而不是自然语言描述,否则无法自动切分阶段。阶段切分完成后,后续所有轨迹、事件和状态数据都可以打上阶段标签,便于按阶段做统计对比。

时空轨迹:统一时间基准下的位姿序列

时空轨迹是集群数据量最大的部分。每个平台在每个采样时刻产生一条记录,至少包含:平台ID、时间戳、经度、纬度、高度、速度、航向、姿态角。这里最关键的是时间基准统一。集群内不同平台的时钟可能存在毫秒级偏差,如果直接按各自本地时间拼接,编队拓扑计算会出现虚假的相对位移。工程上通常采用“统一授时+插值对齐”的方式:先以任务主时钟为基准,将各平台轨迹重采样到固定频率(如10Hz),再做时间对齐。

轨迹数据还需要区分绝对轨迹与相对轨迹。绝对轨迹用于航路合规性检查和地理围栏判断;相对轨迹用于编队保持精度评估。相对轨迹通常以编队中心或领航平台为参考点,计算各平台在编队坐标系下的偏移量。参考系定义必须全文一致:本文约定编队坐标系以编队几何中心为原点,X轴指向编队前进方向,Y轴指向右侧,Z轴向上。

编队拓扑:从位置关系到通信与指挥关系

编队拓扑不只是“谁在谁旁边”的几何关系,它同时包含通信链路关系和指挥控制关系。几何拓扑描述平台间的相对位置和队形结构,如楔形、横队、纵队、菱形;通信拓扑描述平台间的链路连接与带宽、时延、丢包率;指挥拓扑描述指令流向和决策权限。三者可能不一致:几何上相邻的两架无人机,通信上可能因为遮挡而链路质量很差,实际指挥关系可能跨级。

在数据模型中,编队拓扑适合用时序图或邻接矩阵表示。每个时刻的拓扑可以表示为一个带权无向图,节点是平台,边是通信链路,边权是链路质量。拓扑变化事件(如节点加入、退出、链路中断、队形重构)应作为独立事件记录,而不是从轨迹中反推。这样在分析编队稳定性时,可以直接统计拓扑变化频率和重构耗时。

集群任务数据模型五层结构 任务剖面层 阶段标识 · 起止时间 · 参与平台 · 进入/退出条件 · 阶段目标 地面准备 编队集结 区域进入 分区搜索 目标确认 协同打击 战果评估 返航回收 时空轨迹层 平台ID · 时间戳 · 经纬高 · 速度 · 航向 · 姿态角 · 统一时间基准 绝对轨迹(地理围栏) 相对轨迹(编队精度) 重采样 10Hz 对齐 编队拓扑层 几何拓扑 · 通信拓扑 · 指挥拓扑 · 邻接矩阵 · 链路质量权重 楔形/横队/纵队 链路带宽/时延/丢包 指令流向/决策权限 事件序列层 事件ID · 时间戳 · 事件类型 · 触发平台 · 关联平台 · 事件参数 · 严重等级 节点加入/退出 链路中断/恢复 队形重构 目标发现/丢失 异常告警 状态表示层 平台状态机 · 任务状态机 · 健康状态 · 状态转移条件 · 状态快照 统一关联键 task_id platform_id timestamp phase_id event_id topology_id state_snapshot_id 时间基准: 任务主时钟 UTC 对齐 坐标系: 编队中心原点 X前 Y右 Z上

事件序列:把“发生了什么”结构化

事件序列是任务数据中最容易被忽视、但对复盘最有价值的部分。集群任务中的事件可以分为几类:平台级事件(起飞、降落、故障、低电量返航)、编队级事件(队形重构、节点加入退出、链路中断恢复)、任务级事件(阶段切换、目标发现、目标丢失、打击执行、评估完成)、异常事件(碰撞告警、通信超时、导航漂移)。

每条事件记录应包含:事件ID、时间戳、事件类型、触发平台、关联平台集合、事件参数、严重等级。事件参数用键值对存储,例如链路中断事件的参数为 {link_id: "L-03", rssi: -92, duration_ms: 1450}。事件序列按时间排序后,可以与任务剖面阶段对齐,形成“阶段—事件”矩阵,用于统计各阶段的事件密度和异常率。

状态表示:平台与任务的双状态机

状态表示解决的是“当前处于什么状态、什么条件下会切换”的问题。集群任务中至少需要两套状态机:平台状态机和任务状态机。平台状态机描述单架无人机的生命周期状态,如待命、起飞、巡航、悬停、返航、降落、故障。任务状态机描述整个集群的任务执行状态,如准备、集结、执行中、暂停、完成、中止。

两套状态机通过条件表达式关联。例如,当任务状态机处于“执行中”时,若超过30%的平台进入“故障”状态,任务状态机应自动切换到“中止”。状态数据在存储时,建议采用“状态快照+状态转移记录”的方式:快照记录某一时刻的全量状态,转移记录只记录变化。这样既能快速恢复任意时刻的状态,又能压缩存储空间。

五层模型的关联与落地

五层模型不是孤立的,它们通过统一关联键连接。任务剖面提供 phase_id,时空轨迹提供 platform_id + timestamp,编队拓扑提供 topology_id,事件序列提供 event_id,状态表示提供 state_snapshot_id。所有层共享 task_id 和统一时间基准。

在实际落地时,建议采用列式存储(如Parquet)按层分表,轨迹表按 task_id + platform_id + timestamp 分区,事件表按 task_id + event_type 分区。查询时通过 task_id 和 timestamp 做跨表关联。这样设计后,回放一段任务只需要按时间范围拉取五张表的数据,按时间轴合并即可;统计编队保持精度只需要轨迹表和拓扑表;分析异常原因只需要事件表和状态表。数据模型清晰了,后续的分析和算法才有稳定的输入。

建模时先确定时间基准和坐标系,再定义各层的关联键。关联键一旦确定,不要在中途更改,否则跨表关联会失效。建议在任务开始前就生成 task_id,所有数据写入时强制携带。