3. 轨迹数据采集四大指标:看懂数据质量的门道

做轨迹输出,数据采集是第一步。但采集回来的数据到底能不能用?质量怎么样?这就是我们今天要聊的话题。

我个人习惯把这四个指标称为“数据质量四件套”——采样率、覆盖范围、精度、噪声水平。理解透它们,你就能一眼看出数据的好坏。

轨迹数据采集四大指标 数据采集质量 采样率 单位:Hz 覆盖范围 空间/时间维度 精度 单位:米 噪声水平 RMS / 标准差 四个指标相互影响,需要综合评估

3.1 采样率:数据的时间密度

采样率,说白了就是单位时间内采集多少个轨迹点。单位是赫兹(Hz)或秒。

举个简单的例子:GPS接收机输出频率是10Hz,那就意味着每0.1秒输出一个位置点。10秒下来,你就有100个点。

采样率的重要性体现在哪?

  • 高频运动需要高采样率:汽车急转弯、无人机快速变向,采样率低了轨迹会“断片”。
  • 低频运动可以降低采样率:步行、仓储AGV,1-5Hz基本够用。
  • 影响后端处理:采样率直接影响滤波、融合、平滑的效果。
注意:不是采样率越高越好。我曾经见过一个团队,把IMU的采样率开到1000Hz,结果数据量大到处理不过来,还引入了大量高频噪声。后来降到200Hz,效果反而更好。关键是匹配你的应用场景。

实际项目中,我习惯这样评估采样率是否合理:

# 场景:高速车辆轨迹,最高速度 120km/h ≈ 33.3m/s
# 要求:轨迹点间距不超过 2 米
# 所需采样率 = 33.3 / 2 ≈ 17 Hz

# 场景:步行定位,速度 1.5 m/s
# 要求:间距不超过 0.5 米
# 所需采样率 = 1.5 / 0.5 = 3 Hz

你想想看,如果你的场景是无人机编队或者高速赛车,采样率低于20Hz基本没法做。反过来,做室内人员定位,5Hz就绰绰有余。

3.2 覆盖范围:数据的边界

覆盖范围包含两个维度:空间覆盖和时间覆盖。

维度 定义 实际含义
空间覆盖 轨迹覆盖的地理区域大小 整个园区?整栋楼?还是某个房间?
时间覆盖 数据持续采集的时长 是否跨越了不同时段、不同天气、不同季节?

我在做室内定位项目时遇到过一个问题:某个走廊的Wi-Fi信号采集只覆盖了工作日白天,但周末夜间信号特性有很大变化。结果生成的指纹库在周末误差直接翻倍。

覆盖范围不足的常见表现:

  • 轨迹在某个区域突然中断
  • 定位精度在边界区域急剧下降
  • 某些时间段数据完全缺失
我的建议:采集前先画一张路线图。确保关键路径、边界区域、拐角、信号遮挡区都覆盖到。时间上尽量拉长到24小时,别偷懒。

3.3 精度:数据与真实的距离

精度是个好东西,但也是最容易被误解的概念。精度不是固定值,而是统计结果。

我记得有一个很经典的案例:某厂商宣称定位精度“优于1米”,但拿到数据一看——95%的点在1米以内,剩下5%跑到10米开外去了。你想想看,这能叫“1米精度”吗?

精度的几种度量方式:

  1. 均方根误差:最常用,对离群点敏感
  2. CEP50:圆概率误差50%,即50%的点落在该半径内——做消费级产品常用
  3. RMSE:均方根误差,学术论文和精密定位用得多
  4. 最大误差:最差情况,安全关键系统必须看

实际工作中我会这样使用精度指标:

# 假设真值已知,对比采集坐标与真值
真值坐标: (x0, y0)
测量坐标: (x1, y1)
误差: sqrt((x1-x0)² + (y1-y0)²)

# 100个点的误差分布
平均误差: 0.8m
RMSE: 1.2m
CEP50: 0.6m
最大误差: 3.5m
避坑指南:我曾经碰过一个数据集,标称精度0.5米,结果在隧道里误差飙到30米。为什么?因为它没有考虑GNSS信号遮挡。所以看精度一定要看“在什么条件下”。分离条件谈精度,都是耍流氓。

3.4 噪声水平:数据的信噪比

噪声水平,说白了就是轨迹点抖不抖。你画一条直线,结果采集的点上下乱跳,这就是噪声。

噪声的来源很多:

  • GNSS多路径效应(城市峡谷里尤其明显)
  • IMU零偏和随机游走
  • Wi-Fi信号波动
  • 传感器采样抖动

衡量噪声的常用指标:

指标 英文 说明
标准差 Standard Deviation 静态场景下最直观,单位米
RMS Root Mean Square 动态场景的噪声度量
功率谱密度 PSD 分析噪声频率分布,滤波器设计必看
怎么判断噪声是否可以接受?我有个简单方法:把轨迹画出来肉眼看一下。如果轨迹看起来像“喝了三杯咖啡的手绘”,那就说明噪声高了。再用标准差量化,0.5米以内算正常,超过1米就得处理。

实际项目里,我遇到过最头疼的情况是噪声在时间和空间上不均匀。某个区域噪声0.2米,换了个区域就跳到2米。这种时候单纯用全局滤波效果很差,得做自适应滤波。

# 简易噪声评估:连续10个静态点的坐标标准差
points = [(1.1, 2.0), (1.3, 2.1), (0.9, 1.9), 
          (1.2, 2.2), (1.0, 2.0), (1.1, 1.8),
          (1.4, 2.0), (1.0, 2.1), (1.2, 1.9), (1.1, 2.0)]

import numpy as np
x_std = np.std([p[0] for p in points])
y_std = np.std([p[1] for p in points])

# 如果 x_std > 0.5 或 y_std > 0.5,说明噪声偏大
# 需要检查硬件或环境干扰

核心总结:四个指标不是孤立的。采样率太低会导致精度下降(因为插值误差大),覆盖范围不够会让噪声统计失真,精度差往往意味着噪声水平也高。评估轨迹数据质量时,一定四个指标一起看。

嗯,这里要注意一点:这四个指标的评估方法会因为传感器类型不同而变化。GPS看HDOP和卫星颗数,IMU看Allan方差,Wi-Fi看RSSI波动。但不管传感器类型,底层的逻辑是一样的——数据密度够不够、范围全不全、准不准、干不干净。