3. 飞行数据采集与预处理
飞行数据系统辨识的第一步不是建模,而是把"飞出来的真实世界"变成"可计算的数据"。机载传感器、遥测链路和飞控日志三条数据源在时间基准、采样率、量纲和噪声特性上各不相同,若直接送入辨识算法,往往得到的是"看似收敛、实则错误"的模型。本章围绕数据源、时间同步、去噪滤波与异常值处理四个环节,建立一条从原始信号到可用数据集的完整链路。
一、三类数据源及其特性
机载传感器数据来自IMU、气压计、磁力计、GPS、空速管等,采样率高(IMU常为200Hz~1kHz),但受振动、温漂和电磁干扰影响明显。遥测数据经数传链路下传,采样率通常为1~50Hz,存在丢包、延迟抖动和量化误差。日志数据由飞控以固定周期写入SD卡或Flash,字段最全、时间戳最规整,是辨识的主力数据源,但受存储带宽限制可能降频记录。
三类数据在辨识中的分工不同:高频IMU用于辨识气动导数与执行机构动态;低频遥测用于验证配平状态与航迹一致性;日志数据用于对齐全部通道并重建状态量。理解这一点,才能避免"用10Hz数据辨识高频模态"这类根本性错误。
二、时间同步:一切对齐的前提
不同数据源的时间戳来源不同:IMU使用内部晶振计数,GPS使用UTC秒,日志使用飞控主循环计数。若不做同步,同一时刻的俯仰角与升降舵偏度可能相差数十毫秒,在快速机动中足以让辨识结果完全失真。
工程上常用三步法:首先以飞控日志时间戳为基准时基;其次用GPS的PPS脉冲校准晶振漂移,估计时钟偏差与漂移率;最后对低频通道做线性插值或样条插值,对高频通道做抽取或抗混叠滤波后重采样。对于丢包,短时用线性插值,长时用状态估计器预测填充,并打上"填充标记"供后续加权。
# 以日志时基对齐IMU与遥测(伪代码)
t_log = log['timestamp'] # 基准时基
t_imu = imu['timestamp'] - bias_imu
t_tm = tm['timestamp'] - bias_tm
imu_aligned = interp1d(t_imu, imu['pitch'], t_log, kind='linear')
tm_aligned = interp1d(t_tm, tm['pitch'], t_log, kind='linear')
# 标记插值区间,避免外推污染
mask_valid = (t_log >= t_tm.min()) & (t_log <= t_tm.max())
三、去噪与滤波:保留动态,抑制噪声
去噪的目标不是"让曲线变光滑",而是"在保留刚体动态频带的前提下抑制噪声"。无人机刚体模态通常在0.5~5Hz,执行机构带宽约5~15Hz,而IMU噪声集中在30Hz以上。因此低通截止频率应设在刚体模态与结构振动之间,常用10~20Hz。
常用方法包括:滑动平均(简单但相位滞后大)、Butterworth低通(相位可控)、带通滤波(提取特定频段)、卡尔曼滤波(融合多源、可估计偏差)。对离线辨识,推荐使用零相位滤波(filtfilt),避免相位失真影响气动导数辨识。
四、异常值处理:识别、隔离与修复
异常值来源包括:GPS跳点、磁力计受扰、空速管堵塞、遥测误码、传感器饱和。处理流程为"检测—隔离—修复—标记"四步。检测常用3σ准则、中值绝对偏差(MAD)、变化率阈值和物理范围约束。修复可用线性插值、样条插值或基于模型的预测,但必须保留标记,避免把修复值当作真实观测参与辨识。
| 数据源 | 典型采样率 | 主要噪声/异常 | 推荐处理 |
|---|---|---|---|
| IMU | 200–1000 Hz | 振动、零偏漂移、饱和 | 低通 + 零偏估计 + 饱和标记 |
| 气压高度 | 10–50 Hz | 气流扰动、温漂 | 低通 + 与GPS融合 |
| 磁力计 | 10–100 Hz | 电磁干扰、硬铁/软铁 | 椭球拟合校准 + MAD检测 |
| GPS | 1–10 Hz | 跳点、丢星、多路径 | 速度一致性检验 + 插值 |
| 遥测 | 1–50 Hz | 丢包、延迟抖动、误码 | 时间戳重排 + 短时插值 |
五、案例与复盘:一次俯仰辨识失败
某次固定翼俯仰辨识中,模型拟合度仅0.4。复盘发现:遥测俯仰角与IMU俯仰角存在约80ms固定延迟,且空速通道有3个GPS跳点未剔除。修正时基偏差、剔除跳点并改用零相位滤波后,拟合度提升至0.92。这说明预处理不是"辅助步骤",而是辨识精度的第一道闸门。