大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。
1.什么是SLAM
SLAM的全称是Simultaneous Localization and Mapping即时定位与地图构建,为解决机器人自主导航的问题。人在一个未知的环境下也不知如何行进,我们闭着眼睛也不知道怎么走路,机器人如人一样,也需要一个“眼睛”与环境之间交互知道自己的位置,并且能够建立一个地图来让机器人自主导航。如下图所是,相机相当于我们的眼睛,激光雷达像是成千上万个很长的拐棍去勘测障碍物,地图相当于我们日常用的导航地图。机器人有了这些东西就可以进行走路(决策、规划、控制)。
在过去的十年里,SLAM问题的解决方案一直是机器人邻域最显著的成就之一。SLAM作为一种理论方法,它被以多种不同形式的方式被提出并解决,它被广泛的应用到了室内、室外、水下和空中等的环境中。同时SLAM技术对于无人驾驶来说是一项必不可少的技术。在GPS精度差,信号不稳定的环境中,SLAM技术是实现自主导航的前提。
现在你只需要知道SLAM问题可以分为以下两部分:
Localization:在给定地图的情况下,估计机器人的位姿;
Mapping:在给定机器人位姿的情况下,估计环境地图;
2.SLAM发展历程
2.1传统时代
Classical Age(1986-2004):SLAM问题的提出,并将该问题转换为一个状态估计问题,利用扩展卡尔曼滤波、粒子滤波及最大似然估计等手段来求解。第一个挑战是效率和数据关联(求解位姿)的鲁棒性问题。
2.2算法分析时代
algorithmic-analysis age: (2004-2015)研究SLAM的基本特性,包括观测性、收敛性和一致性。研究者们理解了稀疏特征在高效SLAM解决方案中的重要角色,开发了主要开源SLAM库。
2.3鲁棒性-预测性时代
robust-perception(2015-):鲁棒性、高级别的场景理解,多传感器融合,计算资源优化,任务驱动的环境感知。
2.4未来发展
未来SLAM的发展方向可以归结为以下几点:
(1)解决鲁棒性问题
(2)基于监督学习的特征点提取方法
(3)基于监督学习的图像深度估计
(4)基于无监督学习图像深度与里程计估计
(5)语义地图的建立与表达
(6)主动式SLAM
(7)基于新的非传统的传感器的SLAM
(8)多节点车路协同下的SLAM
在理论和概念层面上,SLAM现在可以被认为是一个已解决的问题了。然而,在实际实现更通用的SLAM解决方案方面,尤其是在构建和使用感知丰富的地图作为SLAM算法的一部分方面,仍然存在大量棘手的问题。例如一个地下车库停车的SLAM场景就需要在已有的SLAM算法基础上进行优化和多传感器融合才能达到不错的效果。
3.SLAM种类
3.1 SLAM种类介绍
SLAM的种类与传感器的发展息息相关,最开始的图像SLAM到后面的激光SLAM。近年来,随着激光雷达、摄像机、惯性测量单元等传感器的快速发展,SLAM技术应运而生。常见的SLAM分类有激光SLAM、视觉SLAM、多传感器融合SLAM和基于深度学习的SLAM。
各传感器的特点也决定了各种SLAM算法的特点,下面将简单介绍一下常见传感器的优缺点。
- 激光雷达:机械、固态、混合
优点:精度高、频率快、不受光线影响、计算量小
缺点:成本高、信息量有限、功耗大
- 摄像头:单目、双目、RGB-D相机、全景相机
优点:便宜、体积小、信息丰富
缺点:计算量大、易受干扰、对环境假设强
- 惯性测量单元:IMU、轮速计
优点:可以测量出载体的加速度和角加速度,结合数学方法快速计算出载体的位置和姿态信息。
缺点:随着时间增加会有漂移误差
3.2激光雷达简介
本专栏将围绕激光SLAM的基础展开,激光SLAM即是围绕激光雷达为主传感器进行感知的算法。激光雷达目前主要分为机械式和固态式,那么下面就介绍一下激光雷达是什么。
- 机械激光雷达
机械激光雷达体积更大,总体来说价格更为昂贵,但测量精度相对较高。机械激光雷达的工作原理是利用激光束在周围环境中反射并返回到传感器的时间来确定距离。当激光束照射到一个物体上时,它会被反射回传感器,并且传感器可以通过测量返回的激光脉冲的时间来计算物体的距离。通过不断旋转反射镜,激光束可以在水平和垂直方向上扫描周围环境,并创建出物体的三维点云图,通常可以扫描360度。
来一个通俗点的解释,想像出一个竖起来的梳子,每个梳齿向外发射激光并接收,现在让它旋转起来,每一个梳齿都会扫描一圈,有多少个梳齿就是我们常说的多少线激光雷达。下图右上的图是点云投影到图片的,可以看到像梳子一样一条一条排列的,右下是一帧的三维点云。
- 固态激光雷达
固态激光雷达尺寸较小,成本低,但测量精度相对会低一些。一些非完全旋转的激光雷达也被统称为“固态激光雷达”,它们具备了固态激光雷达很多的性能特点,如分辨率高、有限水平FOV(前向而不是360°)等。
固态激光雷达则采用固态光电元件,如半导体激光器和光电探测器,代替了机械部件,从而提高了可靠性和稳定性。固态激光雷达的工作原理与机械激光雷达类似,也是利用激光束发射并接收反射回来的信号来测量距离,但其发射和接收是由固态电路实现的,可以通过电子控制来调整激光束的方向和强度。这种激光雷达具有更快的测量速度和更高的精度,但由于使用了固态光电元件,其成本相对较高。
因此,机械激光雷达和固态激光雷达的主要区别在于技术实现方式,机械激光雷达需要旋转部件来扫描整个场景,而固态激光雷达使用固态电路来控制激光束的方向和强度。下图是livox的avia的工作原理,点云形状像是一朵花。
真实用起来点云是这样的:
利用光学相控阵扫描技术的固态激光雷达的确有很多优势,例如:
①其结构简单,尺寸小,无需旋转部件,在结构和尺寸上可以大大压缩,提高使用寿命并使其成本降低。
②扫描精度高,光学相控阵的扫描精度取决于控制电信号的精度,可以达到千分之一度量级以上。
③可控性好,在允许的角度范围内可以做到任意指向,可以在重点区域进行高密度的扫描。
④扫描速度快,光学相控阵的扫描速度取决于所用材料的电子学特性,一般都可以达到MHz量级。
当然固态激光雷达也同样存在一些劣势,如:
①扫描角有限,固态意味着激光雷达不能进行360度旋转,只能探测前方。因此要实现全方位扫描,需在不同方向布置多个(至少前后两个)固态激光雷达
②旁瓣问题,光栅衍射除了中央明纹外还会形成其他明纹,这一问题会让激光在最大功率方向以外形成旁瓣,分散激光的能量。
③加工难度高,光学相控阵要求阵列单元尺寸必须不大于半个波长,一般目前激光雷达的工作波长均在1微米左右,故阵列单元的尺寸必须不大于500nm。而且阵列密度越高,能量也越集中,这都提高了对加工精度的要求,需要一定的技术突破。
④接收面大、信噪比差:传统机械雷达只需要很小的接收窗口,但固态激光雷达却需要一整个接收面,因此会引入较多的环境光噪声,增加了扫描解析的难度。
3.3 激光SLAM
上面说了那么多,总算引出我们的主角激光SLAM,激光SLAM就是根据前后帧之间的点云匹配,估算出位姿,再根据点云和计算出的位姿进行建图。下图就是两个点云进行匹配,具体算法后面会介绍,现在只需要知道位姿是通过点云匹配计算来的就好。
纯激光SLAM主要分为2D和3D,下图给出一些经典的算法,当然现在还有多传感器紧耦合的算法,本专栏先不涉及。
下面给出2d和3dSLAM的样例,现在你只需要有个印象,后面会手把手带你跑起来这些代码。
- 2D建图
- 3D建图
4.SLAM的应用场景举例
上面说了一大堆,SLAM具体有什么用呢,什么AI,元宇宙,游戏等等都太大了,博主能不能举一个具体的例子。好,扫地机器人:
请各位小主自行领会更多的应用场景,现在相信你知道激光SLAM是什么东西,要干什么了。下一期内容将带你走进Ubuntu系统。
感谢各位小伙伴能读到这里,如有不清楚或不对的地方欢迎评论区讨论,博主也是初学者,按自己理解区解释,恳请各位理解,下一篇将很快到来~
如果喜欢就关注一下吧!
版权归原作者 桦树无泪 所有, 如有侵权,请联系我们删除。