3. 导航系统故障诊断数据采集与预处理实战

水下机器人导航系统的故障诊断,成败往往不在诊断算法本身,而在进入算法之前的数据质量。真实航行中采集到的原始数据几乎不可能直接使用:DVL(多普勒计程仪)在底跟踪丢失时输出跳变,IMU 存在零偏与随机游走,深度计受波浪扰动,各传感器采样频率不同、时间戳基准不同,偶尔还有通信丢包造成的空档。本节以一台作业型 ROV 的典型导航数据包为对象,完整走一遍从原始记录到可诊断数据集的流程,重点讲清每一步"为什么做、怎么做、做到什么程度算合格"。

一、数据对象与采集约定

假设本次任务记录了一段约 600 s 的定深定向航行数据,传感器配置与采样特性如下(示例参数,用于说明处理逻辑):

传感器输出内容标称频率典型问题
IMU三轴角速度、加速度、姿态角100 Hz零偏漂移、振动噪声
DVL三轴对地速度、底跟踪有效标志5 Hz失锁跳变、无效帧
深度计压力换算深度10 Hz波浪引起的高频波动
磁罗经航向角10 Hz局部磁场干扰、跳变
推进器指令各推力器 PWM 占空比20 Hz与导航量不同源,需对齐

采集时统一使用机器人主控的单调时钟打时间戳,并额外记录一列"传感器本地时间",便于后续检查时钟漂移。所有原始数据按"时间戳 + 传感器编号 + 通道值 + 状态字"的宽表落盘,状态字保留 DVL 有效位、罗经干扰位等硬件标志——这些标志在清洗阶段比数值本身更有价值。

二、数据清洗:先处理"不该存在"的记录

清洗的目标是去掉物理上不可能或明确无效的样本,而不是修正数值。具体动作包括:删除时间戳重复或倒序的记录;剔除状态字标记为无效的 DVL 帧;将超出量程的数值(如深度为负、DVL 速度绝对值大于 3 m/s)置为缺失而非直接删除,保留时间轴连续性;对短于 0.5 s 的通信丢包空档做标记,长空档则分段处理,避免后续插值跨越过长区间产生虚假平滑。

一个容易被忽略的点是单位与坐标系一致性。DVL 常输出机体坐标系速度,而诊断特征若要与航迹关联,需先用同期姿态角旋转到导航坐标系。本节约定:导航坐标系为北-东-地(NED),深度向下为正,航向以北为 0°、顺时针为正,全文与图示保持一致。

三、时间同步:把多速率数据放到同一时间轴

各传感器频率不同,直接按行拼接会产生错位。工程上常用做法是选定一个基准频率(本节取 20 Hz,与推进器指令一致),建立统一时间栅格,然后对每个传感器分别重采样:IMU 与推进器指令这类高频量采用零阶保持或线性插值;DVL 这类低频量在栅格点上若无新样本,则保持上一有效值并附加"数据年龄"字段;深度计与罗经用线性插值。插值前必须先完成清洗,否则无效帧会被插值"抹平"成看似合理的假数据。

时钟漂移检查可用一段静止悬停数据:若机器人实际静止,而由 IMU 积分得到的位置在缓慢漂移,同时 DVL 速度均值不为零,则提示时间对齐或零偏存在问题。下图给出本节完整的数据处理链路与各环节的输入输出关系。

导航数据采集与预处理链路(示例:600 s 定深航行) 原始记录 IMU 100 Hz DVL 5 Hz / 深度 10 Hz 罗经 10 Hz / 推力 20 Hz 数据清洗 去重/去倒序 无效帧剔除 超量程置缺失 时间同步 20 Hz 统一栅格 插值/零阶保持 附加数据年龄 野值剔除 3σ 粗筛 中值滤波残差 物理约束复核 滤波 低通/滑动平均 零偏估计 姿态解算 特征提取(滑动窗口 5 s / 步长 1 s) 均值、标准差、峰峰值、过零率、残差能量 DVL 失锁占比、姿态角速率极值、深度波动幅值 诊断用数据集 时间戳 + 特征向量 + 质量标记 + 标签 每行对应一个窗口,可直接输入分类/规则模型 质量复核(回环) 缺失率、野值比例、 静止段漂移量是否达标 不达标则回退调整阈值 关键判据(示例阈值) 缺失率 < 2%,野值比例 < 1% 静止段 60 s 位置漂移 < 0.5 m

四、野值剔除:区分"噪声"与"故障征兆"

野值剔除要格外谨慎,因为某些野值恰恰是故障的早期征兆,例如 DVL 在接近海底斜坡时出现的周期性速度跳变。推荐采用两级策略:第一级用滑动中值滤波(窗口 5 点)计算残差,残差超过 3 倍稳健标准差(用 MAD 估计,避免被野值污染)的样本标记为疑似;第二级用物理约束复核,例如相邻两帧速度差对应的加速度若超过 5 m/s²,则判定为野值并置为缺失,同时记录"野值事件"计数——这个计数本身就是有价值的诊断特征。

需要强调的是:置为缺失而非直接删除,是为了让后续插值和特征窗口仍能感知该时段数据不可靠。若某窗口内缺失比例超过 30%,该窗口应打上低质量标记,训练诊断模型时可降权或排除。

五、滤波与特征提取

滤波的目的不是把数据"磨平",而是抑制与故障无关的频段。深度计受波浪影响的主频约 0.1~0.3 Hz,可用二阶巴特沃斯低通(截止 0.5 Hz)保留定深控制引起的真实变化;IMU 角速度则保留较宽带宽(截止 10 Hz),因为推进器异常引起的振动往往在 5~20 Hz。滤波后应检查相位滞后是否影响特征时序对齐,必要时采用零相位滤波(正反两次滤波)。

特征提取采用 5 s 窗口、1 s 步长,每个窗口输出一组特征:各通道均值与标准差、峰峰值、DVL 失锁帧占比、姿态角速率极值、深度波动幅值、野值事件数。以一段示例数据为例,正常航行窗口的 DVL 失锁占比通常低于 5%,而某段出现推进器缠绕后,失锁占比升至 40% 以上且深度标准差由 0.08 m 增至 0.35 m——这类组合特征比单一阈值更能区分故障类型。

建议在数据集中保留原始时间戳与窗口起止索引,便于诊断结果回溯到具体航行片段;同时把清洗、同步、剔除各环节的参数(窗口长度、阈值、截止频率)写入数据集元信息,保证处理过程可复现。

六、形成可诊断数据集与质量验收

最终数据集每行对应一个时间窗口,字段包括窗口起止时间、特征向量、质量标记(正常/低质量)、以及人工或规则标注的故障标签(如"正常""DVL 失锁""推进器异常""罗经干扰")。验收时至少检查三项:整体缺失率是否低于 2%;野值比例是否低于 1%;静止悬停段 60 s 内由 IMU 积分得到的位置漂移是否小于 0.5 m。三项均达标,才认为该数据集可用于后续故障诊断模型的训练与验证;任一项不达标,应回到对应环节调整阈值或窗口参数,而不是直接进入建模。

这套流程的价值在于把"看起来能用"的原始数据变成"知道哪里能用、哪里不能用"的结构化数据集。诊断算法再先进,也无法从被野值污染或时间错位的数据中稳定识别故障;反之,一份质量可控、特征明确的数据集,往往能让简单的阈值规则或浅层分类器就达到可用的诊断效果。