3. 故障节点检测的数据基础
故障节点检测不是“看一眼谁掉线了”这么简单。集群中每个节点是否健康,需要由多源数据共同支撑:机载传感器给出本体的运动与执行状态,状态遥测给出飞控与动力系统的内部量,链路质量反映通信是否可靠,位置与姿态数据则决定编队几何关系是否被破坏。只有把这些数据在时间上对齐、在坐标上统一,后续的残差计算、阈值判断和隔离决策才有意义。本节围绕“数据从哪里来、怎么采、怎么对齐、在哪里验证”展开。
一、四类数据源及其故障指示意义
机载传感器是节点自感知的底层来源。惯性测量单元(IMU)输出三轴加速度与三轴角速度,典型采样率 100~1000 Hz;磁力计提供航向参考;气压计给出高度;GNSS 接收机输出经纬高与地速。这些量本身不直接等于“故障”,但它们的突变、漂移或长时间不变,往往是传感器失效、卡死或饱和的前兆。
状态遥测来自飞控与动力系统,包括电池电压/电流、剩余电量、电机转速指令与实际转速、PWM 输出、飞控模式、解锁状态、CPU 负载与温度。遥测的典型频率为 1~50 Hz,低于 IMU,但它直接反映执行机构是否按指令动作。例如某节点位置仍被 GNSS 拉回编队,但电机实际转速持续低于指令值,说明动力衰减而非定位故障。
链路质量数据包括接收信号强度指示(RSSI)、信噪比(SNR)、丢包率、往返时延(RTT)与邻居表。链路质量是区分“节点真故障”与“通信暂时拥塞”的关键。若某节点 RSSI 骤降、丢包率升高,但遥测与姿态仍连续,则更可能是链路问题而非节点失效。
位置与姿态数据是集群层面的观测量,包括各节点的本地位置估计、姿态四元数/欧拉角,以及由邻居相对测距或视觉得到的相对位置。编队一致性检测通常比较“期望队形位置”与“实际位置”,或比较相邻节点间的相对距离与期望基线。姿态异常(如滚转角持续偏离)常与执行机构或传感器融合故障相关。
二、数据采集与同步方法
采集的第一原则是“带时间戳”。每个数据包在产生时刻打上本地单调时钟时间戳,避免使用可被外部调整的墙钟。若节点具备 GNSS 秒脉冲(PPS),可用 PPS 作为硬件触发基准,将 IMU 采样与整秒对齐,误差可控制在微秒级;无 PPS 时,可用 PTP(IEEE 1588)或 NTP 做网络对时,典型精度分别为亚微秒级与毫秒级。
不同频率的数据不能直接拼成一条记录,需要重采样到统一时间栅格。常用做法是选一个基准频率(如 50 Hz),对高频 IMU 做滑动平均或抽取,对低频遥测做零阶保持或线性插值。以 100 Hz IMU 与 10 Hz 遥测对齐到 50 Hz 为例:IMU 每 2 个样本取均值,遥测每 5 个栅格保持同一值,并在插值跨越数据缺口时打上“无效”标记,防止把外推值当作真实观测。
坐标统一同样关键。位置数据可能来自 GNSS 的 WGS-84 经纬高、飞控的本地 NED 坐标或视觉里程计的相机坐标系。检测前应统一到同一参考系,例如以集群起飞点为原点的 ENU 或 NED。约定:本文采用 NED,x 指向北、y 指向东、z 指向地,姿态角按“先滚转、再俯仰、后偏航”的 Z-Y-X 顺序解算。若切换参考系,必须在数据记录中显式标注,避免残差符号相反。
三、典型数据集与仿真环境
真实飞行数据获取成本高、故障样本稀少,因此教学与算法验证通常采用“仿真为主、实飞为辅”的组合。常用仿真环境包括:基于 ROS/Gazebo 的多无人机仿真,可加载 PX4 SITL 飞控,注入 IMU 偏置、GNSS 跳变、电机失效等故障;基于 AirSim 的视觉与动力学仿真,适合验证视觉相对定位;以及 MATLAB/Simulink 的编队控制与故障注入模型,便于快速扫描参数。
公开数据方面,可参考多旋翼飞行日志数据集(如 PX4 ULog、ArduPilot DataFlash 日志格式),它们包含 IMU、姿态、位置、电池、RC 输入等完整字段,适合练习解析与特征提取。故障注入数据集通常由研究机构发布,包含正常飞行与人为注入的执行器卡死、传感器漂移、通信丢包等场景。使用时应核对采样率、时间基准与坐标系定义,避免直接套用阈值。
| 数据源 | 典型频率 | 关键字段 | 故障指示 |
|---|---|---|---|
| IMU | 100–1000 Hz | 加速度、角速度 | 突变、卡死、噪声异常 |
| GNSS | 5–20 Hz | 经纬高、地速、卫星数 | 跳变、失锁、精度下降 |
| 状态遥测 | 1–50 Hz | 电压、电流、转速、模式 | 动力衰减、电量骤降 |
| 链路质量 | 1–10 Hz | RSSI、SNR、丢包率、RTT | 通信中断、拥塞 |
| 位置与姿态 | 10–100 Hz | 位置、四元数、相对距离 | 编队偏差、姿态失控 |
四、一个可复现的采集与对齐示例
假设用 PX4 SITL + Gazebo 仿真 5 架无人机,以 50 Hz 作为统一栅格。操作流程如下:启动仿真后,通过 MAVROS 订阅 /uavN/mavros/imu/data、/uavN/mavros/global_position/raw/fix、/uavN/mavros/battery 与 /uavN/mavros/state;在接收回调中记录 ros::Time::now() 作为接收时间戳,并读取消息头中的采样时间戳;将各话题写入 rosbag 后离线处理。
# 示例:将 100 Hz IMU 与 10 Hz 遥测对齐到 50 Hz 栅格(伪代码)
grid_dt = 0.02 # 50 Hz
for t in grid_times:
imu_win = imu[(imu.t >= t-0.01) & (imu.t < t+0.01)]
imu_aligned = mean(imu_win.accel), mean(imu_win.gyro)
telem = telem_hold_last(telem, t) # 零阶保持
if abs(telem.t - t) > 0.05:
telem.valid = False # 超时标记无效
record = {t, imu_aligned, telem, link, pose}
对齐完成后,先做数据质量检查:统计每架无人机的丢包率、时间偏差分布、IMU 方差与 GNSS 卫星数。若某节点 IMU 方差突然增大且 GNSS 卫星数正常,优先怀疑 IMU 故障;若丢包率升高但姿态连续,则优先怀疑链路。只有排除数据质量问题后,才进入残差与阈值判定,避免把采集缺陷误判为节点故障。
综上,故障节点检测的数据基础可以概括为:四类数据源提供互补证据,时间戳与坐标系统一保证可比性,重采样与质量标记保证可用性,仿真与日志数据提供可复现的验证条件。把这一层做扎实,后续的残差计算、隔离与重构才有可靠输入。