SLAM作为机器人自主定位导航的重要突破口正不断引起业内重视,它是实现机器人自主行走的关键技术,可帮助机器人实现即时定位与地图构建,在实际应用中,SLAM技术究竟又是如何实现的呢?一起来探个究竟。
在这一技术实现过程中主要包含预处理、匹配及地图融合三大步骤:
预处理
预处理是对激光雷达原始数据进行优化,剔除一些有问题的数据,或进行滤波。我们都知道机器人想要完成定位及建图,需要搭配激光雷达来实现,激光雷达可获取它所在位置的环境信息,也就是我们通常说的点云,但它只能反映机器人所在环境中的一个部分。
匹配
匹配是一个非常关键的步骤,是指将当前一局部环境的点云数据在已建立的地图上寻找到对应的位置。说其关键是因为它直接影响了SLAM地图构建的精度,这与拼图游戏有点类似,就是在已拼好的画面中找到相似之处,确定新的一个拼图该放在哪里。而在SLAM过程中,需要将激光雷达采集到的点云匹配拼接到原有的地图中,如下图的红色部分:
如果未进行匹配,所构建的地图便会很混乱,就像下图这样:
地图融合
在匹配这一步骤完成后便可直接进入地图融合了,地图融合就是将来自激光雷达的新数据拼接到原始地图当中,并最终完成地图的更新。如下图,该过程是永远伴随着SLAM过程的。
当然,在实际应用过程中,传感器所描绘的世界与实际情况会有所误差,机器人所在环境很容易出现变化,例如突然走进一个人或闯入一只小猫。面对复杂的应用环境,需要用到很多概率算法,并采用滤波的方式进行融合,将以上过程依次执行后,最终就产生了我们所看到的栅格地图。
栅格地图就是把环境划分成一系列栅格,其中每一栅格给定一个可能值,表示该栅格被占据的概率。这种地图看起来和人们所认知的地图没什么区别,它最早由 NASA 的 Alberto Elfes 在 1989 年提出,在火星探测车上就用到过,其本质是一张位图图片,但其中每个「像素」则表示了实际环境中存在障碍物的概率分布。
以上过程听起来似乎并不复杂,但要处理好还是有很大难度的,比如实现机器人回环问题时,如果匹配算法不够精准,或在现实环境中存在很多干扰,可能出现绕环境一圈后,原本该闭合的一个环形走道被断开了。
比如正常地图应该像左边图这样,但如果处理不好,就有可能变成右边图的样子。
在环境较大的场景中,回环问题是不得不面对的,但在现实中即使是像激光雷达这种高精度的传感器,也难免会存在一些误差。该问题的难点在于在刚开始出现些许误差时并不易发掘,直到机器人绕着环路一圈,才发现误差的累加,但此时发现已经晚了,环路闭合问题已很难解决了。当然该问题也并不是完全无解,一个好的商用化SLAM系统便能很好的解决回环问题。回环问题能否很好的解决,也成为评判该系统实力的指标了。
以上是思岚科技工作人员在办公室进行的测试,左边的视频是基于开源的ROS机器人操作系统进行的地图构建,右边的是基于SLAMWARE构建的地图。当机器人绕场一周后,ROS构建的地图出现了中断,而SLAMWARE构建的地图是一个完美的闭环,它与思岚科技办公室的设计图完美重合。