经典视觉SLAM框架

SLAM至今已历经三十多年的研究,这里给出经典视觉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的建图功能也不可或缺。

这一点在VINS开源项目(香港科技大学团队基于单目+IMU开发的开源SLAM方案)中也有体现。在回环检测前,SLAM计算得到的位姿与真实位姿之间已经产生了很大的偏差,如下图所示;该偏差只有在相机回到了曾经经过的地方且SLAM成功执行了回环检测后才得到了消除,如下图所示。

回环前:
回环后:

视觉SLAM方案分类

视觉SLAM方案可按照传感器的不同(单目、双目、RGBD、与IMU的组合等)、前端方法的不同(主要分为直接法和特征点法)、后端优化方案的不同(滤波或者非线性优化)、生成地图形式的不同(稀疏地图、稠密地图等)具有不同的划分。这里主要以传感器的不同对slam方案进行简单的介绍。

1)单目slam。只使用一个摄像头采集信息,在尺度完成初始化的情况下(即相机初始阶段进行了一段位移且确定了该段位移的实际大小作为参考),能够完成连续图像间相机位姿的计算与建图。优点在于设备简单,成本低。缺点在于存在尺度漂移现象;图像的深度信息只能通过三角测量计算得到,对环境适应性差;在相机位移较小时计算误差较大,建图精度不高。

2)双目slam。使用双目相机采集信息,双目相机可以通过立体视觉原理计算得到像素深度,这样就不存在单目slam中深度未知的情况。优点在于对环境的适应性要高于单目slam,且能够计算得到像素真实深度;缺点在于像素深度计算量较大,一般通过FPGA或者GPU加速实现实时计算输出。

3)RGBD SLAM。RGBD相机是指能够同时输出RGB图像和对应的深度图的相机,其测量像素深度不再通过耗时的被动双目匹配计算,而是通过激光散斑增加图像纹理加速计算或者硬件测量(结构光、TOF等)实现。因此它可以看做减小了计算量的双目SLAM,但是RGBD相机普遍在室外表现效果不佳,更多用于室内环境。

4)单目/双目+IMU的slam方案,其中IMU主要起到的作用包括(1)解决单目slam的初始化尺度问题(2)追踪中提供较好的初始位姿(3)提供重力方向(4)提供一个时间误差项以供优化。理论上来说IMU提供了冗余的运动信息,通过数据融合可以得到更加精确的运动估计。

单目弊端
单目相机,仅用一支摄像头就能完成SLAM。最大的优点是传感器简单且成本低廉,但同时也有个大问题,就是不能确切的得到深度。

一方面是由于绝对深度未知,单目SLAM不能得到机器人运动轨迹及地图的真实大小,如果把轨迹和房间同时放大两倍,单目看到的像是一样的,因此,单目SLAM只能估计一个相对深度。

另一方面,单目相机无法依靠一张图像获得图像中物体离自己的相对距离。即是说,它的轨迹和地图,只有在相机运动之后才能收敛,如果相机不进行运动时,就无法得知像素的位置。同时,相机运动还不能是纯粹的旋转,这就给单目SLAM的应用带来了一些麻烦。

所以,国内很少有移动机器人厂商会使用单目相机来进行地图构建。

双目立体视觉既可以在运动时估计深度,亦可在静止时估计,消除了单目视觉的许多麻烦。不过,双目或多目相机配置与标定均较为复杂,其深度量程也随双目的基线与分辨率限制。

双目及RGBD
中科慧眼CTO崔峰表示:“双目视觉需要需保证长期在高/低温、震动的环境中,设备两个相机间不会因为热胀冷缩和机械老化发生大的变动,需持续保持良好的一致性,且对于算力要求高,产品化时需将算法移植到嵌入式芯片中。”

而RGBD相机是2010年左右开始兴起的一种相机,简单来讲就是3D深度相机。

