偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1751)
分类: 其他平台
2020-04-16 13:53:09
经历了近30余年的发展,SLAM技术已日益成熟,从最早在军事中应用,如勇气号火星探测车,为了执行任务,借助SLAM技术在无法实时遥控的未知行星上来进行导航与避障。到如今,SLAM技术已广泛应用于民用场所,小到家庭中的扫地机,大到无人驾驶的汽车都应用了SLAM技术,以及在AR及VR领域均有SLAM技术的身影。
SLAM,自主移动的核心技术
正常来说,凡涉及到自主移动的机器人都离不开SLAM技术,SLAM通过传感器获取的信息来进行当前位姿的推算、轨迹估计与环境建图,相比传统的卫星导航、惯性导航、路标导航等定位方式,SLAM技术的所有算法都是围绕传感器收集的信息来展开的。
总体来说,SLAM技术大致包含了感知、定位、建图三个过程:
感知——机器人通过传感器(激光雷达或视觉传感器)来获取周围环境的信息。
定位——通过传感器实时获取自身位置及姿态。
建图——根据自身位置及传感器获取的信息,描述出当下所在环境的地图
感知是实现SLAM的必要条件,只有先感知到周围的环境信息,才能可靠确定定位及构建环境地图。
当下主流的SLAM技术
在SLAM技术中包含了激光SLAM与视觉SLAM两大类,其中激光SLAM是目前应用最广泛也最为成熟的SLAM技术,在扫地机器人、送餐机器人、导购机器人等服务机器人中普遍搭载了激光SLAM,激光雷达的出现使得测量更快更精准,信息也更为丰富。
激光雷达可对周围物体实现360度全方位扫描测距,其采集到的物体信息会呈现出一系列分散的、具有准确角度和距离信息的点,被称为点云。通常激光SLAM系统通过对不同时刻两片点云的匹配与比对,计算激光雷达相对运动的距离和姿态的改变,也就完成了对机器人自身的定位。
相对来说,激光雷达距离测量比较精准,误差模型简单,在强光直射外的环境中运行稳定、点云的数据处理也较为容易,因点云信息本身包含直接的几何关系,所以机器人的路径规划及导航也变得更为直观。
总体来说,激光SLAM理论研究更为成熟、落地也更为丰富。
SLAM技术是如何实现的?
以下是一个完整的SLAM和导航系统的主要框架图:
在SLAM技术核心过程主要包含:预处理、匹配、地图融合这3个主要步骤。
1.预处理
激光雷达和其他类似设备一样,在某一时刻只能获取它所在位置的环境信息。
上图就是我们所说的点云,它只能反映机器人所在环境中的一个部分。而预处理主要是对激光雷达原始数据进行优化,并将一些有问题的数据进行剔除,或进行滤波。
2.匹配
匹配是很关键的一步,它的好坏将会直接影响SLAM构建的地图精度,其主要是把当前在局部环境上的一个点云数据,在已经建立地图上寻找到对应的位置。与我们玩的拼图游戏有点相似,就是在已经拼好的画面中找到相似之处,确定新的拼图该放的位置。而在SLAM过程中,需要将激光雷达当前采集的点云(红色部分)匹配拼接到原有地图中。
如果不进行匹配的过程,所构建的地图可能就乱成一团,导致机器人无法使用。
3.地图融合
地图融合就是将来自激光雷达的新数据拼接到原始地图中,最终完成地图的更新。
如下图,该过程是永远伴随SLAM过程的。
数据融合与简单的贴图是有很大差异的,因为外部环境不仅有静态的,还有动态的,此时,如果在机器人旁边闯入了一只小狗,实际在进程数据融合的过程会更为复杂,需要用到很多概率算法,且处理难度很大。
举例来说,如果遇到回环问题,匹配算法不够优秀,或者在环境中存在很不巧的干扰,当机器人绕着环境走一圈后,便有可能出现原本应该闭合的一个环形走廊断开了。
比如正常地图应该这样:
但如果处理不好,实际地图就有可能变成这样:
在环境较大场景,回环问题是不得不面对的,但现实总是不理想,即使拥有了高精度的激光雷达传感器,也难免存在一定误差,而回环的难点在于,在一开始的少许误差并不会被发觉,直到机器人走完一圈后,随着误差的不断累积,导致了环路无法闭合,出现这种情况一般很难回天。
当然,并不是说出现该问题就没有解决方法了,一个好的商用化SLAM系统就能很好的解决环境问题。
以下是思岚科技员工在他们办公室进行的测试,当机器人已经绕场一周后,ROS构建的地图出现了中断,而利用SLAMWARE模块构建的地图是一个完美的闭环,它与思岚科技办公室的设计图完美重合。
除了算法层面的回环问题,SLAM技术实际应用中还会碰到其他坑,比如走廊问题与外界干扰问题。以外界干扰问题来说,通常,激光雷达作为机器人的眼睛,一般是安装在底盘上的,它能看到的视野很有限。当受到外界干扰(人类或者宠物等等)后,机器人很容易丢失定位精度,无法正常完成后续的建图工作。
当机器人安装SLAMWARE后,机器人受到干扰,可以完全不受影响,照样能够正常工作。目前,SLAM的开源实现代表多为学术界,实际应用有很多corner case要处理,需要传感器、系统参数、其他辅助设备的联合调优。
一般来说,上述的SLAM过程对于运算消耗是巨大的,虽然并没有达到像训练神经网络动用服务器集群那种地步,但传统上需要PC级别的处理器。
除配备激光雷达外,还需要机器人具有IMU(惯性测量单元)、里程计来为激光雷达提供辅助数据,否则SLAM系统也难以得到运行。总的来说,SLAM技术本身是一个对于外部系统有着多种依赖的算法,这是一个切实的工程问题。我们知道很多机器人,比如扫地机是不可能装一个PC进去的。为了让SLAM能在这类设备里运行,除了解决激光雷达成本外,还要对SLAM技术做出很好的优化。
思岚科技一直在朝这个方向努力,一方面在SLAM算法上很好的解决了各类实际算法难点,另一方面,把SLAM这个复杂的系统做了很大的优化,可以放到一个硬币那么大的模块内部,降低尺寸功耗。此外,还集成了IMU等配套传感器,力求做到对于SLAM的使用的便捷性。
另外,为了帮助机器人适应多种应用环境,思岚科技日前已推出了全新的SLAM 3.0系统,即使面对复查的大场景,机器人也能轻松完成导航任务,相比传统SLAM,升级后的SLAM 3.0系统采用了图优化方式进行构图,能实现百万平米级别的地图构建能力,同时拥有主动式回环闭合纠正能力,能很好消除长时间运行导致的里程累计误差,成为目前行业中最受欢迎的定位导航方式。目前在SLAMWARE及思岚科技最新平台产品均采用了最新的SLAM 3.0技术,配合激光雷达在商用复杂环境中应用已逐渐普及。