简介
本文适合小白初识SLAM,介绍了SLAM的种类和一般框架,没有算法和公式推导,大佬可以不用浪费时间。
目录
一、基本概念
SLAM,全称Simultaneous Localization And Mapping,同时定位和建图,也就是说从外界抓取地图信息,并构建出来找到自己的位置,为之后的决策、规划做好数据基础。
不知道有没有小伙伴看没看过萌王史莱姆(关于我转生变成史莱姆这档事),其实SLAM本质上就是萌王史莱姆在第一季第一集遇到暴风龙学会的魔法——魔力感知,让史莱姆可以看到周围的世界,知道自己在哪里,那这也是我们SLAM主要的任务!SLAM又和史莱姆同音,作者觉得动画的作者也一定是学SLAM的!
二、当前时代SLAM的分类(史莱姆接收魔力的感受器分类!)
1、激光SLAM(激光史莱姆)
你可以想象一只史莱姆,它的身上长满了可以发射魔力激光的生物感受器,可以不停的发射魔力,然后碰到周围的建筑、物体等返回,这时候这只史莱姆根据传回来的魔力信息就可以感知到自己所处的环境。
可我们是三次元的魔法师,如何在三次元启动魔法魔力感知呢?我想将史莱姆身上的生物感受器替换成我们的激光雷达是个不错的选择,我们可以加在机器人、无人车、无人机等需要感受周围环境的物品身上,通过发射激光和接收反射的激光通过一定的算法来处理信息,从而构建周围的环境地图和定位。
常用的激光雷达类型:
①2D激光
优点:扫描速度快、分辨率强
缺点:无法测量物体高度信息
②3D激光
优点:可以实时获取按比例还原环境信息
缺点:价格昂贵,容易受到天气影响
2、视觉SLAM(视觉史莱姆)
有一些史莱姆会变异进化出一种很像眼睛的东西(摄像眼),但史莱姆并没有像人类那样的大脑,必须通过一些magic(也就是算法)对感知的信息进行处理,才可以帮助史莱姆感知周围的环境,锁定自己的位置。
三次元的魔法师当然是要往自己研究的项目上加装摄像头, 通过一些成熟的对图像处理的算法来获得我们需要得到信息,在进行地图的构建和定位,但是图片是二维的,改如何表示三维的信息呢?直接拍出来会缺少一个维度(深度),接下来对摄像头的介绍会说明。
常用的摄像头分类:
①单目相机(一个镜头)
优点:结构简单,成本低
缺点:无法测得深度信息
②双目相机(两个镜头)
优点:可测深度信息,精度较高(通过一定的算法可测得深度信息,如人的两只眼睛就可以估计出物体离自己的距离)
缺点:计算复杂符合大
③深度相机
优点:可测得深度信息,速度快,数据丰富
缺点:成本高,受视场角和分辨率的限制
3、多传感器融合
简而言之就是激光和相机等传感器(如里程计、MU,GPS和辅助基站定位系统等。)混合使用,通过一些算法来处理传感器数据得到我们想要的信息,从而建图与定位。
三、SLAM的经典框架
对于一个没有大脑的史莱姆来说,他是怎么处理接收到的信息然后在意识中构建环境地图的呢?上图想必会给你答案。
首先,通过传感器的感知获得大量的原始数据,并进行预处理(如提取我们想要的特征等)。
其次,进行前段匹配来估计相对位置和自身的位姿态
然后,进行后端优化,对前段积累的误差进行优化。
再然后,是回环检测,考虑不同时刻的图像,提供空间积累和误差消除。
最后,根据前端和后端匹配的数据进行地图的构建。
上面的几个步骤都是论文的原话啦,想必你没有太理解其中的几个步骤,接下来作者简单概述一下:
首先,第一个步骤想必大家都没什么问题,就是根据传感器得到的数据是生的,我们需要简单处理一下,成为熟的,更好吃好用的。
其次,前端匹配可以理解为建图前的准备或者说初步建图,因为我们的传感器是运动的,我们会有一个绝对坐标(世界坐标)和相对坐标(机器人的坐标),我们建的图是在绝对坐标下的(我们构建一个不动的地图),而我们传感器感知的是相对坐标(因为机器人在跑),我们需要一些数学的方法来转化成绝对坐标和要计算传感器此时的角度等信息(位姿),这些过程就是前端匹配。
然后,人有时看东西也会出错,更别说我们的机器了,这时就需要后端优化来纠正误差。也就是说前端匹配是会积累误差的,我们需要一个误差消除器。
再然后,回环检测是帮助我们优化的一个大杀器,也就是闭环检测,例如,机器跑了一个正方形,最后回到了出发点,一般来说,通过前端匹配所建的图,我们的机器并没有返回出发点,这与实际不符,如果通过一些细小的操作纠正,总是不到位的,不如直接告诉机器,你来过这里,直接将建图中的出发点和结尾连起来,在通过一些算法,来优化之前的每一步!
最后,根据纠正的数据重新建图。
四、总结
SLAM就是定位和建图,知道自己在哪里,本文只是粗略的抽象的(我是二次元)介绍一下,其中具体有什么算法等内容以后再来介绍,本人也是咸鱼一只,文章错误还请各为大佬批评指正,共同学习。