在SLAM研究中,我们通常需要在各数据集上测试各个方案的性能情况。如下主要对表1中6个视觉SLAM方案进行相关测试,测试其在不同场景、要求下的精度和鲁棒性,并给出最终方案选型。
【由于时间、场地等原因,整合前人测试结果,在此附上链接,谢谢大神的分享!】
**
开源SLAM方案选型:
**
**
数据集:
**
一、ORB-SLAM2
检测流程:Kinect生成地图【地图主要可见的有关键帧(包括相机的pose,相机的内参,ORB特征),3D的地图点( 空间中3D位置,法线方向,ORB的描述子),词袋向量,共视图等】 → 保存地图 → 加载地图和重定位
缺点:1、不能解决实际问题。它基于特征点法,建的图是稀疏的,只能满足定位需求,而无法提供导航、避障、交互等诸多功能。而且目前还没有开放存储和读取地图后重新定位的功能。
2、受光照和车辆、行人等动态物体的影响太大
后续工作:对前端数据进行轨迹的优化和回环,稠密建图
【自我备注:1、保存稀疏地图的MapPoint和KeyFrame成.bin格式 ;2、如果保存成pcd格式,那么关键帧与关键点之间的关系没有办法保存。。。即pcd保存的地图信息并不完整】
二、VINS MONO
参考博文:https://blog.csdn.net/Darlingqiang/article/details/80689123
实现原理:用紧耦合方法实现的,通过单目+IMU恢复出尺度
目标:AR
整体框架:
1、Measurement Preprocessing:观测值数据预处理,包含图像数据跟踪IMU数据预积分;
2、Initialization:初始化,包含单纯的视觉初始化和视觉惯性联合初始化;
3、Local Visual-Inertia BA and Relocalization:局部BA联合优化和重定位,包含一个基于滑动窗口的BA优化模型;
4、 Loop detection and Global Pose Graph Optimization:回环检测;全局图优化,只对全局的位姿进行优化;
代码解读:
VINS代码主要包含在两个文件中:
1、feature_tracker 接收图像,使用KLT光流算法跟踪
2、vins_estimate 包含相机和IMU数据的前端预处理(也就是预积分过程)、单目惯性联合初始化(在线的标定过程)、基于滑动窗口的BA联合优化、全局的图优化和回环检测
vins主要就是两个节点:
1、一个节点算前端,为feature_tracker_node.cpp
2、另一个节点算后端,为estimator_node.cpp