应用

技术

物联网世界 >> 物联网新闻 >> 物联网热点新闻
企业注册个人注册登录

扫地机器人“离家出走”的真实原因找到了:差个自动驾驶算法

2020-11-03 14:34 量子位

导读:想让机器避障,除了检测特殊目标,还需要自动驾驶技术中的一项核心算法三维感知,即判断障碍物距离和三维尺寸(体积大小)的能力。

竟然将自动驾驶算法用在扫地机器人上。

大材小用?

还真没有,虽然道路交通很复杂,但家里也一样。

不仅要在靠近柜脚床脚时减速,还要在“看见”障碍物(掉在地上的袜子、缠绕的数据线)时来个急刹车。

还得肩负起逗猫遛狗的责任,给上班的你直播宠物的“作案现场”。

问题来了,机器人想要避开物体(如数据线、猫狗),用目标检测算法不就行了?

但目标检测算法只能识别已知物体,无法识别、测量未知物体的距离。

想让机器避障,除了检测特殊目标,还需要自动驾驶技术中的一项核心算法三维感知,即判断障碍物距离和三维尺寸(体积大小)的能力。

人眼会下意识地判断物体与自己的距离。

机器要想“学会”这种能力,同样需要先拥有“眼睛”。

自动驾驶避障核心:双目视觉算法

深度感知用到的测距方法有很多,包括红外、超声波、激光、3D结构光、3D ToF、单目视觉、双目视觉等。

那么,为什么要选择双目视觉算法?

简单来说,就是让机器像人一样,用两只眼睛看世界,产生“深度”感。不然,机器人看着你和身后的花瓶,会认为是你正顶着一个花瓶,而不会产生“深度”感。

△错位图

如果只有单目(只用一只眼睛,利用时间和判定框大小变化去测量距离)的话,机器也有办法判断距离,但就与人一样,没办法判断得那么精确。

例如,左右手各举一支笔,在闭上一只眼睛后,试着将笔尖对笔尖——是不是容易对不上?因为距离感变差了,所以笔尖总是容易互相错过。

那么,激光雷达呢?

这的确是一个好东西,如果多个雷达全方位感知,机器就拥有了“神之视角”,每个角落都能看得清清楚楚。

然而,它造价太昂贵。如果在机器人身上装上可以无死角扫视房间的雷达数量,它就变成了“行走的小金库”,价格让人无法直视。

此外,如红外、超声波等算法,避障精度不如双目准确;至于3D ToF、结构光等算法,不仅成本高,需要额外配摄像头做目标检测,而且没有区分物体的能力,只能通过大小判断障碍物。(例如,薄薄的袜子可能就被误吸了)

这也是为什么,双目视觉算法在无人车与无人机领域“备受欢迎”。

而现在,双目视觉算法也被用在了扫地机器人上。

3cm以上:结合LDS,障碍物全识别

机器的“眼睛”,通俗点来说就是各种大大小小的传感器。(激光雷达、相机后面的传感器)

传感器通常的工作原理,是机器(在角α顶点处)发射红外线、超声波、激光,通过“眼睛”(下图角β的顶点)接收到后,再根据反射回来的角度、相位或时间,来判断距离(d)。

△考验高中数学知识的时候到了

而双目视觉的根本原理,就像是将这个三角形变成了3D版:

它的原理就两步:确定视差,即将两个相机拍下来的照片进行对比,找出两张照片中相同的点间像素差,基于视差,通过已知的双目空间几何关系,计算立体空间中各点的距离。

但相比人脑的高精度计算,想要实现计算机的双目识别,并不只有解三角形这么简单。

一个重要的原因,就是在步骤这一块,计算机本身并不知道摄像机拍的两张照片哪里是一样的。

△在计算机眼里,这些小黄鸭就是一堆数据

这就导致双目视觉算法的开发变得非常困难,但带来的收益也很高。

不过,双目视觉算法仍然有缺点,它受光线影响依旧很大。

所以在光线不足时,就用算法去主动“补上光线”。

以石头T7 Pro扫地机器人的算法为例,双目视觉模块分为视觉控制和深度估计两部分,一个智能补光,一个估计深度。(甚至专门做个红外拍出的相片,搞成数据集,训练补光识别效果)

但自动驾驶算法,也绝不仅仅只靠“两只眼睛”。

与人类不同,无论是自动驾驶汽车、无人机、还是扫地机器人,都可以说是“全身遍布”着眼睛。

其中就包括LDS(激光雷达)。

当双目视觉算法遇上激光雷达(能搞定所在高度的平面避障),在二者的结合之下,机器人不仅能完美避开3cm以上的障碍物,还能通过它们“找准自身定位”。

此外,激光雷达也会用在SLAM的建图和定位上。

3cm以下:目标检测算法的最强“辅助”

不过,在实际应用中,单靠双目视觉算法和激光雷达,还远远不够。

小于3×5厘米的物体,会比较麻烦,既要区分出要清扫的部分(纸屑、地毯)、又要避开一些容易缠住的障碍(数据线)。

这种情况下,双目视觉算法就成了最好的“辅助”:协助目标识别算法,将需要避开的物体检测出来,准确地区分垃圾与障碍物。

目标检测模型上,T7 Pro自研的神经网络借鉴了SSD,YOLO,及CenterNet等多种新型模型,目前还在不断地迭代。

算法上,石头采用了“一分为二”的待遇:高于3厘米的物体,绕障碍物边沿避障和清扫;

小于3厘米的物体,按种类进行清扫(纸屑、地毯)或避障(宠物便便、数据线)。

数据集上,石头也“别有用心”:选出了一些特殊的物体,进行“有差别对待”。

例如,大家都有所担心的动物便便,石头T7 Pro的算法中直接加入了便便的识别(同情做数据集的一秒钟),在接触之前,远远地就避开它。

哪怕不在家,扫地机器人也不会把宠物便便拖得满地都是。

虽然算法目前已经迭代到了能够识别9种物体的“体量”(还在增加ing),但不是所有的物体都像宠物便便这样,会受到“远远避开”的待遇。

9类常见障碍物:底座类(吧台椅、风扇、手持底座、平底座、灯底座)、体重秤、线团、插线板、鞋子、粑粑、织物(如袜子)、易卡家具( 如U型椅)、簸箕

例如鞋子、风扇这种相对较为安全的物体,离得近一点再避障也没什么问题(推开一点不重要,扫干净就行)。

以及,这部分算法还有个小彩蛋。

在你上班的时候,这个扫地机器人就能化身小管家,“监督”宠物:是不是又把食盆打翻了?

不过,视频只有直播,没有云存储,也就是说,其他人甚至没办法窃取你家的数据,所以,不用担心扫地机器人会“变身间谍”。

继续“拆解”后的发现

从深度感知部分来看,扫地机器人深度感知的原理,与无人驾驶算法有着相似之处:

如下图,算法包含三大部分,第一部分是传感器数据的获取,第二部分是信息的提取,第三部分是独特导航算法的融合(后融合)。

但这并不意味着,扫地机器人的算法与无人驾驶汽车的算法一样。

在实际应用上,扫地机器人需要“近距离避障”(晚点刹车,扫得更干净),自动驾驶汽车则相反,需要以“安全”为主(尽早刹车)。

所以,虽然二者的避障核心都是自动驾驶中的双目视觉算法,但数据处理方式不同。

从根本上来说,它们都是智能机器人,为了让生活变得更方便而存在。