A ROBOT IN EVERY HOME 家家都有机器人--- 比尔盖茨(1)现在我们正处于一个产业崛起的时期,很多富有开创性的新技术成为这个产业崛起的基础, 一批优秀的企业为市场提供了专业的产品,还有许多迅速壮大的新兴企业正致力于推出创新型玩具,为机器人爱好者提供配件,以及其他各种有趣的利基产品然而,这个行业是高度分散的,还没有一个统一的标准或平台,且这个平台的搭建过程相当复杂、进展缓慢,且很少能够投入实际应用虽然机器人的发展的确是令人振奋的,但谁也不能准确地说出这个行业发展到关键规模的时间不过, 一旦到了这个时候,它很可能会彻底改变这个世界2)上面这段话当然也可以用来描述上世纪70年代中期的计算机行业,当时我和保罗 ? 艾伦(PaulAllen)刚刚创建了微软公司那时的大型计算机体积庞大、造价高昂, 通常用在大型企业、政府部门和其他一些机构的后台操作上为了迎接信息时代的到来,一流大学和工业实验室的研究人员正致力于基础模块的建立那时候英特尔公司刚推出了8080微处理器,Atari公司正在出售当时很受欢迎的电子游戏Pong,电脑爱好者们在自发组织的俱乐部里为这项新技术出谋划策3)但我现在所考虑的是当今的形势:机器人产业的发展状况与30年前的电脑行业极为相似。
今天用于汽车装配线上的工业机器人,类似于当年的大型计算机而机器人行业具有发展潜力的产品包括:外科手术的机器人、负责排爆的侦察机器人、以及负责清扫地板的家用机器人等 还有一些电子公司推出机器狗等玩具机器人,而很多机器人爱好者对乐高(LEGO)的机器人套件非常感兴趣4)同时,全球的一些精英们正设法解决机器人技术中最令人头疼的问题,比如视觉识别、导航及机器学习, 而且不断地取得了进展2004年, 美国国防部高级研究项目局(DARPA) 举办了首届机器人挑战大赛比赛位于道路崎岖的莫哈韦沙漠,全程142英里(大约227千米) ,比赛看谁能够研制出第一辆跑完全程的无人驾驶机器人在这次比赛中,成绩最好的参赛车也仅仅跑了7.4英里而在2005年的挑战赛上,有5辆参赛车跑完了全程,冠军车的平均时速达到了每小时19.1英里当年ARPA计算机网也正是靠美国国防部高级研究项目局(DARPA) 的大力支持才得以诞生的,这也是机器人行业与电脑行业的相似之处5)现在,机器人行业所面临的挑战也如同30年前的计算机行业各个机器人生产厂家没有统一的操作系统软件,以致流行的应用程序很难在不同的设备上运行另外, 机器人的处理器和其他硬件也没有一个统一的标准,几乎没有一种编程代码能够用在两台不同的机器上面。
如果有人想开发新的机器人,那么他们通常要从零开始6)尽管存在很多的困难,但当我与机器人行业内的大学研究人员、企业家、爱好者,乃至高中生谈到机器人的话题时,他们的热情和对未来的期许令我不由回想起自己的经历当年我和保罗 ? 艾伦一边看着各种新技术交叉渗透,一边憧憬未来家家户户的书桌上都摆着电脑的情景现在,当看到多种技术发展的趋势,我完全能够想象,机器人将走进我们未来的日常生活之中我坚信,分布式计算、语音、视觉识别,以及无线宽带网络等新技术,将开启新一代自主装置的大门,使电脑能代替我们完成现实中的各项任务或许我们就处在这个新时代的边缘,到那时,电脑将走下办公桌,能够帮助我们观看、倾听、触摸,以及操纵那些我们无法接触到的物品从科幻小说里走出来(7)“ 机器人” (Robot) 这个词在1921年因捷克剧作家卡雷尔? 恰佩克的提出而流行开来 其实,早在数千年前的古希腊古罗马神话中,已经有了打造人形机器人的想法,金工之神就用黄金打造了机器仆人公元1世纪,传说发明了第一台蒸汽机的工程师赫伦,曾设计出一些有趣的机器人,据说其中一台还能说话达? 芬奇在1495年描绘了一张制作机械骑士的草图,这个机器人骑士能够坐下,手脚还能活动。
成了公认第一个人形机器人的设计8)在过去的一个世纪,通过艾萨克 ? 阿西莫夫的小说 《我,机器人》、电影《星球大战》以及电视剧 《星际迷航》 等,机器人成为流行文化中的重要角色机器人在科幻世界中如此受到关注, 表明人们也相信有朝一日机器人将会走入我们的日常生活,成为我们的助手乃至伙伴 然而,尽管目前机器人在某些行业占有一席之地,例如在汽车制造业里,大约每10个工人就会有一个机器人,但要想达到科幻作品中机器人的水平,还有很大的一段距离9)造成这种巨大差距的一个原因就是,如果让电脑和机器人像我们期望的那样,感知周围的情况,并做出迅速准确的反应,是非常困难的事实证明,许多人们看来理所当然的本领对机器人来说却极其的困难,例如根据房间里其他东西的位置定出自己的相对方位,对声音做出反映并理解人们的谈话,抓起各种大小、 质地不同且易碎的物品等对于机器人来说,它们甚至分不清打开的门和打开窗的区别10)不过,研究人员正在探索解决的办法日益普及的拥有强大处理能力的电脑将成为研究者们的好帮手20世纪70年代,1MHZ处理能力的成本超过7,000美元,今天却只值几美分;1MB存储容量的价格也同样大幅下降通过如此廉价的计算能力,科学家就能够解决机器人应用中的基本问题。
例如,今天的语音识别程序已经具有相当不错的的识别能力, 但要机器人根据上下文理解出这些单词的含义就要难得多了相信随着电脑计算能力的不断提高,机器人设计师借助越来越强的处理工具,将能够解决更为复杂的问题11)高昂的硬件成本是影响机器人发展的另一个障碍,例如能够让机器人探测到与目标 物体距离的传感器,以及能够让机器人以适当的力度操纵物体的电机和伺服装置等但目前这些器件的价格也在迅速下降几年前, 用于机器人的精密激光测距仪价格高达1万美元左右,而现在只需2, 000美元就可以买到新推出的超宽带雷达测距传感器的精度更高,而售价却更为低廉12)现在,机器人制造商能够在合理的成本之下,为机器人配备全球定位系统芯片、摄像头、阵列式麦克风(从背景噪声中识别声音的能力优于传统麦克风),以及其他各种传感器由于电脑处理能力和存储容量的大幅提高,让现在的机器人已经可以承担例如打扫房间、 协助排除路边炸弹等工作而在几年前, 市面上出售的机器人根本不可能完成这些任务13)2004 年 2 月,我前往美国卡内基一梅隆大学、麻省理工学院、哈佛大学、康奈尔大学以及伊利诺伊大学等众多名牌大学发表演讲,讨论电脑在解决当今社会某些最紧迫的问题时发挥的重要作用。
目的是帮助学生们认识到计算机科学的重要性,希望借此鼓励他们中的一部分人投身技术研究每到一所大学, 发表演讲以后, 我都有幸直接看到学校计算机系一些有意思的研究项目几乎每所大学向我介绍的研究课题中,至少有一个与机器人有关14)当时,微软的同事们从一些学术界和机器人公司的研究者那里了解到,他们想知道我们公司是否会涉足机器人行业,希望微软能对他们的开发给予技术上的支持由于尚未涉足这个领域, 我们决定先委派战略智囊团的一员——在微软工作了25年的坦迪特罗尔进行广泛的实地调查,并与机器人行业内的人士进行交流调查结果表明, 人们普遍看好机器人技术的发展前景, 而且整个行业都希望能够开发出新的工具,使他们的研究工作更加简单化坦迪在调查报告中指出:“越来越多的人认为机器人行业正在向PC的体系架构过渡,并处于技术转折点上 卡内基—梅隆大学参加DARPA无人驾驶汽车挑战赛的领队雷德惠塔克不久前提出,现在硬件的性能已经基本达到要求,关键问题是要开发出合适的软件15)回想个人电脑发展的初期,那时我们意识到,还需要一个要素才能够将整个PC行业的初创工作推向关键阶段,并且把所有能够产业化的研究成果整合成一个行业事实证明,我们需要的正是微软的BASIC语言。
上世纪70年代, 我们开发了BASIC程序设计语言,这套语言为计算机行业建立起统一的平台,针对某套具体硬件开发的程序也可以在另一组硬件上运行了BASIC语言让电脑程序设计工作更加容易,吸引了越来越多的人投身计算机行业虽然为个人电脑的发展做出过实质性贡献的人数不胜数,但对于使PC革命最终成为可能的软硬件革新而言,微软的BASIC语言是关键的催化剂之一16)坦迪的报告让我清楚地认识到,现在的机器人行业正在经历30年前PC行业同样的情形,也必须找出行业中的关键要素因此,我要求坦迪带领一个团队,与机器人行业的专家合作开发出一套编程工具,让任何一个对机器人感兴趣,哪怕只懂得最基本的计算机编程知识的人, 也能轻易地编写出可在不同硬件上运行的机器人应用程序我们想了解, 能否为机器人开发者提供一套把各种软硬件整合到机器人设计中的通用基础工具,就像当年微软BASIC语言为电脑编程者所做的一样17)幸运的是, 微软公司首席研究与战略总监克雷格?蒙迪(CraigMundie)负责的一个研究小组已经开发出一系列先进科技,可供坦迪的机器人开发小组所用其中一项技术将对解决机器人设计中最困难的一个问题有所帮助:如何同时处理多个传感器发来的全部数据, 然后向机器人的各个驱动装置发送正确的指令,也就是我们所说的并发问题。
常用的解决方法是编写一个传统的单线程串行处理程序,通过一组长的循环指令,首先从各传感器读取全部数据并加以处理,最终将决定机器人行动的计算结果输出,然后整个循环又重新开始 这种模式的缺点显而易见:假如你的机器人刚刚收到传感器发来的最新数据,提醒它已经走到楼梯的边缘,而程序还在计算机器人的行进路线,并根据之前从传感器收到的数据命令机器人加速前进,这时候机器人很可能还没来得及处理刚收到的危险信号,就已经从楼梯摔下去了18)“并发”问题同时也困扰着除机器人以外的其他行业,现在,用于分布式计算机网络的应用程序越来越多,程序设计人员正在努力寻找一种有效的方法,来协调同时在多台服务器上运行的代码此外, 为了增强性能, 集成电路将两个或两个以上的处理器连接在一起,目前单处理器电脑已被装有多个处理器及多核处理器的电脑所代替,软件开发人员将需要一种新的方法来编写桌面应用程序和操作系统为了让并行处理的能力更好地发挥出来,新的软件必须解决并发问题19)解决并发问题的方案之一是编写多线程程序,这类程序可以让数据沿着多条路径同时进行处理 不过, 任何一位编写过多线程代码的程序开发人员都会告诉你,这是程序设计中最困难的任务之一。
对于这个问题,克雷格小组开发了“并发处理与协调运行”(ConcurrencyandCoordinationRuntime, CCR)CCR是一个函数库, 其中每个函数都是一组执行某项专门任务的软件代码有了CCR, 程序设计人员在编写多线程应用程序,用于协调一系列同时进行的动作时就更方便了CCR实现了协助程序设计人员充分利用多核及多处理器系统的能力,也成为机器人技术的理想工具比如说,有时候会出现这样的状况:机器人软件忙于向轮子发送输出命令,无暇处理传感器发来的输入信息,结果导致机器人一头撞在墙上如果机器人设计师借助CCR函数库编写程序,就能在很大程度上避免这样顾此失彼的事故20) 除了解决并发问题以外,克雷格小组通过“分布式软件服务” (DecentralizedSoftwareServices,DSS) 技术简化了分布式机器人应用程序的编写 这种分布式软件服务(DSS) 能够为开发者在编写应用程序时提供各项服务,例如读写传感器信息或控制电机等部件的编程,程序能够对各个独立运行的过程进行协调,这种方法类似于把来自不同服务器的文本、图片和信息等整合在一个网页上面分布式软件服务让软件的各个组成部分能够彼此独立运行,万一机器人的某个组成部分出了问题,可以将这一部分关闭并重启,甚至将它替换掉,而不用将整个机器人重启。
把这种服务软件与宽带无线技术相结合,就能很方便地通过网络浏览器对机器人进行远程监控和调节了21)更重要的是,这种分布式软件服务(DSS)的应用程序不一定要完全安装在机器人上, 它可以分布于多台电脑中这样, 就可以利用现在家用电脑上相对。