它最大的特点是可以通过红外结构光或TOF原理,直接测出图像中各像素离相机的距离。因此,它比传统相机能够提供更丰富的信息,也不必像单目或双目那样费时费力地计算深度。

激光SLAM和基于深度相机的视觉SLAM均是通过直接获取环境中的点云数据,根据生成的点云数据,测算哪里有障碍物以及障碍物的距离。除开RGBO,基于单目、双目、鱼眼摄像机的视觉SLAM方案,则不能直接获得环境中的点云,而是形成灰色或彩色图像,需要通过不断移动自身的位置,通过提取、匹配特征点,利用三角测距的方法测算出障碍物的距离。

开源视觉SLAM方案汇总
目前比较流行的开源视觉SLAM方案如下表所示:

视觉SLAM设备选型

设备选型的重要性
设备选型的重要性不言而喻,毕竟“好模型架不住坏数据”,SLAM模型建立得再好,如果设备采集的数据本身误差过大,计算结果必定也不够理想。先以VINS项目为例,根据论文内容他们的设备型号和具体信息如下。

相机模块:单目相机,型号为MatrixVision的mvBlueFOX-MLC200w,具有全局快门;cmos型号为MT9V034,单色,分辨率为752X480,帧率20Hz

IMU:该模块使用的是大疆的集成飞控模块A3的内置IMU模块,芯片型号为ADXL278和ADXRS290(都为工业级IMU芯片);可以确定A3内置对IMU的校准去躁等处理算法。
由此看来VINS选用的硬件是具有一定要求的,其采集数据的精度也对SLAM算法最终的效果产生正向作用。所以如果我们选用了精度没那么高的消费级IMU配合单目相机采集数据时,VINS的输出结果就不一定能够达到论文中的精度了。

设备类型选择
我们的项目中工作环境为室外,对传感器选型提出了较高要求。以RGBD相机为例,很多基于结构光或者TOF方案的深度摄像头在室外表现不佳,主要原因是室外自然光的影响。个人初步倾向于选用双目或者RGBD(双目某些情况下可视为RGBD)+IMU的方案,主要理由如下:

1)双目/RGBD+IMU的硬件,可在此基础上尝试基于单目/双目/RGBD/单目+IMU/双目+IMU等多种开源SLAM方案;反之单目+IMU的设备对开源方案的限制较大(只能是单目/单目+IMU)

2)单目SLAM在建图方面,尤其是深度估计方面,对场景适应性不好且精度较差。双目/RGBD因为可以计算得到深度,在建图方面相对具有优势,更容易建立“稠密”地图

3)SLAM定位实现中,基于单目的方案其计算量也要比基于双目/RGBD要大,且因为引入了三角测量部分,对于环境适应性较差

所以在选型方面,我主要聚焦在双目/RGBD类型;同时为了加快开发进程,若选择能够提供开发SDK等工具的厂家,可以省去对于相机的标定、数据同步等开发工作。

经过一些筛选后,个人倾向于小觅双目摄像头(据了解,小觅摄像头已停产)、Intel Realsense D453i或ZED2。但因网上资料较少,目前是否有更合适的新产品或迭代新产品,需与厂家沟通确定。

硬件选型

ZED2
产品对比:

Intel Realsense D435i
产品对比:

