目前个人初步接触视觉SLAM开发相关工作,现在就相关学习做一些总结以加深个人理解,同时也希望能给其他网友提供一些帮助。这篇文章主要是对之前关于视觉SLAM方案和硬件选型调研的总结,文中有关的视频是从youtube上收集的,上传到了百度网盘(链接:https://pan.baidu.com/s/1-5B4q1rtL3XcCEIDzou0JA 密码:lfm1),有需自取。由于个人能力有限,不保证文中说法的准确性,更多的是互相交流学习。
一、SLAM的引入
1.1定义
SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。如果这里的传感器主要为相机,那就称为“视觉 SLAM”。
1.2开发背景
图1-1 SLAM中建图的分类与作用
引入SLAM的主要目的如下:
1)建图。使用SLAM可在传感器具有良好表现的环境下建立精度较高的全局地图,建立好的地图会为后面的定位、导航等功能提供服务。
2)定位。视觉SLAM中可通过帧间数据匹配计算相机的相对变换,对应的就是机器人的位姿信息,不过该计算结果中存在累计误差的影响;利用SLAM建立的全局地图,通过相机采集到的环境信息与地图进行匹配可以减小累积误差的影响,获得更加精准的机器人位姿。
3)导航。如果我们建立的地图中包含了“哪些地方可以通过,哪些地方不能通过”的信息,那么我们可以以此实现机器人在地图中从某一起点到某一终点的路径规划与跟踪,并能够对地图中固定障碍物实现避障。但这对我们能够建立的地图有要求,需要是“稠密”地图。
二、视觉SLAM
2.1 经典视觉SLAM框架
SLAM至今已历经三十多年的研究,这里给出经典视觉SLAM框架,这个框架本身及其包含的算法已经基本定型,并且已经在许多视觉程序库和机器人程序库中提供。
图2-1 经典视觉SLAM框架
我们把整个视觉 SLAM 流程分为以下几步:
1)传感器信息读取。在视觉 SLAM 中主要为相机图像信息的读取和预处理。如果在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。
2)视觉里程计 (Visual Odometry, VO)。视觉里程计任务是估算相邻图像间相机的运动,以及局部地图的样子,VO 又称为前端(Front End)。
3)后端优化(Optimization)。后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在 VO 之后,又称为后端(Back End)。
4)回环检测(Loop Closing)。回环检测判断机器人是否曾经到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
5)建图(Mapping)。它根据估计的轨迹,建立与任务要求对应的地图。
某些使用场合中,我们只截取SLAM的部分功能应用到实际场景中。举例来说只使用VO部分我们可以得到连续的相机相对运动信息,虽然该运动信息存在累计误差,但应用中对此要求不高甚至不做要求,譬如VR头显中计算头显设备运动时的位姿。
不过一般在机器人应用场景中,个人认为建图功能也是不可或缺的。因为前端包括后端优化得到的运动信息始终包含累积误差,该累积误差在SLAM中只能通过回环检测(机器人回到某一处曾经经过的地方且系统识别出来)或者与事先建立好的具有较高精度的全局地图匹配来消除。但是机器人在实际运动中,不能保证全局路径一定会有重叠处,也就是说在SLAM计算中很可能出现不存在回环的情况,此时累积误差只能通过与全局地图匹配来消除,因此SLAM的建图功能也不可或缺。
图2-2 回环检测消除累积误差
这一点在VINS开源项目(香港科技大学团队基于单目+IMU开发的开源SLAM方案)中的测试视频(见“视频/VINS/[Open Source] VINS-Mono_ Monocular Visual-Inertial System in EuRoC MAV Dataset (MH_05 V1_03).mp4”)中也有体现。在回环检测前,SLAM计算得到的位姿与真实位姿之间已经产生了很大的偏差,如图2-3所示;该偏差只有在相机回到了曾经经过的地方且SLAM成功执行了回环检测后才得到了消除,如图2-4所示。
图2-3 未进行回环检测前的位姿累积误差
图2-4 回环检测消除累计误差
2.2视觉SLAM方案的分类
视觉SLAM方案可按照传感器的不同(单目、双目、RGBD、与IMU的组合等)、前端方法的不同(主要分为直接法和特征点法)、后端优化方案的不同(滤波或者非线性优化)、生成地图形式的不同(稀疏地图、稠密地图等)具有不同的划分。这里主要以传感器的不同对slam方案进行简单的介绍。
1)单目slam。只使用一个摄像头采集信息,在尺度完成初始化的情况下(即相机初始阶段进行了一段位移且确定了该段位移的实际大小作为参考),能够完成连续图像间相机位姿的计算与建图。优点在于设备简单,成本低。缺点在于存在尺度漂移现象;图像的深度信息只能通过三角测量计算得到,对环境适应性差;在相机位移较小时计算误差较大,建图精度不高。
2)双目slam。使用双目相机采集信息,双目相机可以通过立体视觉原理计算得到像素深度,这样就不存在单目slam中深度未知的情况。优点在于对环境的适应性要高于单目slam,且能够计算得到像素真实深度;缺点在于像素深度计算量较大,一般通过FPGA或者GPU加速实现实时计算输出。
3)RGBD SLAM。RGBD相机是指能够同时输出RGB图像和对应的深度图的相机,其测量像素深度
今天的文章视觉slam优缺点_硬件测试用例模板和例子「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/75567.html