浅谈机器人编程新技能,神经任务编程NTP原理

机器人

524人已加入

描述

  在温哥华举行的IROS大会上,计算机视觉专家、斯坦福AI Lab&Vision Lab主任李飞飞做了“A Quest for Visual Intelligence”的演讲,这也是李飞飞首次参加IROS这一机器人为主题的大会。值得注意的是,近日在Arxiv发现了一篇讲述新型机器人学习框架的论文《Neural Task Programming: Learning to Generalize Across Hierarchical Tasks》,该论文的主要作者来自于斯坦福,其指导教师正是李飞飞及其丈夫Silvio Savarese。这也标志着人工智能和机器人两个社区在视觉与感知方面的重合度越来越大,之后的合作也会越来越紧密。

  机器人编程

  我们提出了一种名为神经任务编程(NTP)的新型机器人学习框架,该方法可以通过较少的示范和神经程序引导进行学习。NTP可将输入的规范性任务(例如任务的视频演示)递归地将其分解成更精细的子任务规范, 这些规范被传递到分级神经程序,通过可调用的底层子程序是与环境进行交互。同时,我们在三个机器人操纵任务中验证了我们的方法,在试验中,NTP展示了在显示分层结构和组合结构的顺序任务的强泛化能力化。 实验结果表明,NTP在学习长度不定、可变拓扑和不断变化的未知任务的学习和拓展有较好的效果。

  背景

  自越来越强调“人机协作”的今天,机器人通常在某些特定环境中与人进行长时间的交互,如物体分类、装配、和清理等。但是以往的机器人通常需要在固定的场景下才能与人交互,如何让机器人能适应复杂的操作任务、新的任务目标和周围环境,则是机器人技术中的一个重大挑战。

  设想一个仓库中的物体分类任务,这通常包括分类、检索、打包等具体任务,每个任务又可以分解为若干个动作,如抓取、移动、放下等,这些动作构成了如抓取和放置等子任务,如果在考虑到不同的对象、排序、子任务的排列组合,当中的变化将会非常复杂,例如,将四类物品分类放到四个容器中,这当中的组合会有256中之多。本文中,我们希望解决复杂任务规划的两个主要挑战,即a)从新的概念化到新的任务目标的学习策略,以及b)与长期环境交互的基本原生代码模块的组合。

  神经任务编程(NTP)原理

  NTP的关键基本思想在是跨任务学习和与共享域中的可重用表示。NTP对一个描述任务过程和最终目标时间序列的任务规范进行解释,并将其分层策略实例转化为一个神经程序。NTP从输入规范中解码生成任务目标,并将其分解为子任务并与周边环境进行交互和反馈直至搭成目标,每个程序调用环境观察和任务规范(输入),并输出下一个子程序和相应的子任务规范。

  机器人编程

  如上图所示,在给定输入、任务规范和当前环境的情况下,NTP模型预测需要运行什么样的子程序,并作为下一级子任务的输入,并判断当前程序是否结束,否则将继续循环执行任务 。

  测试

  该研究团队通过对模拟和实际机器人实验中的单臂操作任务模拟对NTP进行评估。任务包括:堆叠方块,目标分类和清理桌子。

  机器人编程

  该研究的两个目标:I. 在同一个域中学习多项任务;以及 II. 通过单一例子形成在测试中的泛化能力。

  

  如图所示,机器手可从模拟的Demo环境(包括图像、视频、VR输入)中进行学习并完成积木的堆叠;

  

  NTP编程:通过分级的任务条件输出策略归纳程序,调用Robot API进行操作。

  

  上图展示了在堆叠方块任务中 NTP 的样本执行轨迹图。任务是按指定要求堆叠字母块,顶层程序作为输入参与整个演示,预测下一个运行的子程序,并为特定输入作为指定任务的一部分,底层 API 调用机器人作出相应的动作(如Move_to(Blue)、Grasp(Blue)等)。当程序结束符(EOP)为 True,当前程序停止并返回其调用程序。

  

  如果环境发生变化(如人为破坏已完成的任务),机器人会探测到环境的变化并重复任务。

  

  任务结构的变化包括:改变完成条件(任务语义),可变子任务排列(任务拓扑)和更大的任务量(任务的长度)。随着任务数量的增加,NTP可以为新的任务师范及目标生成更好的结果。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分