这家公司,竟然将自动驾驶算法用在了他们的扫地机器人上。
大材小用?
还真没有,虽然道路交通很复杂,但家里也一样。
不仅要在靠近柜脚床脚时减速,还要在“看见”障碍物(掉在地上的袜子、缠绕的数据线)时来个急刹车。
还得肩负起逗猫遛狗的责任,给上班的你直播宠物的“作案现场”。
问题来了,机器人想要避开物体(如数据线、猫狗),用目标检测算法不就行了?
但目标检测算法只能识别已知物体,无法识别、测量未知物体的距离。
想让机器避障,除了检测特殊目标,还需要自动驾驶技术中的一项核心算法三维感知,即判断障碍物距离和三维尺寸(体积大小)的能力。
人眼会下意识地判断物体与自己的距离。
机器要想“学会”这种能力,同样需要先拥有“眼睛”。
深度感知用到的测距方法有很多,包括红外、超声波、激光、3D结构光、3D ToF、单目视觉、双目视觉等。
那么,为什么要选择双目视觉算法?
简单来说,就是让机器像人一样,用两只眼睛看世界,产生“深度”感。不然,机器人看着你和身后的花瓶,会认为是你正顶着一个花瓶,而不会产生“深度”感。
如果只有单目(只用一只眼睛,利用时间和判定框大小变化去测量距离)的话,机器也有办法判断距离,但就与人一样,没办法判断得那么精确。
例如,左右手各举一支笔,在闭上一只眼睛后,试着将笔尖对笔尖——是不是容易对不上?因为距离感变差了,所以笔尖总是容易互相错过。
那么,激光雷达呢?
这的确是一个好东西,如果多个雷达全方位感知,机器就拥有了“神之视角”,每个角落都能看得清清楚楚。
然而,它造价太昂贵。如果在机器人身上装上可以无死角扫视房间的雷达数量,它就变成了“行走的小金库”,价格让人无法直视。
此外,如红外、超声波等算法,避障精度不如双目准确;至于3D ToF、结构光等算法,不仅成本高,需要额外配摄像头做目标检测,而且没有区分物体的能力,只能通过大小判断障碍物。(例如,薄薄的袜子可能就被误吸了)
这也是为什么,双目视觉算法在无人车与无人机领域“备受欢迎”。
而现在,双目视觉算法也被用在了扫地机器人上。
机器的“眼睛”,通俗点来说就是各种大大小小的传感器。(激光雷达、相机后面的传感器)
传感器通常的工作原理,是机器(在角α顶点处)发射红外线、超声波、激光,通过“眼睛”(下图角β的顶点)接收到后,再根据反射回来的角度、相位或时间,来判断距离(d)。
而双目视觉的根本原理,就像是将这个三角形变成了3D版:
它的原理就两步:①确定视差,即将两个相机拍下来的照片进行对比,找出两张照片中相同的点间像素差,②基于视差,通过已知的双目空间几何关系,计算立体空间中各点的距离。
但相比人脑的高精度计算,想要实现计算机的双目识别,并不只有解三角形这么简单。
一个重要的原因,就是在步骤②这一块,计算机本身并不知道摄像机拍的两张照片哪里是一样的。
这就导致双目视觉算法的开发变得非常困难,但带来的收益也很高。
不过,双目视觉算法仍然有缺点,它受光线影响依旧很大。
所以在光线不足时,就用算法去主动“补上光线”。
以石头T7 Pro扫地机器人的算法为例,双目视觉模块分为视觉控制和深度估计两部分,一个智能补光,一个估计深度。(甚至专门做个红外拍出的相片,搞成数据集,训练补光识别效果)
但自动驾驶算法,也绝不仅仅只靠“两只眼睛”。
与人类不同,无论是自动驾驶汽车、无人机、还是扫地机器人,都可以说是“全身遍布”着眼睛。
其中就包括LDS(激光雷达)。
当双目视觉算法遇上激光雷达(能搞定所在高度的平面避障),在二者的结合之下,机器人不仅能完美避开3cm以上的障碍物,还能通过它们“找准自身定位”。
此外,激光雷达也会用在SLAM的建图和定位上。
不过,在实际应用中,单靠双目视觉算法和激光雷达,还远远不够。
小于3×5厘米的物体,会比较麻烦,既要区分出要清扫的部分(纸屑、地毯)、又要避开一些容易缠住的障碍(数据线)。
这种情况下,双目视觉算法就成了最好的“辅助”:协助目标识别算法,将需要避开的物体检测出来,准确地区分垃圾与障碍物。
目标检测模型上,T7 Pro自研的神经网络借鉴了SSD,YOLO,及CenterNet等多种新型模型,目前还在不断地迭代。
算法上,石头采用了“一分为二”的待遇:高于3厘米的物体,绕障碍物边沿避障和清扫;
小于3厘米的物体,按种类进行清扫(纸屑、地毯)或避障(宠物便便、数据线)。
数据集上,石头也“别有用心”:选出了一些特殊的物体,进行“有差别对待”。
例如,大家都有所担心的动物便便,石头T7 Pro的算法中直接加入了便便的识别(同情做数据集的一秒钟),在接触之前,远远地就避开它。
哪怕不在家,扫地机器人也不会把宠物便便拖得满地都是。
虽然算法目前已经迭代到了能够识别9种物体的“体量”(还在增加ing),但不是所有的物体都像宠物便便这样,会受到“远远避开”的待遇。
9类常见障碍物:底座类(吧台椅、风扇、手持底座、平底座、灯底座)、体重秤、线团、插线板、鞋子、粑粑、织物(如袜子)、易卡家具( 如U型椅)、簸箕
例如鞋子、风扇这种相对较为安全的物体,离得近一点再避障也没什么问题(推开一点不重要,扫干净就行)。
以及,这部分算法还有个小彩蛋。
在你上班的时候,这个扫地机器人就能化身小管家,“监督”宠物:是不是又把食盆打翻了?
不过,视频只有直播,没有云存储,也就是说,其他人甚至没办法窃取你家的数据,所以,不用担心扫地机器人会“变身间谍”。
从深度感知部分来看,扫地机器人深度感知的原理,与无人驾驶算法有着相似之处:
如下图,算法包含三大部分,第一部分是传感器数据的获取,第二部分是信息的提取,第三部分是独特导航算法的融合(后融合)。
但这并不意味着,扫地机器人的算法与无人驾驶汽车的算法一样。
在实际应用上,扫地机器人需要“近距离避障”(晚点刹车,扫得更干净),自动驾驶汽车则相反,需要以“安全”为主(尽早刹车)。
所以,虽然二者的避障核心都是自动驾驶中的双目视觉算法,但数据处理方式不同。
从根本上来说,它们都是智能机器人,为了让生活变得更方便而存在。
石头科技CTO、本硕毕业于浙大的吴震,在接受量子位采访时表示,基于用户场景持续迭代,扫地机器人才能更好地适应千家万户的多样性。
例如,内测的时候,先对身边的人“下手”:
在我们第一代产品内测时,我们发现有一位同事家里,一件老家具很容易卡住机器人。
后来我们就给这位同事买了一件相似的新家具,然后把这件老家具搬到实验室,作为我们标准测试项目。
而扫地机器人被发明出来的初衷,本质上与无人驾驶汽车一样,目的是将人类从劳动(驾车、琐碎的家务等)中解放出来,聚焦于生活。
吴震相信,伴随着计算机视觉的发展,智能机器人的视觉算法也会变得越来越完善。
“扫地机器人,在我们看来是机器人技术在家庭环境下的第一个应用,但不会是最后一个。它不是终点,而是开始、是未来。”
期待这些未来的智能机器人,能(让我们变得更懒)更加解放我们的双手。