专栏名称: 果壳
果壳网(Guokr.com)是开放、多元的泛科技兴趣社区。
51好读  ›  专栏  ›  果壳

如何造一个像哆啦A梦一样的机器人?

果壳  · 公众号  · 科学  · 2017-03-25 19:26

正文

【时长14'07'',建议在WiFi条件下观看视频】

本视频出自 2016万有青年大烩




机器人和电脑的区别是什么?


大家可以花一秒钟想一下。

我认为区别在于操作的能力。举个例子,Siri,是一个很聪明的电脑,它可以跟你对话,但它不能拿东西,它没有办法去没有操作任何现实世界的物品。



但一提起哆啦A梦,你会觉得它是一个机器人。



大家仔细观察哆啦A梦是怎么拿东西的?你会发现它会伸出一个小手指



不记得是2011年还是2010年,PNAS曾发表一篇论文,由芝加哥大学、康奈尔大学几个研究组一起合作,研究出了一个现实版的哆啦A梦的手。



这边就是当时论文里面得不同的配图,有它的结构,有它的原理,有它对不同物体识别的方式,以及最后测评的一个效果。



这个东西有几种不同的实现,它的原理非常简单。下图中,最左边就是我在2011年的时候自己实现的,我当时在一个气球里面装满了大米,然后拿一个吸尘器吸,其实当时直接用嘴吸都可以达到这个效果。中间是南洋理工的一群人自己在网上做的,大家在网上可以搜到。右边那个是正式拿了发明者的授权成立了商业公司做成的产品,是一个商业级别的真正的gripper(抓手)。




机械臂如何完成一个动作路径?


Manipulation(操控)主要分成三个部分,这也是机器人做任何具体的动作,做任何具体的事情要经过的三个步骤,分别是感知、规划和操作或者是运动。这可以认为是我这5年来干的事情。


我们做了一个通用机器人,它的实现形式是一个移动的操作臂,也就是机械臂,叫做mobile manipulator。下面这个是在我们办公室里面,机械臂自己导航到仓库,看盒子里面有什么东西,去判断盒子里东西的位置、姿态是什么样子的示例。




机器人从底座的移动到机械臂的移动,到如何实现对物品的识别,到抓取,到避开,都是完全自动的,没有任何的人工帮助。这本身也是两台机器人配合的一个过程。



感知:描述周边环境



先讲第一个感知的部分。感知就是要描述你周围的世界,你周围的环境是什么样子的。这是借用现在最火的自动驾驶的图,自动驾驶其中很重要的能力就是感知。



这张图显示的是recognition的部分,它可以识别一个图片里有什么东西,大概在哪个方位。这也是传统的CV里做的最多的一点。



这张是segmentation,就是把图片做一个分割,比如把人全部染成绿色,道路全部染成紫色,识别出来标志信号是黄色的。把画面里这些不同的功能加以区别,这样一来机器人就可以进行下一步的动作。


而我们目前集中力量做的,也是做真正有操作能力的机器人需要攻克的难点,是pose estimation,也就是判断一个物品的姿态。



大家可以看到,右面图里有个白色的区域,这是系统识别零食盒的一个模板,当零食盒被转动之后,系统能够重新识别出它再画面里具体哪个位置,通过重新计算之后白色的区域又再次准确识别了零食盒的方位,更重要的是它朝着什么方向


那么感知还有其他的方式,比如说触觉

这是基于电子的触觉传感器的原理图。

这是基于光学的触觉传感器的一个原理图。


这个触觉传感器非常非常昂贵,大概是15000美金一支。它是基于流体内部的定位、电压区别,做的一个触觉的传感器。



在所有的这些事情里面,科学的部分和工程的部分,其实并不是泾渭分明的,但是大家可以看到哪些部分属于科学,比如说光学、比如说电的基本原理,电阻是怎么工作的,电路本身是怎么工作的,比如说在做视觉识别的时候,怎么做模式识别,怎么用神经网络判断什么东西是什么,在什么地方,这都是属于科学研究的部分,特别是像计算机里面相关的内容,都是属于我们叫做形式科学的部分。


那么工程部分则涉及到,比如说视觉这件事情,就涉及到你如何去组视觉的服务器,你如何选镜头,你如何搭建后面的算法,你在算法实现成代码的时候,你如何取组织代码,包括传感器你如何去选材料,如何去制作,这就是工程的部分。



运动规划:怎么从A点到达B点


在sense-plan-act大图里面的第二块,也是最主要的一块,是Motion Planning,或者叫运动规划,就是解决如何从A点移动到B点,不碰到周围的障碍物的问题。这是我们刚才视频里面有展示的图,就是机器人做运动规划的一个图。


大家可以仔细看有一个虚幻的机械臂的动作,就是它在计算运动规划的过程,可是这个臂的运动太快了,它一直在追那个规划,追自己的幻影。


