写点什么

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

  • 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
    • 3.0x
    • 2.5x
    • 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
      • 3.0x
      • 2.5x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00


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


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


      00:00 / 00:00
        1.0x
        • 3.0x
        • 2.5x
        • 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
          • 3.0x
          • 2.5x
          • 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


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

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

          关注

          评论

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

          GitHub 标星 1.3k+,一款超赞的用于字符串处理的 Java 8 库,附带源码分析

          沉默王二

          Java GitHub 字符串

          红外遥控接收发射原理及ESP8266实现

          IoT云工坊

          人工智能 物联网 esp8266 红外遥控 pwm

          前嗅教你大数据:常见的网站反爬策略与解决方案

          前嗅大数据

          大数据 数据采集 代理IP 网站反爬 反爬策略

          感恩,改变世界的开发者们!

          京东科技开发者

          开发者 程序人生

          索引为什么能提供查询性能...

          小林coding

          MySQL 索引 数据结构与算法 B+树

          【领福利啦】广受欢迎的人工智能实战课程+“智能音箱”教程免费领!

          小冬

          人工智能 技术 福利 项目实战 智能音箱

          接口测试和性能测试的区别

          测试人生路

          软件测试 性能测试 接口测试

          秋招offer收割机——后台服务器开发方向(专业学习路线图总结)

          程序员小灰

          c++ Linux 后台开发 架构师 服务器端开发

          Week1 命题作业

          J

          极客大学架构师训练营

          一文带你了解两种Transformer文字识别方法

          华为云开发者联盟

          人工智能 AI 文字识别

          微前端架构初探

          徐小夕

          Java 大前端

          监控之美——Prometheus云原生监控

          华章IT

          运维 云原生 监控 Prometheus

          LeetCode题解:17. 电话号码的字母组合,队列,JavaScript,详细注释

          Lee Chen

          算法 大前端 LeetCode

          11.11数据可视化大屏设计揭秘

          京东科技开发者

          大数据 AI 数据分析 数据可视化 交互设计

          看了 5 种分布式事务方案,我司最终选择了 Seata,真香!

          程序员小富

          Java 分布式事务 seata

          广电总局严打劣迹主播:净化行业环境迫在眉睫

          石头IT视角

          Linux笔记(二): vim 基本操作

          Leo

          Linux 学习 大前端

          基于 GraphQL 的信息聚合网关的实现与展望

          QiLab

          高并发系统设计 graphql

          支付宝阿牛整合Netty+Redis+ZooKeeper「终极版」高并发手册

          Java架构追梦

          Java redis zookeeper 面试 Netty

          继linux命令之后,我又给你们整理了网络命令归纳,快给我来收藏

          北游学Java

          Linux 网络协议 网络 网络层

          区块链可信数据服务平台搭建解决方案

          t13823115967

          区块链 可信区块链

          甲方日常 58

          句子

          工作 随笔杂谈 日常

          没想到我费劲心力学的kafka,还不如阿里大佬整理的这份学习手册,真的是差距啊

          小Q

          Java kafka 学习 架构 面试

          Spring 源码阅读环境的搭建

          程序员小航

          spring 源码 环境安装 源码阅读 spring 5

          CPU虚拟化系列文章1——x86架构CPU虚拟化

          华章IT

          云计算 Linux cpu 操作系统 虚拟化

          收藏 | 阿里程序员常用的 15 款开发者工具(2020 版)

          阿里巴巴云原生

          阿里云 程序员 开发者 云原生 Java 25 周年

          最详细的Linux TCP/IP 协议栈源码分析

          linux大本营

          Linux 后台开发 网络编程 C/C++ TCP/IP

          谈谈持续集成、持续交付和持续部署三者究竟是什么,有何联系和区别呢!

          ShenDu_Linux

          Linux 持续集成 架构师 持续交付 持续部署

          Linux 服务器开发学习路线总结(配图 c/c++ )后台开发、Golang后台开发、后端技术栈

          Linux服务器开发

          Linux 后台开发 后端 Linux服务器 Go 语言

          高德最佳实践:Serverless 规模化落地有哪些价值?

          阿里巴巴云原生

          阿里云 Serverless 云原生

          技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验

          华为云开发者联盟

          AI 华为云 modelarts

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