首页 > 机器人资讯 > 从理论到实践,机器人SLAM技术详解

从理论到实践,机器人SLAM技术详解

日期:2018-07-13   人气:  来源:互联网
简介:智能服务机器人正成为行业的风口浪尖,从清扫机器人开始,家庭陪伴机器人、送餐机器人等陆续进入公众视线。 在讨论这类机器人是否能解决实际问题时,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。同时,作为自主定位导航技术的重要突……

智能服务机器人正成为行业的风口浪尖,从清扫机器人开始,家庭陪伴机器人、送餐机器人等陆续进入公众视线。

在讨论这类机器人是否能解决实际问题时,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。同时,作为自主定位导航技术的重要突破口,SLAM技术也成为关注焦点。

正如图中所示,机器人自主定位导航技术中包括定位、地图创建与路径规划(运动控制),而SLAM本身只是完成机器人的定位和地图创建,二者有所区别。

那么,SLAM技术究竟是如何实现的?它有哪些难点?机器人如何实现路径规划和自动导航?到底什么样的扫地机器人才算智能?

这些问题,小编将为你一一解答,带领大家了解机器人自主移动的秘密。

今天,我们先从SLAM说起。

SLAM是同步定位与地图构建(SimultaneousLocalizationAndMapping)的缩写,最早由HughDurrant-Whyte和JohnJ.Leonard提出。

其实,SLAM更像是一个概念而不是一个算法,它本身包含许多步骤,其中的每一个步骤均可以使用不同的算法实现。主要用于解决移动机器人在未知环境中运行时即时定位与地图构建的问题。

当你身处异地,怎么准确找到想去的地方?在户外迷路时,怎么找到回家的路?没错,我们有导航软件和户外地图。

和人类绘制地图一样,机器人描述环境、认识环境的过程主要就是依靠地图。它利用环境地图来描述其当前环境信息,并随着使用的算法与传感器差异采用不同的地图描述形式。

机器人学中地图的表示方法有四种:栅格地图、特征地图、直接表征法以及拓扑地图。

栅格地图

机器人对环境地图的描述的方式最常见的为栅格地图(Gridmap)或者称为OccupancyMap。栅格地图就是把环境划分成一系列栅格,其中每一栅格给定一个可能值,表示该栅格被占据的概率。

这种地图看起来和人们所认知的地图没什么区别,它最早由NASA的AlbertoElfes在1989年提出,在火星探测车上就用到过,其本质是一张位图图片,但其中每个「像素」则表示了实际环境中存在障碍物的概率分布。

一般来说,采用激光雷达、深度摄像头、超声波传感器等可以直接测量距离数据的传感器进行SLAM时,可以使用该地图。这种地图也可以通过距离测量传感器、超声波(早期)、激光雷达(现在)绘制出来。

特征点地图

特征点地图,是用有关的几何特征(如点、直线、面)表示环境,常见于vSLAM(视觉SLAM)技术中。

相比栅格地图,这种地图看起来就不那么直观了。它一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,多见于最早的SLAM算法中。

直接表征法

直接表征法中,省去了特征或栅格表示这一中间环节,直接用传感器读取的数据来构造机器人的位姿空间。

上图就是直接记录了屋子内天花板画面的图像地图。这种方法就像卫星地图一样,直接将传感器原始数据通过简单处理拼接形成地图,相对来说更加直观。

拓扑地图

拓扑地图,是一种相对更加抽象的地图形式,它把室内环境表示为带结点和相关连接线的拓扑结构图,其中结点表示环境中的重要位置点(拐角、门、电梯、楼梯等),边表示结点间的连接关系,如走廊等。这种方法只记录所在环境拓扑链接关系,这类地图一般是由前几类地图通过相关算法提取得到。

比如扫地机器人要进行房间清扫的时候,就会建立这样的拓扑地图:

小结

在机器人技术中,SLAM的地图构建通常指的是建立与环境几何一致的地图。

一般算法中建立的拓扑地图只反映了环境中的各点连接关系,并不能构建几何一致的地图,因此,这些拓扑算法不能被用于SLAM。

