4. 数据预处理
轨迹质量评估的准确性,很大程度上取决于输入数据的“干净程度”。原始轨迹数据通常来自GNSS接收机、IMU、视觉里程计、激光雷达或组合导航系统,受传感器噪声、遮挡、多路径、丢包、时间戳漂移等因素影响,直接用于评估会引入大量伪误差。数据预处理的目标,是把异构、含噪、不完整的原始观测,转换为时空对齐、尺度统一、语义清晰的标准轨迹序列,为后续的误差统计、闭环检测和精度评定提供可信输入。
一、核心原理:六步预处理链
完整的轨迹预处理通常包含六个环节:清洗、去噪、插值、分段、坐标变换与标准化。它们并非严格串行,实际工程中常根据数据质量进行迭代组合。下图展示了从原始观测到标准轨迹的数据流与关键操作。
二、方法流程与关键操作
清洗是第一步,主要解决“数据本身不可用”的问题。常见操作包括:去除重复时间戳记录、剔除速度或加速度超出物理极限的野值、修复因丢包导致的空帧、统一时间戳格式并检查单调性。清洗阶段应保留原始数据副本,所有剔除操作记录索引与原因。
去噪针对观测噪声。GNSS位置噪声可用滑动平均或卡尔曼滤波抑制;IMU角速度噪声适合低通滤波或小波变换;视觉轨迹的抖动可用样条平滑。需注意:去噪强度过大会抹平真实机动特征,导致评估时低估动态误差。建议先用Allan方差分析噪声特性,再选择滤波器参数。
插值解决采样率不一致与时间戳不对齐问题。多传感器融合时,常以主传感器时间轴为基准,对从传感器进行线性插值或样条插值。位置插值推荐线性或三次样条,姿态插值必须使用球面线性插值(SLERP),避免欧拉角插值带来的万向节死锁。
分段将长轨迹按运动状态切分为静止、直线、转弯、加减速等片段。分段的意义在于:不同运动状态下的误差特性差异显著,整体统计会掩盖局部问题。常用方法有基于速度阈值、基于角速度变化率、基于隐马尔可夫模型的状态分割。
坐标变换把不同来源的轨迹统一到同一坐标框架。典型流程是:WGS84经纬高 → ECEF地心直角坐标 → ENU局部切平面坐标。若涉及多传感器,还需利用外参矩阵将各传感器轨迹变换到车体坐标系。时间基准也必须统一,通常以UTC或GPS周内秒为基准。
标准化是最后一步,输出统一格式的轨迹文件。包括:单位统一(米、弧度、秒)、字段命名规范、质量标记(如“插值段”“低置信度段”)、元数据封装(传感器型号、标定参数、处理版本)。标准化后的轨迹才能进入评估流水线。
三、案例场景:城市峡谷中的组合导航轨迹
某城市峡谷场景中,GNSS信号频繁遮挡,组合导航输出轨迹出现明显跳变。预处理流程如下:
- 清洗:剔除3段因多路径导致的水平位置跳变(速度>40 m/s),修复2处时间戳回退。
- 去噪:对IMU角速度采用5点中值滤波,对GNSS位置采用卡尔曼滤波,Q=0.05,R=0.5。
- 插值:以IMU 100 Hz时间轴为基准,对GNSS 10 Hz位置进行三次样条插值,姿态用SLERP。
- 分段:按速度阈值切分为12段,其中3段为静止,5段为直线,4段为转弯。
- 坐标变换:WGS84 → ENU,原点取起点经纬高,外参使用出厂标定值。
- 标准化:输出CSV格式,字段为timestamp,x,y,z,qw,qx,qy,qz,quality_flag。
四、常见误区与复盘
| 误区 | 后果 | 纠正方法 |
|---|---|---|
| 先插值再去噪 | 噪声被插值放大,后续滤波难以去除 | 严格按“清洗→去噪→插值”顺序执行 |
| 用欧拉角插值姿态 | 大角度机动时姿态失真,产生虚假误差 | 姿态插值必须使用四元数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"
综上,数据预处理是轨迹质量评估的“地基”。清洗保证数据可用,去噪保留真实特征,插值实现时空对齐,分段揭示局部特性,坐标变换统一空间基准,标准化确保流程可复现。六步协同,才能为后续的误差统计、闭环检测与精度评定提供可靠输入。