开源软件让机器人编程变得和编写应用一样简单

10 提交 / 0个新回复
最新回复
开源软件让机器人编程变得和编写应用一样简单


三十年前,拜形形色色的DOS版本所赐,个人电脑大放异彩。今天,机器人的开发也将借力于机器人操作系统,即ROS的出现。摩根·奎格利(Morgan Quigley)在2006年攻读研究生学位时,就编写了他的第一套ROS迭代程序。现如今,他推出的的开源代码正在重新定义机器人学以及其中的技术限制。从2010年的v1.0版本起,ROS已经成为机器人所用软件的既定标准。
奎格利参与筹建的开源机器人基金会(Open Source Robotics Foundation)刚刚在去年夏天完成。它坐落于加州的山景城(Mountain View),并专门负责ROS的开发。参观他的办公室时,给人的感觉就好像是进入了一座未来的机器人之城:人们可以随时随地将便宜的零件方便快捷的拼在一起,组装成一台机器。奎格利的工作台上堆满了机械手指,这些都是组装机器人手用到的模块。“这些手会说ROS语,”奎格利打趣道。他身上的T恤衫上印着一条关于编程的俏皮话:shirtcount++;。
与传统的机器人技术不同,奎格利所开发的拥有四根手指的机械手并不通过中央处理器来控制。它的手指与手掌的关联处由14个低成本,低功耗的处理器分工控制。在这样的设计下,机械手在做一些诸如捡起铅笔之类的任务时,内部信号的传输更为简单,且操作将更为协调。所有的软件和电子元件的使用都是开源和开放的。任何一个机器人开发者都可以讲奎格利的设计拿来使用或是改进。
奎格利的终极目标是将成本降低到最少的同时,利用这些创新技术来建造一些更加灵敏,更加全能的机器人来完成各种任务。软件工程师们也不用费心费力的去从机器人最基本的功能开始设计,因为所有的软硬件都是开放的。事实上,ROS在机器人上的运用已经开始;简单至叠衣服,复杂至高级车间里的流水线工作。“它将会实现许多我们从前梦寐以求的事情,”奎格利说。
故事的主线
不像80年代和90年代的大部分孩子,奎格利对星球大战里或是星际迷航的C-3PO机器人都不是很感兴趣。相反地,在上小学时他被一样其貌不扬,但看得见摸得着的物品所深深吸引:一台 Apple II 电脑。在课堂里,他用 Logo 语言编写了一组能让屏幕里的卡通乌龟移动的程序——这组程序即是日后ROS里turtle mascot的前身。在他1998年就读位于犹他州的Brigham Young大学时,他第一次见到了真正的机器人。他被它彻底迷住了。“机器人是电子元件,软件,和真实的世界的集合体,”他这样说道。“是它们让软件来到并感受这个世界。”
当奎格利来到斯坦福选修机械学习的研究生课程时,他加入了吴恩达(Andrew Ng)的实验室。这个实验室与斯坦福人工智能机器人研究所(STAIR) 有合作研发关系。一台典型的工业机器人通常会在一个固定的场地里执行一项简单但受严格控制的任务,比如先进汽车车间里的机器人。但是,吴恩达想要开发出一只不收场地限制的多功能机器人。比如,STAIR需要让机器人对“把订书机递给我”这项指令做出满意的回应。那么STAIR首先需要理解指令,对走廊、电梯等办公室的必经之路进行定位,打开门,走向办公桌,从众多尺寸差不多的物件中找出订书机,拿起来,带在身上,最后交还给指令发起人。
作为吴恩达的助教,奎格利脑子里很清楚,他需要几个学生开发一个软件框架,其中每个人的程序必须异步开发,这样当它们集成写入到机器人里后才不会因为一个程序的崩溃而导致整个机器人罢工。ROS对此有解决方案:它使用一个预先分配好的对等系统用以连接所有的资源——内载技术与外界互动——然后对机器人发出工作指令。
2007年时,他开始与硅谷一家名为Willow Garage的公司合作研发机器人与相关的开源软件。在随后的两年里,奎格利与Willow Garage的程序员们各司其职:前者负责监督和审查ROS的系统架构,后者负责在ROS的前期开发工作基础上继续延伸。在2010年,ROS一经推出便迅速成为机器人软件架构的主流之选。
与字面意思不同,ROS其实并不是一个严格意义上的操作系统。它是一个能够优化传统操作系统的架构(理论上说,任何操作系统都包括在内,比如Linux)。它可以提供很多常用的机器人功能所需要的软件模块,比如计划行动,识别物品,和动作支配。所以,如果你想让你的机器人识别周遭,你不用为此编写任何代码;你只需要插入相关的ROS软件模块即可。作为一个可以自由更改的开源产品,它已经吸引了一大批兴趣爱好者对它的功能进行改进和拓展。
用户可以运行任意多个这种独立模块。模块可以用于测试,可以拔下来调试错误,或是在不干扰整体的情况下进行恢复。因此,有了ROS,机器人可以被多台拥有各自不同操作代码的机器所操纵——比如一台笔记本专门负责定位,一个服务器专门用来负责图像识别,或是一部安卓手机专门用来下达高层指令。这些都可以在机器人徘徊漫游的时候实时实现。
奎格利设计的意义并不仅仅关乎技术,还关乎社交与沟通。兴趣爱好者在完成代码的开发后可以自由地分享成果,而不是让它们在中央服务器里藏着掖着。“这很重要。开发者可以享有他们应得的赞誉,同时也可以自己决定产品的共享,”奎格利说。“在这个叫做ROS的怪物里,这些人的代码不会丢失。”
伟大的计划
奎格利的下一步计划是让ROS成为所有机器人系统的新起点——大的小的,贵的便宜的,学术或商用,网络版或单机版。
对于一些低成本处理器来说,在它们的下一代设计中兼容ROS是极其重要的。便宜的处理器正变得越来越强大。这将把机械智能从以往的大本营桌面级处理器带到新的领域并用来操作轮子、关节和摄像头。曾几何时,图像识别需要一整排服务器来完成。在不久的将来,一台小小的照相机也许就能胜任。
奎格利也希望能让ROS的控制范围从一台机器人发展到多个机器人。一些工厂和车间无疑会因此受益:试想一下成排的机器人分工协作的壮观场景。除此之外,云端管理机器人队伍也不难想象:用户将ROS指令发往数据中心,然后指令进一步被传送到控制中心。“ROS也许会转变成一个在线知识库,”奎格利说道,“当有人说,‘把那个订书机从我的桌上拿开,‘也许一个订书机的CAD模型就会立即从云端下载下来。”