PTAM
Klein & Murray 2007 · 论文
一句话总结 — 首次引入将SLAM拆分为并行的跟踪和建图线程这一范式,使实时的基于关键帧的光束法平差成为可能。
问题
MonoSLAM的EKF方法无法扩展到大规模地图:每一帧都要更新所有路标的稠密协方差矩阵,因此代价随地图规模迅速增长,且反复线性化会损害精度。光束法平差(BA)比滤波方法能产生远为精确的结果,但在2007年它被认为太慢,无法实时运行。Klein和Murray(ISMAR 2007,牛津大学)提出,跟踪手持相机和构建地图是可分离的两个问题:将它们解耦为两个线程,BA就可以在后台运行,而跟踪则以帧率运行。
方法与架构
跟踪线程(每帧运行)。 构建一个四层图像金字塔,并在每一层检测FAST角点。相机位姿以 矩阵 的形式存在于 中,通过指数映射以一个六维向量 左乘更新:
地图点通过一个经过标定的、带FOV畸变的相机模型进行投影;每个可见点的 源patch通过一个矩阵 (由源关键帧上单位像素位移反投影到patch平面得到)进行仿射变形,选择使 最接近1的金字塔层级 进行搜索。匹配采用圆形门限内FAST角点位置处的零均值SSD——完全不使用描述子。给定一组找到的patch (噪声为 ),位姿更新通过10次重加权最小二乘迭代最小化一个鲁棒重投影目标函数:
其中 是Tukey双权函数, 为基于中位数的尺度估计。跟踪分为由粗到精的两个阶段:先在大搜索半径内使用50个粗层级点,再在小搜索半径内使用多达1000个点;一个衰减速度运动模型预测先验位姿,跟踪质量会被持续监控,以确保质量差的帧不会进入地图(若完全失败,则由重定位器接管)。
建图线程(异步运行)。 地图通过用户辅助的两视图立体方式启动:在两个按键触发的视图之间跟踪1000个patch,用五点算法+RANSAC计算本质矩阵,进行三角化,假设10厘米基线来固定尺度,并将主导平面(通过RANSAC找到)对齐到 。只有当跟踪质量良好、已经过去至少20帧,且相机与已有关键帧的距离超过一个(随深度缩放的)最小值时,才会插入新的关键帧;新的地图点来自针对最近关键帧的极线搜索。该线程随后在关键帧位姿和地图点上运行BA:
——使用Levenberg–Marquardt方法结合标准的稀疏运动恢复结构技巧,代价随关键帧数量呈 增长。由于全局BA在探索过程中会造成停滞,一种局部BA只调整 = 最新关键帧及其4个最近邻,优化 = 它们能看到的所有地图点,并受到测量这些点的每一个关键帧 的约束(代价大致为 )。空闲时,该线程会改进数据关联:在旧关键帧中测量新特征,并给被Tukey标记为异常值的测量一次”第二次机会”,随后再决定是否删除。
实验结果
所有实验均在一台Intel Core 2 Duo 2.66 GHz的台式机上进行(手持实时操作):
- 对于一个4000点的地图,跟踪代价为每帧总计19.2毫秒——关键帧准备2.2毫秒,特征投影3.5毫秒,patch搜索9.8毫秒,迭代式位姿更新3.7毫秒——即留有余量的实时性能;重定位耗时会飙升到约90毫秒。
- Desk序列(1656帧):最终地图包含57个关键帧和4997个地图点,全程跟踪耗时约20毫秒/帧。
- BA耗时:对于2–49/50–99/100–149个关键帧的地图,局部BA分别为170毫秒/270毫秒/440毫秒,全局BA分别为380毫秒/1.7秒/6.9秒;超过150个关键帧后,全局收敛需要数十秒。构建的最大地图:11000个点,280个关键帧(实际上限约为6000点/150关键帧)。
- 对比EKF-SLAM(SceneLib配合JCBB,合成18.2米轨迹):相对真值的标准差,PTAM为6毫米,而EKF-SLAM为135毫米,PTAM建图达到6600个点,而EKF-SLAM仅为114个;PTAM的跟踪耗时始终保持在约20毫秒左右,而EKF的耗时则从3毫秒随地图规模呈平方增长到40毫秒。
- 演示了在地图上实时运行的桌面AR游戏,但按设计不含回环检测或大规模重定位。
对SLAM的意义
PTAM确立了几乎所有现代SLAM系统仍在遵循的前端/后端分离架构,并通过实验证明了关键帧光束法平差胜过滤波方法——这一结论后来被Strasdat等人的论文”Visual SLAM: Why Filter?”正式论证。关键帧、邻域上的局部BA、后台全局精化、跟踪质量门控:ORB-SLAM本质上就是在这一架构的基础上补充了自动初始化、回环检测和大规模地图管理而完成的系统。
相关条目
- MonoSLAM
- Visual-SLAM why filter?
- ORB-SLAM
- DTAM
- S-PTAM
- Lie groups — PTAM用于跟踪的 位姿参数化方法