具身调研-LIBERO

开源仓库:LIBERO github

Paper:LIBERO paper

NeurIPS 2023 的一个 Benchmark,现在已经被刷到 99 分了,不过是一个比较好的了解具身 Task 的渠道。

LIBERO 包括四个 subtask(总计 130 个任务):

  • LIBERO-Spatial:10 tasks,一组对象,布局不同,测试模型对空间关系的理解

  • LIBERO-Object:10 tasks,相同场景布局,不同对象,测试模型对对象类型的理解

  • LIBERO-Goal:10 tasks,由相同的对象和布局组成,但任务目标不同,测试模型对不同面向任务的行为的了解。

  • LIBERO-100(100 tasks for pretraining)

LIBERO 利用程序化生成(Procedural Generation)技术,构建了 130 种不同的家居操作任务(例如:把碗放到盘子里、打开特定的抽屉等)。它为你规定好了:初始场景长什么样、机器人能拿到什么观测(RGB 图像、关节角度)、任务的语言提示词(Prompt)是什么,以及判断任务是否成功的奖励函数。

LIBERO 项目实现了三种终身学习算法:

  • ER (Experience Replay) 经验回放 1902.10486 On Tiny Episodic Memories in Continual Learning

    复制代码
      保存少量数据。当 agent 学习到新任务时,ER 会利用包含旧数据和新数据的组合数据进行训练。
  • EWC (Elastic Weight Consolidation) 弹性权重整合法 https://arxiv.org/pdf/1612.00796

    复制代码
      EWC 是一种基于正则化的方法,它会对那些在任务学习中起重要作用的网络参数施加较强的正则化约束。这些参数的重要性是通过 Fisher 信息矩阵来估计的。
  • PACKNET 1711.05769 PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning

    复制代码
      在学习新任务时,算法会移除网络中不太重要的神经元,然后重新初始化被删减的部分,只学习与新任务相关的参数。

另外还提供了架构

BDDL 文件

在 LIBERO 中我们能看到很多 .bddl 文件。BDDL 的全称是 BEHAVIOR Domain Definition Language(BEHAVIOR 领域定义语言)。它是由斯坦福大学等团队在 BEHAVIOR 项目中提出的一种基于一阶谓词逻辑(First-Order Logic)的文本数据格式。

它与 PDDL(Planning Domain Definition Language,规划领域定义语言)语法很相似(都使用 Lisp 风格的括号对齐),而区别在:

  • PDDL 通常包含操作/动作声明(:action),规定了状态如何转移,用于符号规划器(Planner)生成动作序列。

  • BDDL 移除了动词(Action Symbols)。 它只定义状态,不定义动作。它把具体的运动和动作如何执行完全交给了底层的物理仿真器(如 RoboSuite、OmniGibson)以及机器学习策略(Policy),它只负责作为裁判来初始化场景和检验最终结果。

仿真环境(基于 RoboSuite)会自动加载这些 .bddl 文件,并在每个时间步检查机器人的操作是否满足了 Goal Conditions,以此来给机器学习算法计算奖励(Reward)或判定任务是否完成。

底层依赖

底层物理引擎(真正的引擎):MuJoCo

LIBERO 并没有自己写物理法则。它最底下使用的是 MuJoCo。这是一个极其强大的物理引擎,负责计算重力、摩擦力、机械臂关节的动力学以及物体之间的碰撞。

中间层仿真框架:robosuite

在 MuJoCo 之上,LIBERO 使用了 robosuite。robosuite 将 MuJoCo 复杂的 C++ 接口封装成了友好的 Python 接口,提供了现成的 Franka 机械臂模型、夹爪模型、摄像头渲染功能等。

而 LIBERO 是建立在 robosuite 之上的任务集和评测标准。