阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

打造通用机器人,需要什么样的软硬件?

  • 2020-12-23
  • 本文字数:3909 字

    阅读完需:约 13 分钟

打造通用机器人,需要什么样的软硬件?

作者自述: 根据莫拉维克悖论,人工智能系统可以相当轻松地解决“成人认知”任务,如下棋或通过基于文本的智力测试,而完成基本的感官动作,如爬来爬去或抓东西这些一岁孩子就能做的事,却非常困难。是的,我们造飞机是为了载人飞行。飞机是很棒的飞行器。但是,要造一只会飞的鸟呢?在我看来,这就是通用机器人的真正内涵。


本文最初发布于 Eric Jang 的个人博客,由 InfoQ 中文站翻译并分享。


声明:本文只是我的观点,不是我所服务的企业或同事的观点。

Hacker News 讨论:https://news.ycombinator.com/item?id=25247499


根据 莫拉维克悖论,人工智能系统可以相当轻松地解决“成人认知”任务,如 下棋 或 通过基于文本的智力测试,而完成基本的感官动作,如爬来爬去或抓东西这些一岁孩子就能做的事,却非常困难。


任何人,只要他尝试过制造可以做任何事的机器人,他都会意识到,莫拉维克悖论根本不是一个悖论,而是一种必然,因为我们的物理现实是如此的复杂和难以满足。现代人类一生要穿越数百万平方公里的土地,这是一个充满危险和机遇的迷宫。如果我们必须像下棋一样,有意识地处理和考虑所有对生存至关重要的感觉输入和运动决策,我们就很可能会被达尔文进化论从基因库中选择出来。进化优化了我们的生理机能,使我们能在一刹那间执行感觉运动技能,并感觉很轻松。


另一种理解这种复杂性的方法是,调整你的日常生活以适应严重的运动障碍,比如失去手指或在没有双腿的情况下在旧金山到处转转。


通用机器人的软件


那些从事机器人工作的人,他们要直接面对“现实世界”的混乱,对他们来说,这种感觉运动问题的困难尤其明显。现实世界如此之复杂,我们该如何构建用于控制机器人的软件抽象?


我最讨厌的一件事就是,人们没有慎重对待莫拉维克悖论,就提出一个编程模型,将高级机器人任务(“给我准备晚餐”)分为具有清晰计算逻辑边界的顺序或并行计算:淘米、将肉解冻、准备盘子、摆桌子等。这些子任务可以进一步细分。因为传统软件有太多的边缘情况需要处理(“图像是否包含一只猫?”),所以当一项任务不能进一步分解时,我们可以尝试调用机器学习模型作为“魔法软件”来实现那个功能。


这种思维方式——调用 ML 代码的符号逻辑——来自于那些习惯于遵守 Software 1.0 抽象 和 使用烹饪作类比的编程教程 的工程师。


