基本概念
SLAM全称Simultaneous Localization and Mapping,即同时定位与制图。定位的概念很好理解,如果一个机器人来到陌生的环境,它需要知道自己在哪儿,数学上来说就是知道自己的坐标,机器人如果在移动,就需要时刻的坐标更新。制图的意思是指对周围环境的了解,对周围环境的了解能帮助你更好地定位自己。制图分为稀疏制图(sparse mapping)和稠密建图(dense mapping)。稀疏制图表示你对周围的环境只有部分的了解,而稠密建图则表示你对周围的环境的每一个点都清楚。打个比方,你和父母一起出游,结果走散了,你给父母打电话,他们问你在哪儿,这时候你需要定位了(咳咳假设你不能直接发定位给他们),你告诉他们:"我在xx路上,后面有一个xx楼,上面写着xxx。"你说的内容,提取了当前环境比较特征的部分,而这些比较特征的部分,这些就足够帮住确定你的位置了,这就属于稀疏建图。如果你告诉父母:"我在xx路上,前面是xx,后面是xx,左边是xx,右边是xx,斜前方是xx,斜后方是xx....."总之你把你周围的一切东西都描述了出来,这就就是稠密建图。稠密建图当然能帮助你定位,但很显然,如果你只是想单纯地定位,你给出的信息就太冗余了。所以SLAM中的定位只需要稀疏建图就可以了,你了解周围环境的一些特征,就足够能确定你的坐标了。
实际的稀疏建图,是提取环境中一些比较特征的点。如果你有一个相机,在获取一张照片之后,根据特定的算法,能把照片上一些比较有特色的点找出来,这些比较特色的点就能帮助你定位。总的来说SLAM里的地图不是大家想象中的百度地图高德地图google地图那样,而是一些从环境中提取出来的稀疏的比较有特点的点。
关于定位,还得介绍一下室内外的定位方法。在室外的话,利用GPS直接定位是很好的选择,不过普通民用GPS精度一般,误差可以有3米左右,也有高精度的GPS,误差可以到达厘米级,但是价格很贵。关于SLAM的室外应用,很多人肯定很感兴趣无人车方面的技术。无人车现在分级是L0~L5相信这个大家很多都听说过。其中有部分公司达到了L4级的无人车系统,这意味着在提供一定的辅助条件下,汽车可以自动驾驶。而这个辅助条件,比如说有预先制好的地图。再用前面那个你需要给父母提供你位置信息的例子来说,你的父母如果对当地很熟悉,也就是他们脑海中已经有地图了,你打电话的内容就可能更省略:"我在XX楼旁边“他们就能找到你了。回到无人车的例子,如果周围的环境已经在出发前就被知道了,无人车就能省掉一部分计算力并且定位的精度更高。如何预先知道环境呢?在现实中,可能专门有一辆车,利用激光雷达(lidar)在一条路上先开一次,获取到周围环境的3D点云,储存起来,这样地图就预先构建好了,能省掉很大的计算力(就好像之前的例子你给父母提供位置信息时能少说话)。所以说严格来讲目前大多数公司的无人车在室外并不是完全使用SLAM的技术,他们不仅有SLAM的影子(利用激光雷达或者相机等帮助定位并提取路人,车子等特征),同时也借助了预先制好的地图和GPS等其他传感器辅助定位,以达到尽可能好的效果。虽然不是完完全全的自动化,但是L4级的无人驾驶还是很有意义的。比如说应用于公交车或者其他只在限定范围内运动的车辆,我们完全可以对周围的道路进行预先制图从而节省汽车在真正行驶过程中的计算量。甚至普通家用车,你如果大多数时候只在某个城市什么的行驶,也完全可以有专门的公司去预先制图。
而L5级的无人驾驶,其实才是真正的SLAM应用。L5级的无人驾驶不限环境和条件,意味没有预先制定的地图,我们必须真正地同时定位和制图。一般也需要GPS的辅助定位。当然无人驾驶除了SLAM还需要有很多其他技术,比如控制,决策,利用深度学习提取路人等信息什么的,要把他们融合起来非常复杂。L5级的无人驾驶据我目前所知没有公司达到,室外的SLAM应用也并没有那么成熟(等一下不要砸自己饭碗啊喂!!),理论虽然很成熟了,但是面对千奇百怪的实际环境,那些很fancy的算法也是有些捉襟见肘。L3,L4级无人驾驶能满足很多无人驾驶的需求了,他们需要但不完全依赖于SLAM。至于L5级目前是一个目标,冲鸭!!
室内的定位就没有GPS的用武之地了,完全SLAM的地盘了。有名的应用领域比如扫地机器人什么的。