1
今年8月,雷锋网将在深圳举办一场盛况空前,且有全球影响力的人工智能与机器人峰会(CCF-GAIR)。届时雷锋网将发布“人工智能&机器人Top25创新企业榜”榜单。目前,我们正在拜访人工智能、机器人领域的相关公司,从中筛选最终入选榜单的公司名单。如果你也想加入我们的榜单之中,请联系:2020@leiphone.com。
陈士凯:上海思岚科技有限公司(SLAMTEC)CEO,08年毕业于上海交通大学,毕业后在微软亚洲研究院(MSRA)实习。后来在英特尔亚太研发有限公司软件与服务事业部(SSG)担任软件工程师,11年进入盛大创新院。之后在RoboPeak一支机器人研发团队的基础上创办了Slamtec。
提到SLAM就会想到SLAMRTEC的思岚科技是一家提供消费级产品领域的高性能机器人定位导航解决方案及相关核心传感器的公司。主要产品有低成本360度激光扫描测距雷达(RPLIDAR)、基于激光的模块化自主定位导航解决方案(SLAMWARE)与适于商业环境的通用型服务机器人平台(ZEUS)。此前雷锋网在《做低成本激光雷达的Slamtec,终于说出了自己的真实想法》一文中采访过的技术宅CEO陈士凯,这次以硬创公开课讲师的身份再次出现,为各位带来了许多关于SLAM技术中涉及地图描绘还有导航的干货内容,信息量太大,本文仅供诸位慢慢吸氧,想要获取更多信息,关注硬创公开课微信号(ycopen)。
机器人描述环境过程主要就是靠地图,就和人绘制地图一样用环境地图来描述其当前环境信息,并且随着使用的算法与传感器差异采用不同的地图描述形式。
机器人对环境地图的描述的方式最常见的为栅格地图(Grid map)或者称为Occupancy Map。这种地图看起来和人们所认知的地图没啥区别。最早由NASA的Alberto Elfes在1989年提出的,在火星探测车上就用到过,其本质是一张位图图片,但其中每个“像素”则表示了实际环境中存在障碍物的概率分布。
一般来说,采用激光雷达、深度摄像头、超声波传感器等可以直接测量距离数据的传感器进行SLAM时,可以使用该地图。这种地图也可以通过距离测量传感器,超声波(早期),激光雷达(现在)绘制出来。
另外用在视觉SLAM这块用的比较多是特征点地图,这种地图记录环境中特征点(或称为关键点)的几何空间位置。这种地图相比栅格地图看起来就不那么直观了。一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生,优点是相对数据存储量和运算量比较小,在最早的SLAM算法中这种地图多见。
第三种相比会更加直观,就像卫星地图一样。直接将传感器原始数据通过简单处理拼接的地图 ,像这个图是直接记录了屋子内天花板画面的图像地图。另外,还有一种相对更加抽象的地图形式,拓扑地图,它只记录所在环境拓扑链接关系,这类地图一般是由前几类地图通过相关算法提取得到。
当然,针对具体算法和应用不同,还有很多其他机器人描述环境的地图表现形式。他们都是为了帮助机器人解决某一系列问题而设计的。总的来说,拓扑地图是与人类描述世界最接近的一种地图表达方式,因为它更加抽象,更加能反应所在环境的高层次特点。不过这种地图一般并不是SLAM算法所直接产生的,而往往是在进行相关的后期应用时才会用到的。比如扫地机器人要进行房间清扫的时候,就会建立这样的拓扑地图:
要说特点和优劣,其实要和具体应用有关,不过总得来说,类似卫星地图这种直接使用传感器(一般是图像传感器)所构建的直接地图也很少使用,因为它的信息冗余度最大,对于数据存储是很大的挑战,此外,机器人要从中提取出有用的数据要耗费一番周折。
而特征点地图又是另一个极端,虽然数据量少,但是它往往不能反应所在环境的一些必须的信息,比如环境中障碍物的位置。因此这类地图基本只能用于定位问题。而要让机器人进行自主壁障和路径规划,就必须依赖其他的地图类型。所以目前其实vSLAM更多解决定位问题,要实现导航,还需要额外配置距离传感器,如激光雷达、超声波来完成。
而栅格地图,或者Occupancy Map恰好是介于其中,一方面它能表示空间环境中的很多特征,机器人可以用它来进行路径规划,另一方面,它又不直接记录传感器的原始数据,相对实现了空间和时间消耗的最优。因此目前是机器人所广泛应用的地图存储方式。
思岚科技的SLAMWARE系统内部也采用该地图方式。
激光雷达和其他雷达设备一样,某一个时刻只能获取它所在未知的环境信息。
这就是我们所说的点云,可以看到他只是所在环境中的一个部分。要通过它获取地图,就是配套SLAM算法所要进行的核心过程了。这个过程其实比较多,先看一个框图:
一个完整SLAM和导航系统的主要构架中SLAM核心就3个步骤:第一个部分称为预处理,也就是对激光雷达原始数据所优化,剔除一些有问题的数据,或者进行滤波。
随后,要进行一个很关键的部分,叫做匹配。也就是说把当前这一个局部环境的点云数据在已经建立地图上寻找到对应的位置。
这个是ICP的点云匹配算法,用于实现匹配。说这个过程关键,就是因为它的好坏,直接影响了SLAM构建地图的精度。这个过程和我们玩拼图游戏有点类似,就是在已经拼好的画面中找到相似之处,确定新的一个拼图该放在哪里。在SLAM过程中就像这样:
将激光雷达当前采集的点云(红色部分)匹配拼接到原有地图中,如果不进行匹配过程,所构建的地图可能就乱成一团。
在这个部分完毕以后,就进行地图融合。也就是将这一轮来自激光雷达的新数据拼接到原始地图当中。最终完成地图的更新。
就像这个图一样,这个过程是永远伴随SLAM过程的。
数据融合和简单的贴图是有很大的差异的。因为实际上传感器描绘的世界存在一定的误差,或者正巧在这个时间环境有了变化,例如机器人旁边闯入了一只小猫。因此,实际要进行的过程会更加复杂。实际实现上会用很多概率算法,采用滤波的方式进行融合。将上述这个过程逐次执行,就最终产生了我们看到的栅格地图。
这个过程听起来其实并不复杂,但是要处理好有很大难度。这里举几个例子,比如叫做loop closure(回环)的问题。如果匹配算法不足够优秀,或者环境中存在很不巧的干扰,如果机器人绕着环境一圈,就会发现原本是应该闭合的一个环形走廊断开了。比如正常地图应该这样:
如果处理不好,实际地图就成这样:
对于环境比较大的场景,回环问题是不得不面对的。因为现实总是不完美的,即使是激光雷达这种高精度传感器,也难免存在误差。而回环问题的难点恰恰在于在一开始出现少许误差的时候,并不会被发觉。一直到机器人绕着环路一圈,随着误差的累加,发现环路已经无法闭合时,此时已经酿成大错,一般很难回天。
当然这个问题并不是无解,一个好的商用化SLAM系统,回环问题是否能很好的解决,就成了评判这个系统实力的指标了。
这里先讲了第一个难点,是算法层面的。其实还有很多这种坑,比如什么走廊问题。除了算法难点其实还有别的难点,SLAM要做好其实不光靠用的算法多好,尤其现在很多开源实现代表的是学术界。实际应用有很多corner case要处理,需要传感器、系统参数、其他辅助设备的联合调优。
一般来说,上述的SLAM过程对于运算消耗是巨大的,虽然并没有达到像训练神经网络动用服务器集群那种地步,但传统上需要PC级别的处理器。
另外,除了配备激光雷达外,还需要机器人具有IMU、里程计来为激光雷达提供辅助数据。否则SLAM系统也难以得到运行。总的来说,SLAM算法本身是一个对于外部系统有着多种依赖的算法。这是一个切实的工程问题。我们知道很多机器人,比如扫地机是不可能装一个PC进去的。因此为了让SLAM能在这类设备里运行,除了解决激光雷达成本外,还要对SLAM算法做出很好的优化。
扫地机的路径规划其实是一个比较独立且复杂的课题,和一般机器人用的路径规划还不通,所以先讲下SLAM与路径规划的关系。
实际上SLAM算法本身只是完成了机器人的定位和地图构建两件事情,和我们说的导航定位还不是完全等价的。这里的导航,其实是SLAM算法做不了的。它在业内叫做运动规划(Motion Planning)。
运动规划是一个很大的概念,从机械臂的运动、到飞行器的飞行,再到这里我们说的扫地机德清扫路径规划,都是路径规划范畴。我们这里就主要先谈谈针对扫地机这类轮式机器人的运动规划。
这里我先介绍一下要实现扫地机路径规划的一个基础能力。
我们一般在完成SLAM后,要进行一个叫做目标点导航的能力。我们一般说的路径规划,顾名思义其实指的这个。通俗说,就是规划一条A点B点的路径出来,然后让机器人过去。
要实现这个过程,运动规划会实现至少两个层次的模块,一个叫做全局规划。这个和我们开车导航仪有一点像,就是它需要在地图上预先规划一条线路,也要有当前机器人的位置。这是由我们的SLAM系统提供出来的。行业内一般会用叫做A*的算法来实现这个过程,其实在很多的即时战略游戏中也同样采用这种算法。比如鼠标控制让一堆农民去采矿,这些单位的移动其实游戏里就用A*。
当然,光规划了这个路径还是不够的,现实中会有很多突发情况,比如正巧有个小孩子挡道了。那么原先的路径就要调整。当然,有时候这种调整并不需要重新计算一遍全局路径,机器人可能稍微绕一个弯就可以。此时,我们就需要另一个层次的规划模块,叫做局部规划。它可能并不知道机器人最终要去哪,但是对于机器人怎么绕开眼下障碍物特别在行。
这两个层次的规划模块一起协同,机器人就可以很好的实现从A到B点的行动了,不过实际工作环境下,上述配置还不够。比如前面提到的A*算法必须要求机器人预先把地图探明后才能展开行动,这在很多时候不够灵活。如果扫地机器人买回家,必须先把屋子都走一遍以后才肯扫地,那用户体验就会很差。
为此,也会有针对这类算法的改进,比如SLAMWARE内采用我们改良的D*算法进行路径规划,最大优点是不需要地图预先探明,机器人可以和人一样,即使环境未知,也可以展开行动,随着机器人不断探索,路径也会时刻调整。
前面介绍了目前大部分移动机器人都需要的路径规划算法,扫地机器人的路径规划算法要更复杂,一般来说,扫地机需要这么几个规划能力:贴边打扫、折返的工字形清扫以及没电时候自主充电。
其实这些规划能力单单靠前面介绍的D*这类算法是完成不了的。扫地机器人还需要有额外的规划算法,比如针对折返的工字形清扫,有很多问题要处理。例如如何最有效的清扫一个区域而不重复清扫?
另外,如何让扫地机和人一样,理解房间、门、走廊这种概念?当然这里篇幅有限,就不多展开。简单说,针对这些问题,在学术界长久以来是有专门的一个研究课题,叫做space coverage。也提出了非常多的算法和理论。比较有名的有Morse Decompositions。通过它实现对空间进行划分,随后进行清扫。
像在上世纪70年代,CMU就完全依靠超声波做到了现在我们扫地机的行为,当然造价还是很高的。
前面介绍的A点到B点移动路径规划也是实现这类更高级路径规划的基础。实际上,要从SLAM实现到扫地机器人所需要的这些功能,还是有非常多的工作要做的。我们目前的做法是针对这类扫地机特有的路径规划,也同样预先实现内置在了我们SLAMWARE内部方便使用。
思岚在2年前在业内推出了首款低成本的激光雷达RPLIDAR。目前在批量销售情况下单台可以做到几百元的这个级别。
这个成本的降低首先光通过压缩我们利润是不可能的了。当然,也更不是通过牺牲做工来换来的。本质原因是传统采用TOF技术的激光雷达本身就导致他的成本是居高不下的,我们知道TOF这种方式要测量光飞行用时,要做到这一步,需要皮秒级别精度的计时器,同时对于激光器和接受装置都是极大挑战。这里的挑战到不都是技术难度上,还在于其中的核心传感器就造价不菲,并且常年依赖进口。并且在生产中难度很大,几乎每台雷达都需要非常专业的技师手工校正。成本自然就居高不下了。
我们RPLIDAR采用另一种方式,叫做三角测距。通俗说就是通过光学的几何特性,使用计算机视觉方式来求出距离。这种方式好处是只需要传统的摄像头的成像设备。因此成本自然就会降低。
当然,就像这个问题问的是有前提的,就是在保证精度前提下来实现低成本。激光雷达精度或者说是性能有这个几个考量。首先自然是测量精确度。行业内也有不少声音,反应三角测距雷达有个硬伤,就是在远距离下精度下降。
这是个不争事实,但是这恰恰是我们RPLIDAR的优势。其实配合好算法,这个问题可以一定的缓解。比如下图是目前常规三角测距雷达在测量3-4米距离以外物体的效果,会发现本该是笔直的墙壁,测量出来出现了锯齿。
随着距离增加,如果算法不做出优化,那么这个现象会非常严重,直接会影响后续SLAM算法。
我们在这块处理上对内部算法做了很多优化,可以很好改善这个问题:
另外,三角测距雷达相比TOF雷达还有一个区别在扫描频率,我们的RPLIDAR A1的第一代产品是每秒5圈的旋转频率,结合一秒2000次的测距频率。这个参数对于像扫地机这类的场合其实是够了。不过对于服务机器人这类应用,就显得偏慢。
要提高速度,光提高电机转速其实不够,那会让点变得更加稀疏,本质是要提高一秒测距频率。这同样对于算法优化以及光学系统会有挑战。目前我们新一代的RPLIDAR A2实现到了4000次采样率,从而做到10hz扫描转速。其实本质也是靠算法。
一般来说,目前要做到实用化,采样率需要达到1800sps,所以对于这个问题,简单说就是依靠算法革新,保证在保持精度的条件下实现低成本。
这个问题其实要站在适用场景下来讨论。现在外借认为机械方式的激光雷达存在寿命问题,不如固态的雷达,这其实就是误解。
目前行业内高低端的激光雷达都是机械方式的,很多在工业的关键领域承担安全保全职责,因此说他们有寿命问题是不成立的。相比,固态雷达到目前还是概念产品,它虽然是固态的,但工艺稳定性有待验证,说它就比机械寿命长,值得商榷。
不过针对目前机械激光雷达,的确有一个寿命制约因素,就是很多都会使用到导电滑环这个部件。包括我们的第一代雷达之前也是这样。
这个部件是用来实现两个旋转物体之间信号和供电传输的。我们知道雷达工作的时候要连续旋转。要给这个旋转部分供电和通讯,就要靠滑环。
不过导电滑环标准品的寿命是很短的,只有几千小时。也就是说雷达如果直接用一个标准滑环,持续工作几个礼拜就会坏。因为滑环会被磨损,那就没法给雷达供电和通讯了。这就会有寿命问题。
我们当时研发RPLIDAR其实用的已经是定制的滑环,当时我们直接提出设计方案给供应商去定做。就这么搞了好几个来回。所以目前RPLIDAR A1在扫地机这类场合下其实寿命不存在问题。
但如果用到服务机器人下,问题就会有。因为这种场景下要求机器人7*24待命。针对这个问题,我们后来提出了光磁融合技术。
这个名字是我们专门取得,是一个专利性技术。它的核心是使用无线供电和光通讯这类接触手段来代替导电滑环。对于RPLIDAR A2,我们还是用了自己设计的无刷电机。这样做的话,我们的雷达在7*24连续工作的情况下,也会有5年以上寿命。
现在其实我们第一代的雷达也同样使用光磁融合技术了,因此我觉得目前对我们雷达来说,这个寿命问题是完全得到了解决。
做激光雷达产品,如何看待产品安全问题?
单独对激光来说,我觉得的确不当使用会有安全问题。毕竟他只是一种光源,我们如果盯着太阳看,一样也会灼伤眼睛。关键在于怎么使用。
但对于激光雷达,我觉得激光导致安全问题是不存在也不应该存在的。因为一个合格的激光雷达产品,它必须通过激光等级认证。像我们RPLIDAR在设计上也会动态检测激光器功率,确保安全。
目前行业内对于激光是有严格的安全等级指标的,目前RPLIDAR符合一类激光器(CLASS I)等级。这个等级表示无论在什么情况下,激光雷达产生的激光都不会对人眼产生损伤。要满足Class I,就要求激光平均功率只有几个微瓦。这是非常微弱的信号了,不会产生问题。
相比而言,可能我们日常生活中用的LED手电的功率和危害要比激光雷达要大很多。因为目前LED还缺乏严格的安全等级规范。其实很多产品光功率反而是超标的。
激光雷达技术除了应用在机器人(包括无人车)身上,还能在哪些其他领域中得倒应用?
其实激光雷达一开始就不光为了机器人而诞生,只是最近我们因为机器人和无人车才去了解它。传统上,激光雷达用于工业的安全检测领域,就像科幻片的那种激光墙,人进入会报警,工业内用激光雷达做这个的很多。
此外,激光雷达用在空间测绘上也很多。比如用我们RPLIDAR构建的办公室环境。
还有就是一些新媒体行业,要做一个超大的多点触摸屏幕,传统靠电阻电容屏是做不了的,业内一般也会用激光雷达。
目前来看,高端的激光雷达厂家都只有国外厂家。国内初步像我们开始做低成本的激光雷达开始起步。区别在于定位不同,国外更多专注在高性能、工业级别的雷达。这主要是历史积累造成的,和工业发展大背景有关系。对于高性能雷达,必须要具有更久的研发经验和更多的实际产品测试才能做得到。这也是我们目前国内缺乏的。
不过目前服务机器人行业其实对激光雷达是很好的机遇,我觉得国内如果能把握这个机遇,还是有希望能在也些细分领域超于国外同行。
Q:如今SLAM已经能在扫地机器人身上使用,有不少的移动机器人公司也都看好SLAM,但并没有听说哪个公司真的做出比较成熟的视觉导航系统,这是因为什么原因呢?
A:vSLAM目前还在研究阶段,我们说它火主要是因为目前在学术界vSLAM处在高速发展阶段,大家愿意研究。但实际应用有很多问题要克服,比如对于传感器对环境光依赖,运算负荷和嵌入式设备成本功耗空间的矛盾,另外,构建的地图本身难以直接用于路径规划导航。
其实这块我们一直也投入在做视觉方案。2009年我们最早就是做视觉,当年monoslam、stereocam我们都有做。但目前的判断是,它是未来方向,但目前不成熟。
Q:对服务机器人以后的实用性功能性有什么建议吗?
A:这块我们认为是要先找到killer application,扫地机器人是一个点,但要有更多的爆点存在。
就像以前PC行业,在真正的PC技术使用前,其实最早流行的是商用制表机与家用是游戏机。我们觉得服务机器人其实先要有这样一个阶段,现在能做的就是先把其中导航定位问题为大家做好,帮助这些爆点出现。
Q:目前开源的SLAM算法还是比较多的,您推荐使用哪一种比较好呢?
A:前面也说过,导航和SLAM是两回事,本来也不需要通过SLAM。很多机器人其实只是运行门特卡罗方法做定位,没有SLAM。
哪一款其实很难推荐,要看具体应用。简单说我们认为目前开源算法要直接拿来商用是不可能了,有很多现实问题他们都没解决。因为这类算法都是学术界出生,他们不会去处理具体工程问题。 但如果做研究,目前ROS中主流的gmapping、hector slam都是可以拿来做饰演的。
雷峰网原创文章,未经授权禁止转载。详情见转载须知。