运动规划讲起来是一个比较大的复杂的话题,简单说明一下。


假如这个画面上绿色的三角形是一个机器人,右上角的圆点是机器人的参照坐标,中间那个大的蓝色部分是一个方形的障碍物。对于这个机器人来说,实际上是有三个不同的参数可以用来描述它的完整状态——X、Y的坐标,以及它的旋转方向。

在这个情况下,我假设它的旋转方向是不变的,也就是XY两个参数就可以描述这个机器人的一个完整的状态。

假如说我以坐标蓝点作为一个参照点的话,这个机器人能够到达,或者说它的参考坐标点能够到达的那个区域就是红线以外的区域。这是一个很重要的概念,后面所有的东西都是以这个基础的。



再假设,这个三角形的机器人本身发生了形变。左边是机器人的工作空间,右边是它的配置空间(configuration space)。在工作空间里,机器人完整的形体由蓝色三角形来描述;在配置空间里面,机器人的状态由一个小绿点来描述。当机器人本身的形状变化的时候,虽然障碍物没变,但是机器人在配置空间里能够达到的位置是一直在变化的



刚才谈论的是一个二维的情况,这是一个三维的情况。大家可以看到右边的平面里面的小三角形机器人,如果它拥有旋转的能力,它的状态空间就会形成这样的三维的形状,看起来就会非常非常的复杂。


左边是一个在二维空间里面的机械臂,右边是它对应的configuration space。


这个是在motion panning里面最经典的两个算法,左边这个叫Dijkstra,右边这个叫A*。A*的算法是给一个机器人寻找最优路径的一个算法,它可以更快的去搜索到最后的结果,白色的部分就是机器人已经经过的搜索过的空间,很明显A*比Dijkstra要快很多。


这是motion panning里面其他的比较流行的算法。左边是PRM(Problistic Road Map),红色的是障碍物,绿色的是提前算好一些的连接,黑色是最后算出来那条轨迹。

右边这个叫做Rapid Random Exploring Tree,这是现在最常用的,也是最实用的算法——怎么在空间里面从起点到终点拉一条线。

这个也是比较常用的一个算法,叫做人工势长法


上面讲的是二维的状态空间、三维的状态空间,其实真正的机器人的状态空间自由度非常高,维度也非常高。



这个图左边是我们的机器人,我们叫Dorabot Picker,它有10个自由度,底盘有前后移动、左右移动,旋转和升降共4个自由度,机械臂有6个自由度,加起来就是10个自由度。如果再算上手指的6个自由度,那总共就是16个自由度。

右边是NASA的机器人叫做Valkyrie,NASA的humanoid机器人是类人机器人,这个机器人全身上下能动的关节一共32个,也就是说不管是左边的机器人还是右边的机器人,如果要运动的话都必须要在非常高维的空间里做好规划才能实现。



抓取规划:怎么抓取物件?


而grasp planning则是解决机器人怎么去抓取一个物体的问题。

这个是基于simulator的,基于模拟器的一个grasp plan。



这是我们在视频里面展示的,基于高度信息的grasp plan。


所有的这些形式科学的部分,特别是数学基础都是科学的部分,而如何真正做出这些机器人,就是对应的工程的部分。



执行:让机器人执行规划


下图是一个机器人执行规划时的一个示意图。


这个是最经典的控制机械臂运动或者任何的执行器运动的经典的算法叫做PID

左边是它的原理图,右边是真正去调节PID三个参数的时候系统的响应。


下面给大家看一系列的制品,这些都是日本东京大学做机器人执行做得很好的一个实验室做出来的。


不管是把手机扔到空中重新接到

两台机器人一台扔球一台挥棒

  

还是机械手在空中可以用镊子夹住飞上来的一粒米。

所有的效果实现都需要在科学上解决,比如说传感器本身是怎么工作的,电机是怎么工作的,如果做模式识别,在理论上如何解决模式识别这样的问题,在实现的时候你要选造机械手你要选择传感器的材料。


如果大家看完还觉得机器人的科学性不够强的话,可以看一下这个。



这是斯坦福大学一个叫BDML实验室做的,基于壁虎爬墙利用的范德瓦尔斯力,在机器掌心做了个非常非常小的执行器,可以让壁虎形的机器人能够实现爬墙的效果。



左边就是范德瓦尔斯力的一个原理,右边就是他们如何真正地在工程上实现,就是做出一个人工的材料,让这个材料附在任何物体表面的时候,都能使用范德瓦尔斯力来和表面产生一个支撑力。


最后的最后,再分享一个有趣的东西,还是刚才那个东京大学做的——通过高速的相机,高速的执行,高速手的tracking、跟踪,可以实现百分之百胜利的猜拳机器人




更多精彩内容

点击“阅读原文就知道!




点击“阅读原文”看更多精彩视频