SLAM的英文全程是 Simultaneous Localization and Mapping,中文称作「同时定位与地图创建」。SLAM试图解决这样的问题:一个机器人在未知的环境中运动,如何通过对环境的观测确定自身的运动轨迹,同时构建出环境的地图。SLAM技术正是为了实现这个目标涉及到的诸多技术的总和。 [img]https://ss.csdn.net/p?http://mmbiz.qpic.cn/mmbiz_jpg/G ... rom=5&wx_lazy=1[/img] SLAM技术距今已有 30 余年的发展历史,但相比于深度学习、大数据等词汇,听过的人少之又少,国内从事相关研究的机构更是屈指可数。直至最近三年,SLAM才逐渐成为国内机器人和计算机视觉领域的热门研究方向,在当前比较热门的一些创业方向中崭露头角: VR/AR 方面,根据 SLAM 得到地图和当前视角对叠加虚拟物体做相应渲染,这样做可以使得叠加的虚拟物体看起来比较真实,没有违和感; 无人机领域,SLAM可以构建局部地图,辅助无人机进行自主避障、规划路径; 无人驾驶领域, SLAM 技术可以提供视觉里程计功能,然后跟其他的定位方式融合; 机器人定位导航领域,SLAM 可以用于生成环境的地图。基于这个地图,机器人执行路径规划、自主探索、导航等任务。
提起SLAM的重要性,有人说,SLAM是无人驾驶技术的灵魂;也有人曾打比方说,手机离开了WIFI和数据网络,就像无人车和机器人离开了SLAM一样。之所以没有受到广泛关注,主要原因在于这个方向难度很大,入门的门槛太高,具体来讲有以下几个原因: 1. 入门资料很少:虽然国内也有部分人在做,但这方面的中文资料几乎没有,入门教程匮乏,直至2017年4月《视觉SLAM十四讲:从理论到实践》的问世。 2. 难以实现:SLAM是一个完整的系统,由许多个分支模块组成。现在经典的方案是“图像前端,优化后端,闭环检测”的三部曲,很多文献看完了自己实现不出来。 3. 动手编程需要大量的先决知识:首先,你要会C和C++,网上很多代码还用了11标准的C++;第二,要会用Linux;第三,要会cmake,vim/emacs及一些编程工具;第四要会用openCV, PCL, Eigen等第三方库。只有学会了这些东西之后,你才能真正上手编一个SLAM系统。如果你要跑实际机器人,还要会ROS。
上述原因直接或者间接导致,国内SLAM技术人才稀缺,同时,机器人、无人机、无人驾驶、虚拟现实等企业的需求旺盛,供不应求的局面逐渐铺开。
|