写点什么

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

  • 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:252241
          用户头像
          陈思 InfoQ编辑

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

          关注

          评论

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

          从各行业的实际运用中,窥见华为云虚拟专用网络VPN的强大性能

          清欢科技

          公共网络安全,还得看华为云虚拟专用网络VPN

          清欢科技

          运维训练营第十课作业

          好吃不贵

          BAT大厂java程序员面试必问:JVM+Spring+分布式+tomcat+MyBatis

          钟奕礼

          程序员 Java 面试 Java、 java 编程

          华为云弹性负载均衡ELB,如何保障服务器不瘫痪?

          爱科技的水月

          华为云连接CC服务助企业联通全球

          爱科技的水月

          Github星标80k的阿里大牛强推JDK源码笔记,6到飞起

          程序知音

          Java 源码 jdk 后端技术

          史上最全JVM大全详解!java程序员细节到极致的一次,魔鬼

          钟奕礼

          程序员 Java 面试 Java、 java 编程

          华为虚拟专用网络VPN,为何备受游戏厂商喜爱?

          清欢科技

          华为云VPN,经典跟专业版企业应该怎么选?

          清欢科技

          如何实现线上线下良好互通?华为云CC支持一点接入多点通达

          爱科技的水月

          2022年度盘点|聚焦运维服务,云智慧的高光时刻

          云智慧AIOps社区

          运维 AIOPS 智能运维 云智慧 智能运维AIOps

          WIKO+鸿蒙生态:海外品牌中国化的新范式

          脑极体

          回顾与展望Zebec举办的“Web3.0 TechHive Summit 2022 大会”

          BlockChain先知

          8年java技术岗面试官总结:2022超强面试大全,抓住2022的小尾巴

          钟奕礼

          程序员 Java 面试 Java、 java 编程

          华为云弹性负载均衡服务,如何助企业应付流量压力

          爱科技的水月

          更加灵活、稳定,华为云虚拟专用网络VPN双活网关优势明显!

          清欢科技

          Kafka的灵魂伴侣Logi-KafkaManger(2)之kafka针对Topic粒度的配额管理(限流)

          石臻臻的杂货铺

          kafka 后端

          无代码的未来

          俞凡

          无代码

          安全可靠,弹性灵活--华为虚拟专用网络VPN

          清欢科技

          【web 开发基础】PHP8中对数组操作的新变化(56)

          迷彩

          List 数组 字符串 PHP基础 PHP8

          5分钟搞懂BFF

          俞凡

          架构 BFF

          5分钟搞懂Web3架构

          俞凡

          架构 web3

          【web 开发基础】PHP8 中类的基本操作(57)

          迷彩

          面向对象 PHP基础 PHP8 实例化

          笑对过往、活在当下、期盼未来

          阿Q说代码

          程序员 flag 年度总结

          GitHub屠榜第一的微服务架构深度解析,简直太硬核了

          小小怪下士

          Java 程序员 微服务

          Zebec的“Web3.0 TechHive Summit 2022 大会”圆满落幕,回顾与展望

          股市老人

          什么是WebSocket

          穿过生命散发芬芳

          websocket 12月月更

          【kubernetes入门到精通】Kubernetes的健康监测机制以及常见ExitCode问题分析「探索篇」

          码界西柚

          Kubernetes 云原生 服务监控 12月月更

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