4. 数据预处理

轨迹质量评估的准确性,很大程度上取决于输入数据的“干净程度”。原始轨迹数据通常来自GNSS接收机、IMU、视觉里程计、激光雷达或组合导航系统,受传感器噪声、遮挡、多路径、丢包、时间戳漂移等因素影响,直接用于评估会引入大量伪误差。数据预处理的目标,是把异构、含噪、不完整的原始观测,转换为时空对齐、尺度统一、语义清晰的标准轨迹序列,为后续的误差统计、闭环检测和精度评定提供可信输入。

核心原则:预处理不是“美化数据”,而是“保留真实运动特征的同时抑制观测噪声”。任何一步处理都必须可追溯、可复现,并记录参数与版本,否则评估结论将失去工程可信度。

一、核心原理:六步预处理链

完整的轨迹预处理通常包含六个环节:清洗、去噪、插值、分段、坐标变换与标准化。它们并非严格串行,实际工程中常根据数据质量进行迭代组合。下图展示了从原始观测到标准轨迹的数据流与关键操作。

轨迹数据预处理链:从原始观测到标准轨迹 原始观测 GNSS / IMU / LiDAR ① 清洗 去重 · 剔除异常 · 补时间戳 ② 去噪 低通 · 中值 · 卡尔曼 ③ 插值 线性 · 样条 · 时间对齐 ④ 分段 静止 · 直线 · 转弯 ⑤ 坐标变换 WGS84 → ENU / 局部坐标 时间基准统一 · 外参标定 ⑥ 标准化 单位统一 · 格式规范 质量标记 · 元数据封装 标准轨迹 可评估 · 可复现 关键参数与质量检查点 清洗:速度阈值 > 50 m/s 或加速度 > 10 m/s² 标记为异常;时间戳单调递增校验 去噪:滑动窗口中值滤波(窗口=5);卡尔曼滤波过程噪声 Q=0.01,观测噪声 R=0.1 插值:线性插值用于位置,球面样条用于姿态;插值间隔 ≤ 0.1 s,避免过平滑 分段:基于速度/角速度阈值切分运动段,每段至少包含 20 个采样点以保证统计有效性

二、方法流程与关键操作

清洗是第一步,主要解决“数据本身不可用”的问题。常见操作包括:去除重复时间戳记录、剔除速度或加速度超出物理极限的野值、修复因丢包导致的空帧、统一时间戳格式并检查单调性。清洗阶段应保留原始数据副本,所有剔除操作记录索引与原因。

去噪针对观测噪声。GNSS位置噪声可用滑动平均或卡尔曼滤波抑制;IMU角速度噪声适合低通滤波或小波变换;视觉轨迹的抖动可用样条平滑。需注意:去噪强度过大会抹平真实机动特征,导致评估时低估动态误差。建议先用Allan方差分析噪声特性,再选择滤波器参数。

插值解决采样率不一致与时间戳不对齐问题。多传感器融合时,常以主传感器时间轴为基准,对从传感器进行线性插值或样条插值。位置插值推荐线性或三次样条,姿态插值必须使用球面线性插值(SLERP),避免欧拉角插值带来的万向节死锁。

分段将长轨迹按运动状态切分为静止、直线、转弯、加减速等片段。分段的意义在于:不同运动状态下的误差特性差异显著,整体统计会掩盖局部问题。常用方法有基于速度阈值、基于角速度变化率、基于隐马尔可夫模型的状态分割。

坐标变换把不同来源的轨迹统一到同一坐标框架。典型流程是:WGS84经纬高 → ECEF地心直角坐标 → ENU局部切平面坐标。若涉及多传感器,还需利用外参矩阵将各传感器轨迹变换到车体坐标系。时间基准也必须统一,通常以UTC或GPS周内秒为基准。

标准化是最后一步,输出统一格式的轨迹文件。包括:单位统一(米、弧度、秒)、字段命名规范、质量标记(如“插值段”“低置信度段”)、元数据封装(传感器型号、标定参数、处理版本)。标准化后的轨迹才能进入评估流水线。

三、案例场景:城市峡谷中的组合导航轨迹

某城市峡谷场景中,GNSS信号频繁遮挡,组合导航输出轨迹出现明显跳变。预处理流程如下:

  1. 清洗:剔除3段因多路径导致的水平位置跳变(速度>40 m/s),修复2处时间戳回退。
  2. 去噪:对IMU角速度采用5点中值滤波,对GNSS位置采用卡尔曼滤波,Q=0.05,R=0.5。
  3. 插值:以IMU 100 Hz时间轴为基准,对GNSS 10 Hz位置进行三次样条插值,姿态用SLERP。
  4. 分段:按速度阈值切分为12段,其中3段为静止,5段为直线,4段为转弯。
  5. 坐标变换:WGS84 → ENU,原点取起点经纬高,外参使用出厂标定值。
  6. 标准化:输出CSV格式,字段为timestamp,x,y,z,qw,qx,qy,qz,quality_flag。
建议在预处理流水线中引入“数据质量报告”,自动统计各环节剔除比例、插值占比、分段数量与时长分布。若插值占比超过30%,应警惕原始数据采样率不足或丢包严重。

四、常见误区与复盘

误区 后果 纠正方法
先插值再去噪 噪声被插值放大,后续滤波难以去除 严格按“清洗→去噪→插值”顺序执行
用欧拉角插值姿态 大角度机动时姿态失真,产生虚假误差 姿态插值必须使用四元数SLERP
去噪窗口过大 真实转弯被平滑,评估低估动态误差 用Allan方差确定噪声带宽,窗口不超过0.5 s
坐标变换忽略时间基准 多传感器轨迹时间错位,融合评估失效 统一到UTC或GPS周内秒,检查时间戳单调性
标准化不记录质量标记 评估时无法区分真实误差与插值伪影 每段轨迹附加quality_flag与处理版本号

复盘时,应重点检查预处理参数是否与场景匹配。例如,城市峡谷场景应适当放宽GNSS野值阈值,避免将真实快速机动误判为异常;而开阔高速场景则应收紧阈值。所有参数应写入配置文件,随轨迹数据一同归档,确保评估结果可复现、可审计。

# 预处理配置示例(YAML)
preprocess:
  clean:
    max_speed: 50.0        # m/s
    max_accel: 10.0        # m/s^2
    timestamp_monotonic: true
  denoise:
    gnss_filter: kalman
    kalman_Q: 0.05
    kalman_R: 0.5
    imu_filter: median
    median_window: 5
  interpolate:
    master_rate: 100       # Hz
    position_method: cubic
    attitude_method: slerp
  segment:
    speed_threshold: 0.5   # m/s
    angular_threshold: 0.1 # rad/s
    min_points: 20
  transform:
    target_frame: ENU
    origin: [116.397, 39.908, 50.0]
  standardize:
    format: csv
    fields: [timestamp, x, y, z, qw, qx, qy, qz, quality_flag]
    version: "v2.1"
预处理链中任何一步的参数变更,都必须重新生成质量报告并重新评估。禁止在评估阶段临时调整预处理参数,否则将破坏评估的公正性与可比性。

综上,数据预处理是轨迹质量评估的“地基”。清洗保证数据可用,去噪保留真实特征,插值实现时空对齐,分段揭示局部特性,坐标变换统一空间基准,标准化确保流程可复现。六步协同,才能为后续的误差统计、闭环检测与精度评定提供可靠输入。