你知道像“给我拿点心”这样的任务需要多高的智能吗?在最低水平的运动技能上?请允许我举例说明。我录了一段小视频(在这段视频中,我打开一包椰枣),并对我在这个过程中执行的所有运动子任务做了标注。


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    在 36 秒钟的时间里,我数出了大约 14 项运动和认知技能。它们发生得如此之快,以至于我都没有意识到,还需要回过头来一帧一帧地分析才能发现。


    下面是我做的一些事:


    • 利用过去的经验打开这类包裹,了解物品的性质以及用多大的力量;

    • 不断调整策略以应对不可预见的情况;

    • 当手滑时调整抓力;

    • 设计了一个特别的 Weitlaner 撑开器,可以借助指关节增加作用在拉链袋上的力量。


    作为一名机器人专家,看到 视频中的动物 如此迅速地做出决定,然后又看到我们自己的机器人艰难地做着最简单的事情,我感到很惭愧。我们甚至要将机器人视频的速度提高 4 到 8 倍,以免人类观众感到无聊!


    看完这个视频,让我们考虑一下机器人控制目前是什么情况。在过去十年左右的时间里,多个研究实验室已经在使用深度学习来开发机器人系统,使机器人可以抓取视野中的任何物体。抓取是一个重要的问题,因为为了操纵物体,人们通常必须首先抓取它们。谷歌 Robotics 和 X 团队花了 2 到 3 年 时间来开发我们自己的系统 QT-Opt。这是一项巨大的研究成果,因为它是一种几乎适用于任何物体的通用方法,原则上也可以用于学习其他任务。


    有些人认为,这种抓取物体的能力可以封装到一个简单的编程 API 中,然后用于帮助实现人类级操作。毕竟,难的问题是由简单的问题组成的,对吧?


    我认为事情没那么简单。要在上层 API 中调用“pick_up_object()”,意味着机器人抓取的开始和结束之间有明确的语义边界。如果你重新看下上面的视频,我做了多少次抓取?我一点也不清楚,这样的话,该把这些函数调用放到哪里。这里有一个 调查,如果你感兴趣的话,可以参加下这个关于“在这个视频中你看到了多少次抓取”的投票,我将在这篇博客中更新结果。


    如果我们仅仅是打开一包椰枣就需要额外解决 13 项操作能力,而每一项能力都需要 2 到 3 年的时间来构建,那么我们距离制造出具备人类能力的机器人还有很长的路要走。对于如何将所有这些行为整合到单个算法程序中,并没有一个明确的策略。相信我,我希望现实足够简单,复杂的机器人操作可以在 Software 1.0 中完成。然而,随着我们从拾取和放置这样的简单任务进入到灵活复杂的任务,我认为,我们需要彻底地重新思考如何在机器人技术中整合不同的能力。


    你可能已经从视频中注意到,“抓取”的意思有点模糊。生物智能并不是专门为抓取而进化出来的——相反,手以及手的行为来自于几个核心驱动力:调节内部和外部环境,寻找零食,重复。


    这并不是说我们目前的机器人平台和 Software 1.0 编程模型在机器人研究或应用方面毫无用处。通用函数 pick_up_object() 仍然可以与“Software 1.0 代码”相结合,成为一个对亚马逊仓库和其他物流配送中心来说价值数十亿美元的可靠系统。在任何非结构化环境中,对任何物体进行拾取和放置仍然是一个未解决的、有价值的、高难度的研究问题。


    通用机器人的硬件


    为了“打开一包椰枣”,我们需要什么机器人硬件?


    Willow Garage 是家用机器人的开拓者之一,他们展示了远程操作的 PR2 机器人可以用来整理房间(注意,这里需要两个手臂来更精确地放置枕头)。这包含了许多拾取和放置操作。


    00:00 / 00:00
      1.0x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00


      这个视频制作于 2008 年。那是 12 年前的事了!想到时间已经过去了这么久,而指针似乎只移动了一点点,真是发人深省。现实就是很困难。


      Stretch 是一个简单的伸缩臂,连接在一个竖直的金属支架上。它可以做诸如拾取物品、擦拭平面和打开抽屉之类的事情。


      00:00 / 00:00
        1.0x
        • 2.0x
        • 1.5x
        • 1.25x
        • 1.0x
        • 0.75x
        • 0.5x
        网页全屏
        全屏
        00:00


        不过,未来学家要当心了!对于那些没有充分考虑物理现实的人来说,只要他们看到演示,机器人可以在一个家庭中做有用的事情,就会得出结论,同样的机器人已准备好在任何家庭中完成这些任务。


        视频显示,机器人打开烘干机的门(左开),从里面取出衣服。这段视频有点欺骗性——我认为,摄像机从物理上看不到烘干机的内部,所以即使人类可以远程操作机器人来完成这项任务,要确保烘干机被完全清空也会存在很大的困难。


        这张照片是我自己的烘干机,它有一个靠墙的右开门。我不确定 Stretch 能否适应这个狭小的空间,但 PR2 肯定无法打开这扇门。



        在制作机器人演示视频时,现实世界的边缘情况常常被掩盖,这些视频展示的通常是机器人在非常理想的环境中运行。但是,人类在家里所做的任务是非常多样化的。不管是 PR2,还是 Stretch,都无法蹲在桌子底下捡起地上的线头,站在椅子上换灯泡,填补卫生间的缝隙,用开信刀打开邮件,把盘子从洗碗机移到高柜里,拆纸箱以便放到垃圾桶,出去取回邮件。


        当然,他们甚至无法打开一包使用拉链袋包装的椰枣。如果你觉得这很复杂,这里有一段我切草莓、清洗餐具和装饰芝士蛋糕的第一人称视频。这是用绑在我头上的 GoPro 相机录下来的。看我手指的每一次抽动——每一次都是一个单独的操作任务!


        00:00 / 00:00
          1.0x
          • 2.0x
          • 1.5x
          • 1.25x
          • 1.0x
          • 0.75x
          • 0.5x
          网页全屏
          全屏
          00:00


          我们经常谈论,机器人将来可以为我们做饭,但我认为,现在市场上的任何硬件都不可能做到这一点。如果想要一个机器人可以完成人类社会中的任何任务,唯一可行的硬件是就是一个成人大小的类人机器人,它有两只胳膊,两条腿,两只手各有五个手指。


          就像我讨论过的机器人中的 Software 1.0 一样,机器人的形态仍然有很大的发展空间,仍然可以为研究和商业应用提供价值。但这并不能改变这样一个事实:任何可供选择的硬件都不能完成人形机器人在以人为中心的空间中所能完成的所有工作。Agility Robotics 公司 是其中一家处于硬件设计前沿的公司。那些在制造经常用手的实体机器人的人——你们能想象你正在制造的机器人组装自己的复制品吗?


          为什么我们不设计一个对机器人更友好的环境呢?


          一种折衷方案是设计机器人的同时也设计环境,以避免上述不可行的任务。这样可以简化硬件和软件问题。我经常听到这样的例子:


          1. 洗衣机比双手操作的机器人在水槽里洗得更好,而烘干机比人把衣服晾在外面风干更高效。

          2. 飞机比鸟类更擅长运送人。

          3. 我们造的是汽车和道路,而不是更快的马。

          4. 轮子能承受更多的重量,比腿更能有效地利用能量。


          对于家庭机器人,我们可以设计特殊的烘干机门,让它们可以很容易地打开,或者针对每个任务定制末端执行器(工具),用来代替有五个手指的手。我们可以把门变成电动门,通过远程 API 调用自动打开,这样机器人甚至不需要自己打开烘干机。


          另一方面,为什么要费心去制造一个机器人呢?我们可以再想一下,将住宅本身设计成一个 ASRS 系统,它可以像个 Dumbwaiter 一样从房子的任何位置为你取来你需要的任何东西。这样就不用让机器人在家里到处走动了。


          对于商业应用来说,这种实用主义的思维方式很好,但作为人类和科学家,这感觉有点像在认输:我们不能让机器人像人类一样完成任务。不要忘记激励我们许多人走上这条职业道路的科幻梦——不是要把事情做得更好,而是要尽人类所能。人类可以用手洗盘子和擦干衣服,所以一个真正通用的机器人应该也能做到。对许多人来说,这种努力是我们能获得的最接近圣经的创造行为:我们要照着我们的形像,按着我们的样子造人,管理海里的鱼、空中的鸟、地上的牲畜,管理地球和上面爬行的所有昆虫。


          是的,我们造飞机是为了载人飞行。飞机是很棒的飞行器。但是,要造一只会飞的鸟呢?在我看来,这就是通用机器人的真正内涵。


          查看英文原文:


          https://blog.evjang.com/2020/11/moravec-bots.html


          公众号推荐:

          跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

          2020-12-23 14:251543
          用户头像
          陈思 InfoQ编辑

          发布了 576 篇内容, 共 262.7 次阅读, 收获喜欢 1293 次。

          关注

          评论

          发布
          暂无评论
          发现更多内容

          简化业务代码开发:看Lambda表达式如何将代码封装为数据

          华为云开发者联盟

          函数式接口 数据 代码 函数 lambad

          QA为什么转换角色

          BY林子

          软件测试 QA 职业发展

          阿里架构师经验分享!Android面试知识点总结宝典助你通关!顺利通过阿里Android岗面试

          欢喜学安卓

          android 程序员 面试 移动开发

          怎么提升写代码的能力

          阿里巴巴云原生

          程序员 个人成长 方法论 云原生 自我思考

          Soul网关源码阅读番外篇(一) HTTP参数请求错误

          Java 源码阅读 网关

          我所认为的产品经理能力模型

          day day up

          WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba

          阿里云视频云

          阿里云 WebRTC 视频云

          案例集锦|科技赋能,华为云GaussDB助千行百业数字化转型

          华为云开发者联盟

          数据库 华为云 企业应用

          IM即时通讯实现的原理

          v16629866266

          SpringCloud 从入门到精通 11---Nacos负载均衡

          Felix

          TarsBenchmark | 服务性能压测利器

          TARS基金会

          微服务 压力测试 TARS

          惊喜来袭!253页全彩免费电子书《Python 编程参考》正式上线发布

          穿甲兵

          Python redis 程序设计 Go 语言

          从根上理解高性能、高并发(五):深入操作系统,理解高并发中的协程

          JackJiang

          网络编程 高并发 协程 高性能 即时通讯

          Java 程序经验小结:返回零长度的数组或集合,而不是null

          后台技术汇

          28天写作

          2020中国ToB独角兽:估值逆势起飞,寡头效应加剧

          ToB行业头条

          《我想进大厂》之分布式事务篇

          艾小仙

          Java 面试 后端

          盘点2020 | 百度AI的2020

          百度大脑

          盘点2020

          合约跟单交易软件系统开发|合约跟单交易APP开发

          系统开发

          redis持久化怎么选?成年人从来不做选择...

          moon聊技术

          架构师 3 期 3 班 -week8- 作业

          zbest

          作业 week8

          COCO聊天挖矿系统开发|COCO聊天挖矿软件APP开发

          系统开发

          阿里巴巴2021年最新开源十亿级Java高并发系统设计手册

          Java架构追梦

          Java 阿里巴巴 架构 并发 系统架构设计手册

          阿里架构师深入讲解Android开发!教你一种更清晰的Android架构!BAT大厂面试总结

          欢喜学安卓

          android 程序员 面试 移动开发

          dubbo-go 白话文 | 从零搭建 dubbogo 和 dubbo 的简单用例

          阿里巴巴云原生

          Java 云原生 dubbo 中间件 dubbogo

          热情空前,家长纷纷变身“寒假规划师”,如何抓住这波热潮?

          ZEGO即构

          AI 在线教育 在线课堂

          iOS音视频--视频合集

          程序员 音视频 OpenGL ES GPUImage Metal

          使用Apollo升级一下yml文件管理和发布

          Sky彬

          springboo

          是找茬?还是装B?阿里面试每轮必问的“Spring Boot”意义何在?

          比伯

          Java 编程 架构 面试 计算机

          【有奖调研】中国人工智能开发者调研

          百度大脑

          SpringCloud 从入门到精通 12---Nacos配置中心

          Felix

          云原生 DevOps 的 5 步升级路径

          阿里巴巴云原生

          Serverless 容器 DevOps 微服务 云原生

          打造通用机器人,需要什么样的软硬件?_AI&大模型_Eric Jang_InfoQ精选文章