一、轨迹评估概述
做SLAM这么多年,我经常被问到这样一个问题:
「你怎么知道你写的算法到底跑得好不好?」
嗯,这确实是个好问题。你写了个视觉SLAM系统,跑了个数据集,看着轨迹挺像那么回事。但到底准不准?误差有多大?哪个环节拖了后腿?
这时候,就需要轨迹评估登场了。
1.1 什么是轨迹评估
说白了,轨迹评估就是拿你算法估计出来的轨迹,跟真实的轨迹(也就是真值)做对比,算一算它们之间的差距。
我习惯把轨迹评估比作「考试阅卷」:
- 估计轨迹 = 你交上去的答卷
- 真值轨迹 = 标准答案
- 评估指标 = 评分标准
你想想看,没有标准答案,你怎么知道自己考了多少分?
核心定义:轨迹评估是通过计算估计轨迹与真值轨迹之间的偏差,来量化SLAM系统定位精度的方法。
1.2 为什么需要轨迹评估
我刚开始做SLAM的时候,也犯过这样的错误——跑了个数据集,看着轨迹图挺漂亮,就以为算法没问题。结果后来换了场景,直接崩了。
为什么会这样?因为肉眼不可靠。人眼对几厘米的误差根本不敏感,但SLAM系统里,这种误差可能意味着回环检测失败、地图构建出错。
具体来说,轨迹评估有这几个作用:
- 量化精度——用数字说话,而不是「我觉得还行」
- 定位问题——哪个时间段、哪个区域误差大,一目了然
- 对比算法——你的ORB-SLAM3和我的DROID-SLAM,谁更准?
- 调参依据——改了个参数,精度提升了还是下降了?
- 论文必备——没有评估结果,审稿人直接拒
我的经验:我曾经花了两周调一个回环检测的参数,每次都是肉眼看看轨迹图,觉得「差不多」。后来用评估工具一跑,发现误差反而变大了。嗯,从那以后我再也不信自己的眼睛了。
1.3 评估指标分类
轨迹评估的指标,主要分两大类:绝对指标和相对指标。
我习惯这么理解:
- 绝对指标——看全局,你的轨迹整体漂了多少
- 相对指标——看局部,你的轨迹在短时间内的抖动有多大
绝对指标
| 指标 | 全称 | 含义 |
|---|---|---|
| ATE | Absolute Trajectory Error | 绝对轨迹误差,衡量整体漂移 |
| RMSE | Root Mean Square Error | 均方根误差,ATE的常用统计形式 |
ATE的计算其实不复杂:先把估计轨迹和真值轨迹对齐(通常用Sim(3)变换),然后逐帧算位置差。
# 伪代码示意
for each timestamp t:
error_t = ||p_est_t - p_gt_t||
ATE_RMSE = sqrt(mean(error_t^2))
注意:ATE要求两条轨迹的时间戳对齐。我遇到过好几次因为时间戳没对齐,算出来的ATE大得离谱。排查了半天才发现是数据同步的问题。
相对指标
| 指标 | 全称 | 含义 |
|---|---|---|
| RPE | Relative Pose Error | 相对位姿误差,衡量局部一致性 |
| RE | Relative Error | 相对误差,RPE的另一种叫法 |
RPE关注的是「短时间内的相对运动准不准」。比如你走了一米,算法算出来是0.98米,那这2%的误差就是RPE。
我个人觉得,RPE比ATE更能反映SLAM系统的「手感」。ATE大可能是整体漂移,但RPE大说明你每走一步都在抖,这在AR/VR场景里是致命的。
1.4 常见数据集介绍
做轨迹评估,首先得有数据。这里介绍几个我常用的数据集:
KITTI
- 场景:车载,城市道路、高速公路
- 传感器:双目相机、LiDAR、GPS/IMU
- 真值:GPS/INS组合导航,精度厘米级
- 特点:规模大,场景丰富,是视觉SLAM的标配
我记得第一次跑KITTI的时候,被它的数据量吓了一跳。一个序列就几百米,跑完要好久。但它的真值质量确实好,业界公认。
TUM RGB-D
- 场景:室内,桌面、办公室、走廊
- 传感器:RGB-D相机(Kinect)
- 真值:运动捕捉系统,精度毫米级
- 特点:有手持和机器人两种模式,适合评估视觉里程计
TUM数据集有个好处——它提供了评估脚本。你跑完算法,直接拿它的工具一算,ATE、RPE全出来了。省事。
EuRoC
- 场景:无人机,室内厂房
- 传感器:双目相机、IMU
- 真值:激光跟踪仪,精度毫米级
- 特点:有快速运动和光照变化,挑战性大
EuRoC是我个人最喜欢的VIO评测数据集。它的运动很激进,无人机各种翻滚、急停,能把你算法的短板全暴露出来。
其他数据集
| 数据集 | 场景 | 传感器 | 特点 |
|---|---|---|---|
| ICL-NUIM | 室内(合成) | RGB-D | 有完美真值,适合调试 |
| ETH3D | 室内/室外 | 多相机 | 高精度真值,场景多样 |
| HILTI | 室内/室外 | LiDAR+相机+IMU | 多传感器融合,挑战大 |
我的建议:刚开始学轨迹评估,先从TUM RGB-D入手。它的工具链最成熟,文档最全。等你把ATE、RPE这些概念搞明白了,再上KITTI和EuRoC。
1.5 知识体系总览
这一章的内容比较多,我画了张图帮你理一理:
这张图把轨迹评估的核心脉络串起来了。你从「为什么需要评估」出发,理解评估的意义;然后掌握「绝对指标」和「相对指标」这两把尺子;最后通过「常见数据集」来实践验证。
说白了,轨迹评估就是SLAM领域的「度量衡」。没有它,你的算法再好也没法证明。有了它,你才能有理有据地说:「我的算法比别人的强」。
嗯,这一章就到这里。下一章我们开始动手,用Python和evo工具包来实际跑一遍轨迹评估。到时候你会发现,原来那些指标算起来并不复杂。