作者:Raúl Mur-Artal and Juan D. Tardós
单位:西班牙萨拉戈撒大学
期刊:IEEE TRANSACTIONS ON ROBOTICS(二区)
时间:2017
摘要:本文提出了ORB-SLAM2,它是基于单目、双目或RGB-D相机的一个完整的SLAM系统,其中包括地图重用、回环检测和重定位功能。这个系统可以适用于多种环境,无论是室内小型手持设备,还是工厂环境中飞行的无人机和城市中行驶的车辆,其都可以在标准CPU上实时运行。该系统的后端使用基于单目和双目观测的光束法平差法(bundle adjustment),这使得其可以精确估计轨迹的尺度。该系统包含一个轻量级的定位模式,它使用视觉里程计追踪未建图区域并匹配地图点,实现零漂移定位。在29个常用公开数据集上的实验评估显示本文方法在大多数情况下是精度最高的SLAM解决方案。我们公开了该系统的源代码,从而促进SLAM领域发展,同时也给其他领域的研究者提供一套能够开箱即用的SLAM解决方案。
具体实现:
其中,追踪线程:对图像预处理后,先进行初始跟踪,此时分了三种模式:pose prediction——参考关键帧跟踪,Motion Model——恒速模型,Relocalization——重定位跟踪;之后Track Local Map是更精确地跟踪,这里面只针对某一帧对位姿做BA;之后,根据跟踪结果,判断是否插入关键帧。
局部建图线程:从这之后都是对关键帧进行操作,和普通帧无关了。这里面有一个local BA,就不是针对某一帧了,而是好几帧,不只对位姿,也对地图点做BA。最后对关键帧进行筛选后,把留下来的放入recognition database。
此外一些重点:
1.近点和远点:如果一个立体关键点的深度值小于双目/RGB-D的基线长度的40倍,则认为它是近处点,否则认为它是远处点。近处关键点可以被安全地三角化,因为它的深度可被精确估计,且提供了尺度、平移和旋转的信息。另一方面,远处关键点虽然提供了精确的旋转信息,但不能提供精确的尺度和平移信息。所以当远处关键点在多个视图中存在时,我们才对其进行三角化。 因此,尽量多用近点,若近点比较少时就多插一些关键帧。如果发现跑着跑着位姿飞了,可能就是近远点的问题。
2.关于BA,文中涉及了追踪线程的Motion-only BA,局部建图的local BA,回环线程的full BA。
Motion-only BA用来优化相机的R,t,最小化相匹配的世界坐标系下的三维点Xi和关键点xi(.)之间的重投影误差;
在local BA中代价函数中,包括了共视关键帧KL和其他关键帧KF。共视关键帧KL是共视至少超过15个地图点才算,那么也能看到一些共视地图点,但不到15个的关键帧就称为其他关键帧KF(个人理解),其他关键帧KF参与代价函数的计算,但不会被优化。
结论:我们提出了一个完整地基于单目、双目或RGB-D传感器的SLAM系统,其可以在标准CPU上实时实现重定位、回环检测和重用地图。我们的重点在于建立全局一致的地图,用于在实验中所介绍的大规模环境中进行长期定位。我们提出的包含重定位功能的定位模式,是一种可以在已知环境中进行鲁棒的、零漂移的、轻量级的定位方法。该模式可适用于特定应用,例如在环境建图良好的虚拟现实中追踪使用者的视点。
与当前最好的SLAM系统的对比,ORB在大多数情况下达到了最高的精度。在KITTI视觉里程计基准测试中,ORB-SLAM2是目前最好的双目SLAM解决方案。很重要的是,与最近流行的双目视觉里程计方法相比,ORB-SLAM2实现了在已建图区域的零漂移定位。
令人惊讶的是,我们的RGB-D结果显示,如果需要精度最高的相机定位,那么BA的表现比直接法或ICP更好,另外它的计算量也更小,不需要依赖GPU就可以实时运行。
我们发布了系统源代码、例子和使用说明,因此其他研究者可以很方便地使用本系统。据我们所知,ORB-SLAM2是第一个在单目、双目或RGB-D输入下都可以工作的开源视觉SLAM系统。另外,我们的源代码包括了一个增强现实的应用例子,其使用单目相机,用于展示我们的解决方案的可能性。
未来工作:未来的研究方向可能包括:非重叠多幅相机、鱼眼相机、全景相机支持,大规模稠密融合、协作建图以及增强运动模糊的鲁棒性。
笔记:
1.启发式算法
从纯算法的角度来讲,分两大类:最优化方法和启发式算法。
最优化方法包括:最速下降法、牛顿迭代法、线性规划、增广Lagrange函数法等等。
启发式算法包括:模拟退火算法、遗传算法、列表搜索算法、进化规划、人工神经网络等等。
简单来理解这两者之间的区别就是:问题的解空间较小时,利用最优化方法,可以找到唯一的全局最优解。问题的解空间较大时,利用最优化方法找不到最优解、甚至次优解也找不到,这时可以利用启发式算法来寻找一个次优解来代替全局最优解。
总结:(来自小六的课程)
ORB-SLAM2特点:
1. 所有的任务(跟踪/局部地图/闭环/重定位)采用相同的特征,使得系统更高效、简单可靠。
2. ORB特征具有旋转/光照不变性,无需GPU即可实时。
3. 共视图使得跟踪/建图控制在局部共视区域,与全局地图大小无关,可以在大场景下运行。
4. 使用Esseÿtial Graph来优化位姿实现回环检测,耗时少精度高。
5. 实时重定位使得在跟踪丢失后可以恢复位姿,增强地图重用性。
6. 单目初始化和应用场景解耦,不管是平面/非平面场景,都可以自动初始化,无需人工干预。
7. 地图点和关键帧创建比较宽松,但后续会进行严格筛选,剔除冗余关键帧和误差大的地图点,增加建图过程的弹性,在大旋转、快速运动、纹理不足等恶劣情况下可以提高跟踪的鲁棒性。
8. 相比于直接法,可以用于宽基线匹配,更适合于对深度精度要求较高的三维重建。
9. 适用于手持设备、汽车、机器人。
10. 集各种优秀的算法于一身,特征点法SLAM中最佳方案。
ORB-SLAM2不足:
1. 相比于直接法,特征提取比较耗时,运行速度没有直接法高。
2. 相比于直接法,在弱纹理/重复纹理/图像模糊的场景下容易跟踪丢失。
3. 产生的地图比较稀疏。
备注:翻译版本https://www.cnblogs.com/mingruiyu/p/12991119.html