视觉SLAM方案分类及选型调研相关推荐

  1. 视觉SLAM方案整理及摄像头选型调研(他首推ZED)

    他首推ZED,让我想起李ji也是用的ZED 摘自:https://mp.weixin.qq.com/s/BHFxSbGab_TVr_PxG17VaA 视觉SLAM方案整理及硬件选型调研 新机器视觉 7 ...

  2. 视觉SLAM方案整理及硬件选型调研

    目前个人初步接触视觉SLAM开发相关工作,现在就相关学习做一些总结以加深个人理解,同时也希望能给其他网友提供一些帮助.这篇文章主要是对之前关于视觉SLAM方案和硬件选型调研的总结,文中有关的视频是从y ...

  3. 超全总结!视觉SLAM方案整理及硬件选型(附项目地址)

    编辑丨智东西公开课 本文已获CSDN博主「Mega_Li」授权发布,如需转载请与原作者联系.原文链接:https://blog.csdn.net/lwx309025167/article/detail ...

  4. java开源图像处理ku_83 项开源视觉 SLAM 方案够你用了吗?

    原标题:83 项开源视觉 SLAM 方案够你用了吗? 公众号:3D视觉工坊 主要关注:3D视觉算法.SLAM.vSLAM.计算机视觉.深度学习.自动驾驶.图像处理以及技术干货分享 运营者和嘉宾介绍:运 ...

  5. 开源视觉SLAM方案

    1. Geometric SLAM 这一类是传统的基于特征点.直接法或半直接法的 SLAM,虽说传统,但 2019 年也新诞生了 9 个开源方案. 1.1. PTAM 论文:Klein G, Murr ...

  6. 最新开源视觉 SLAM 方案

    方案分为以下 7 类 2. S-PTAM(双目 PTAM) 3. MonoSLAM 4. ORB-SLAM2 以下 5, 6, 7, 8 几项是 TUM 计算机视觉组全家桶,官方主页 5. DSO 6 ...

  7. 视觉SLAM开源方案汇总及设备选型建议

    作者I Mega_Li 编辑I 3D视觉开发者社区 文章目录 一.SLAM的引入 1.1定义 1.2开发背景 二.视觉SLAM 2.1 经典视觉SLAM框架 2.2视觉SLAM方案的分类 2.3 开源 ...

  8. 全景视觉空间直线检测_视觉SLAM深度解读

    近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前研究的一大热点,今天我们就来详细聊聊视觉SLAM的那些事儿. ...

  9. 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?

    定位技术是机器人实现自主定位导航的最基本环节,是机器人在二维工作环境中相对于全局坐标的位置及其本身的姿态.目前SLAM (Simultaneous Localization and Mapping即时 ...

最新文章

  1. C语言中被常用到的宏
  2. oracle with check option 的作用
  3. antd table设置表格一个单元格的字体颜色_开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件
  4. 使用EF Oracle实现DevExpress绑定大数据的ServerMode模式
  5. oracle 创建表空间_Oracle 创建和管理表
  6. C# DDOS攻击代码
  7. 【接口测试】FitNesse中文指南
  8. java string的内存模型_Java String内存模型
  9. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_15-webpack研究-webpack-dev-server-程序调试...
  10. 组态王通过TCP和MCGS触屏通讯
  11. 我的第一个游戏FoodieThebug完成之后的心得体会--子龙山人
  12. Scrapy 爬取阳光热线问政平台存储为json 文件(使用 CrawlSpider)
  13. 小白爬虫入门~python爬取职友集招聘职位信息
  14. 浏览器网页无法打开麦克风、摄像头
  15. Python爬虫之QQ空间登陆获取信息!
  16. 数据分析师常见面试题.
  17. codeblocks 10.5配置vc2008x64编译器
  18. 集成机器学习服务上架华为应用市场指南
  19. Java011-数组及其常见问题
  20. jQuery中常需引用的jquery.min.js文件的内容

热门文章

  1. 亿万级赛道谁主沉浮,国潮品牌直播电商如何破局增长?
  2. 带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
  3. 对塑料瓶无知真是害死人 从塑料瓶底数字看其毒性[转]
  4. 基于SECS协议开发的简明教程(4)
  5. 技术派-在工作线程与UI线程中创建对话框
  6. Hash Rush 基于以太坊的科幻 PC 即时战略游戏
  7. 阿里云短信服务 isv.INVALID_JSON_PARAM
  8. [置顶] 游戏开发技术总结(经典之作)第八集 脚踏实地-----游戏角色自动寻路、路径搜索算法...
  9. 国aa级台灯什么意思?台灯有必要买AA级的吗
  10. 如何在不同链部署地址完全相同的合约