雷锋网按:本文作者SLAMTEC(思岚科技公号slamtec-sh)技术顾问,专注SLAM及相关传感器研发应用。
智能服务机器人正成为行业的风口浪尖,从清扫机器人开始,家庭陪伴机器人、送餐机器人等陆续进入公众视线。
在讨论这类机器人是否能解决实际问题时,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。同时,作为自主定位导航技术的重要突破口,SLAM技术也成为关注焦点。
正如图中所示,机器人自主定位导航技术中包括定位、地图创建与路径规划(运动控制),而SLAM本身只是完成机器人的定位和地图创建,二者有所区别。
那么,SLAM技术究竟是如何实现的?它有哪些难点?机器人如何实现路径规划和自动导航?到底什么样的扫地机器人才算智能?
这些问题,小编将为你一一解答,带领大家了解机器人自主移动的秘密。
今天,我们先从SLAM说起。
SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。
其实,SLAM更像是一个概念而不是一个算法,它本身包含许多步骤,其中的每一个步骤均可以使用不同的算法实现。主要用于解决移动机器人在未知环境中运行时即时定位与地图构建的问题。
当你身处异地,怎么准确找到想去的地方?在户外迷路时,怎么找到回家的路?没错,我们有导航软件和户外地图。
和人类绘制地图一样,机器人描述环境、认识环境的过程主要就是依靠地图。它利用环境地图来描述其当前环境信息,并随着使用的算法与传感器差异采用不同的地图描述形式。
机器人学中地图的表示方法有四种:栅格地图、特征地图、直接表征法以及拓扑地图。
机器人对环境地图的描述的方式最常见的为栅格地图(Grid map)或者称为Occupancy Map。栅格地图就是把环境划分成一系列栅格,其中每一栅格给定一个可能值,表示该栅格被占据的概率。
这种地图看起来和人们所认知的地图没什么区别,它最早由NASA的Alberto Elfes在1989年提出,在火星探测车上就用到过,其本质是一张位图图片,但其中每个“像素”则表示了实际环境中存在障碍物的概率分布。
一般来说,采用激光雷达、深度摄像头、超声波传感器等可以直接测量距离数据的传感器进行SLAM时,可以使用该地图。这种地图也可以通过距离测量传感器、超声波(早期)、激光雷达(现在)绘制出来。
特征点地图,是用有关的几何特征(如点、直线、面)表示环境,常见于vSLAM(视觉SLAM)技术中。
相比栅格地图,这种地图看起来就不那么直观了。它一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,多见于最早的SLAM算法中。
直接表征法中,省去了特征或栅格表示这一中间环节,直接用传感器读取的数据来构造机器人的位姿空间。
上图就是直接记录了屋子内天花板画面的图像地图。这种方法就像卫星地图一样,直接将传感器原始数据通过简单处理拼接形成地图,相对来说更加直观。
拓扑地图,是一种相对更加抽象的地图形式,它把室内环境表示为带结点和相关连接线的拓扑结构图,其中结点表示环境中的重要位置点(拐角、门、电梯、楼梯等),边表示结点间的连接关系,如走廊等。这种方法只记录所在环境拓扑链接关系,这类地图一般是由前几类地图通过相关算法提取得到。
比如扫地机器人要进行房间清扫的时候,就会建立这样的拓扑地图:
在机器人技术中,SLAM的地图构建通常指的是建立与环境几何一致的地图。
一般算法中建立的拓扑地图只反映了环境中的各点连接关系,并不能构建几何一致的地图,因此,这些拓扑算法不能被用于SLAM。
直接表征法类似卫星地图,它是直接使用传感器(一般是图像传感器)构建得到。这种方法的信息冗余度最大,对于数据存储是很大的挑战,同时,机器人要从中提取出有用的数据也要耗费一番周折,因此在实际应用中很少使用。
特征点地图又是另一个极端,虽然数据量少,但是它往往不能反应所在环境的一些必须的信息,比如环境中障碍物的位置。vSLAM技术中,多采用这种地图来解决机器人定位问题。想让机器人进行自主避障和路径规划,还需要额外配置距离传感器,如激光雷达、超声波来完成。
栅格地图,或者Occupancy Map(占据地图)恰好介于其中,一方面它能表示空间环境中的很多特征,机器人可以用它来进行路径规划,另一方面,它又不直接记录传感器的原始数据,相对实现了空间和时间消耗的最优。因此,栅格地图是目前机器人所广泛应用的地图存储方式。
思岚科技的SLAMWARE系统内部也采用这种地图方式。
当你打开手机中的导航软件,在选择前往目的地的最佳路线之前,首先要做的动作是什么呢?没错,就是定位。我们要先知道自己在地图中的位置,才可以进行后续的路径规划。
在机器人实时定位问题中,由于通过机器人运动估计得到的机器人位置信息通常具有较大的误差,我们还需要使用测距单元得到的周围环境信息更正机器人的位置。
目前,常见的测距单元包括激光测距、超声波测距以及图像测距三种。其中,凭借激光良好的指向性和高度聚焦性,激光雷达已经成为移动机器人的核心传感器,同时它也是目前最可靠、最稳定的定位技术。
自1988年被提出以来,SLAM的理论研究发展十分迅速。在实际应用时,除配备激光雷达外,还需要机器人具有IMU(惯性测量单元)、里程计来为激光雷达提供辅助数据,这一过程的运算消耗是巨大的,传统上需要PC级别的处理器,这也成为限制SLAM广泛应用的瓶颈之一。
那么,实现SLAM的过程中,都会遇到哪些坑呢?