直接表征法类似卫星地图,它是直接使用传感器(一般是图像传感器)构建得到。这种方法的信息冗余度最大,对于数据存储是很大的挑战,同时,机器人要从中提取出有用的数据也要耗费一番周折,因此在实际应用中很少使用。

特征点地图又是另一个极端,虽然数据量少,但是它往往不能反应所在环境的一些必须的信息,比如环境中障碍物的位置。vSLAM技术中,多采用这种地图来解决机器人定位问题。想让机器人进行自主避障和路径规划,还需要额外配置距离传感器,如激光雷达、超声波来完成。

栅格地图,或者OccupancyMap(占据地图)恰好介于其中,一方面它能表示空间环境中的很多特征,机器人可以用它来进行路径规划,另一方面,它又不直接记录传感器的原始数据,相对实现了空间和时间消耗的最优。因此,栅格地图是目前机器人所广泛应用的地图存储方式。

思岚科技的SLAMWARE系统内部也采用这种地图方式。

当你打开手机中的导航软件,在选择前往目的地的最佳路线之前,首先要做的动作是什么呢?没错,就是定位。我们要先知道自己在地图中的位置,才可以进行后续的路径规划。

在机器人实时定位问题中,由于通过机器人运动估计得到的机器人位置信息通常具有较大的误差,我们还需要使用测距单元得到的周围环境信息更正机器人的位置。

目前,常见的测距单元包括激光测距、超声波测距以及图像测距三种。其中,凭借激光良好的指向性和高度聚焦性,激光雷达已经成为移动机器人的核心传感器,同时它也是目前最可靠、最稳定的定位技术。

自1988年被提出以来,SLAM的理论研究发展十分迅速。在实际应用时,除配备激光雷达外,还需要机器人具有IMU(惯性测量单元)、里程计来为激光雷达提供辅助数据,这一过程的运算消耗是巨大的,传统上需要PC级别的处理器,这也成为限制SLAM广泛应用的瓶颈之一。

那么,实现SLAM的过程中,都会遇到哪些坑呢?

SLAM实现过程中的难点

SLAM主要解决机器人的实时定位与自动建图问题,那么,在实际应用时,SLAM究竟是如何实现的呢?在实现过程中有哪些难点?

这是一个完整的SLAM和导航系统的主要架构图:

其中,SLAM核心过程包括3个步骤,第一步称为预处理。我们知道,激光雷达和其他雷达设备一样,某一个时刻只能获取它所在位置的环境信息。

这就是我们所说的点云,它只能反映机器人所在环境中的一个部分。第一步预处理就是对激光雷达原始数据进行优化,剔除一些有问题的数据,或者进行滤波。

第二步是匹配,也就是说把当前这一个局部环境的点云数据在已经建立地图上寻找到对应的位置,这个步骤非常关键。

这个是ICP的点云匹配算法,用于实现匹配。说这个过程关键,就是因为它的好坏,直接影响了SLAM构建地图的精度。这个过程和我们玩拼图游戏有点类似,就是在已经拼好的画面中找到相似之处,确定新的一个拼图该放在哪里。

在SLAM过程中,需要将激光雷达当前采集的点云(红色部分)匹配拼接到原有地图中。

如果不进行匹配过程,所构建的地图可能就乱成一团,变成这样。

在这个部分完毕以后,就进行第三步,地图融合,也就是将这一轮来自激光雷达的新数据拼接到原始地图当中,最终完成地图的更新。

就像这个图一样,这个过程是永远伴随SLAM过程的。

数据融合和简单的贴图是有很大的差异的。因为实际上传感器描绘的世界存在一定的误差,或者正巧在这个时间环境有了变化,例如机器人旁边闯入了一只小猫。

因此,实际要进行的过程会更加复杂,需要用很多概率算法,并采用滤波的方式进行融合。将上述这个过程逐次执行,就最终产生了我们看到的栅格地图。

免责声明:本网部分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的。如转载稿涉及版权等问题,请立即联系网站所有人,我们会予以更改或删除相关文章,保证您的权利。