
# OAKINK2：一个用于完成复杂任务的双手物体操控数据集

詹欣宇 $^{1*}$ 杨立新 $^{1*}$ 赵一飞 $^{1}$ 毛康瑞 $^{1}$ 徐汉林 $^{1}$

林泽南 $^{2,\ddagger}$ 李凯琳 $^{1}$ 卢泽武 $^{1\dagger}$

$^{1}$上海交通大学，$^{2}$华南理工大学

![Image](images/fac17c0f32eba002ff291eb0528e1855b6b022eea98094c8a33bffb7664c5683.jpg)

<div style="text-align: center;">Figure 1. An overview of the data and content of our proposed OAKINK2 dataset. OAKINK2 dataset focuses on bimanual object manipulation tasks for complex daily activities. 1) The top row shows the data collection process, including the task setup (top-left panel), human demonstration (top-center), and annotation (top-right). 2) The second row shows the three levels of abstraction constructed by OAKINK2 for complex tasks, including the Affordance, Primitive Task, and Complex Task. OAKINK2 dataset provides allocentric and egocentric videos of human manipulation process, as well as the corresponding 3D-pose annotation and task specification.</div>

## 摘要

我们提出了OAKINK2，这是一个针对复杂日常活动的双手物体操控任务数据集。为了将复杂任务构建为结构化的表示形式，OAKINK2引入了三个抽象层级来组织操控任务：可供性、基本任务和复杂任务。OAKINK2从以物体为中心的角度对复杂任务进行解码，将其视为一系列物体可供性的实现过程。第一层级的“可供性”描述了场景中物体所能提供的功能；第二层级的“基本任务”描述了人类为实现物体的可供性而与物体进行交互的最小单元；第三层级的“复杂任务”则说明了基本任务是如何组合且相互依赖的。OAKINK2数据集提供了多视角图像流以及人体、手部及各种交互物体的精确姿态标注。这一丰富的数据集可支持交互重建和运动合成等应用。

---

基于OAKINK2的三级抽象体系，我们探索了一种面向复杂任务完成的任务导向框架。该框架旨在生成一系列双手操控动作以实现任务目标。在CTC框架内，我们利用大语言模型（LLM）将复杂的任务目标分解为一系列基本任务，并开发了运动实现模型，用于为每个基本任务生成双手动作。OAKINK2数据集及相关模型可在<https://oakink.net/v2>获取。

### 1. 引言

研究人类如何通过多样化的物体操控行为来实现特定任务目标，一直是一项长期存在的挑战。近期的数据驱动方法在这一领域取得了显著进展，包括手-物姿态估计[1, 7, 14, 22, 24–26, 39, 66]、交互合成[^12] [^17] [^31] [^57] [^62] [^71]，以及动作模仿[^53] [^54]。然而，当前方法在实现对复杂任务完成的物体操控的人类级理解方面仍存在差距。尤其是，人类具备按照恰当顺序与特定物体交互以实现预期结果的卓越能力[^33]。这促使我们专注于将复杂操控任务中的手-物交互分解为连续的单元。

追溯以往的研究可以发现，手-物交互理解方面的进步离不开一系列手-物交互数据集的出现，这些数据集[^3] [^8] [^12] [^15] [^21] [^24] [^30] [^34] [^40] [^47] [^54] [^56] [^67] [^72]为数据驱动的方法提供了支持。在这些数据集中，OakInk[^67]是一个值得注意的例子。OakInk分析了物体的可供性（即物体/物体部件的功能属性[^18]），并收集了以人类意图为导向、旨在利用这些可供性的抓取交互数据。其中，“Oak”代表物体可供性知识，“Ink”则代表交互知识。不过，此前的OakInk存在两大局限：1）缺乏涵盖实现这些可供性全过程的人类演示数据；2）缺乏涉及多种物体可供性的复杂操作任务数据。

在本文中，我们提出了OAKINK2，对此前OakInk的数据与方法进行了扩展。为了应对复杂操作任务中固有的复杂性，OAKINK2采用了以物体为中心的视角，针对操作任务构建了三个层次的抽象：

1) 可供性：能够实现操作的物体/物体部件层面的功能。例如，瓶盖具备固定和打开瓶内物质的功能。

2) 基本任务（Primitive）：实现某一物体可供性所需的“最小”手-物交互序列。例如，为了实现“固定”这一可供性，需要将瓶盖拧上或按压在瓶口处，形成防止泄漏的密封结构。

3) 复杂任务：由多个基本任务按顺序组合而成，用于解决长时序、多目标的操作任务。这类任务被定义为“复杂”，是因为其目标需要借助不止一种物体可供性来实现。复杂任务还会明确各基本任务之间的依赖关系以及执行顺序。举个例子，要从密封的瓶中倒出液体，必须先拧开瓶盖，再倒出液体。

基于此，OAKINK2将复杂任务描述为有向无环图，此后将其称为基本任务依赖图（PDG）。在这些图中，每个节点代表一个基本任务，用于实现特定的可供性；有向边则体现了完成该任务时各基本任务的执行顺序。

基于上述方法，OAKINK2推出了一个大规模的双臂物体操作数据集。该数据集包含完成复杂任务的人类演示数据，配有多视角图像流以及人体、双手和物体的对应姿态标注。OAKINK2共收录了627段真实场景下的双臂操作序列，其中264段属于复杂任务序列。这些序列包含来自四个不同视角的401万帧图像（一个自我中心视角和三个非自我中心视角）。该数据集涵盖了四种操作场景、75个物体，共有9名受邀受试者参与数据采集。

OAKINK2具有多功能且以任务为导向的特性，能够应用于多种场景。在本文中，我们重点关注复杂任务完成（CTC）中的任务与运动规划问题。CTC包含两大核心组成部分：1）基于文本利用基本动作单元对复杂任务进行分解；2）生成与任务相关的运动轨迹以实现每个基本动作单元。针对第一部分，我们设计了一个基于大语言模型（LLM）的任务解释器，它能根据对复杂任务的文本描述生成任务依赖图，并规划这些基本动作单元的执行顺序。对于第二部分，我们提出了一种通用的任务感知运动实现模型（TaMF），该模型能根据与任务相关的物体轨迹，在基本动作单元层面生成手部运动轨迹。

综上所述，我们的贡献如下：

- 我们构建了以物体为中心的三级抽象体系，用于结构化理解复杂的操作任务，即可操作性、实现可操作性的基本动作单元，以及包含基本动作单元依赖关系的复杂任务。

- 我们推出了OAKINK2，这是一个大规模的真实世界双手物体操作数据集，其中包含了人类针对基本动作单元和复杂任务的演示数据。

- 我们提出了面向任务的复杂任务与运动规划框架CTC。该框架由基于LLM的任务解释器（用于复杂任务分解）和基于扩散模型的运动生成器（用于实现基本动作单元）组成。

---

### 2. 相关工作

手部与物体交互数据集。近期，研究界涌现出了大量关于手部与物体交互的数据集。早期的数据集[^3] [^12] [^24]主要聚焦于多样性有限的静态手部与物体交互场景。更近期的数据集[^8] [^15] [^21] [^34] [^41] [^56] [^72]则捕捉了动态的手部与物体交互场景，涵盖了双手交互[^15] [^34]以及与关节物体的交互[^15] [^72]。我们特别关注与物体可操作性相关的交互数据集。[^12]通过抓取类型标签来表达可操作性。[^3] [^15] [^56]收集了交互意图标签。[^30] [^67]研究了基于物体可操作性的手部与物体交互，并收集了物体分割结果和可操作性标签。[^41]则研究了工具-动作-物体配对场景下的手部与物体交互。我们提出的OAKINK2既收录了人类为实现最小程度的可操作性而进行的交互演示作为基本动作单元，也收录了在这些可操作性按特定依赖顺序被实现时的复杂任务演示。

操作任务的分解。将复杂的操作任务分解为不同层次上的多个基本单元，这一范式在研究领域被广泛采用。[^10]利用任务规划器的符号化接口来构建抽象状态空间，从而促进分层技能的复用。[^27] [^63]将任务规范分解为分层神经程序，其中底层程序可作为可调用的子程序与环境交互。[^9]通过串联多个灵巧的控制策略来实现长时程任务目标。[^2]采用基于语言的方法对动作层次进行分解。在我们的工作中，我们在OAKINK2中引入了一种以物体（可操作性）为中心的三级抽象框架，用于将复杂的操作任务分解为基本操作。

运动合成。运动合成旨在生成可信且逼真的人类动作序列。已有大量研究致力于生成人类运动[^51] [^52] [^59]，甚至是基于cVAE或去噪扩散等不同概率模型架构的交互动作[^17] [^36] [^37] [^57] [^58] [^62]。具体而言，[^36] [^37] [^58]根据物体运动来合成人类运动，并将后者作为前序模型的输入。受这些研究的启发，我们在OAKINK2中提出了新任务：任务感知型运动实现。该任务要求模型根据给定的文本任务描述和物体运动来合成手部运动轨迹。

操作任务中的基础模型。近年来，基础模型在完成操作任务中的应用日益增多。针对端到端基础模型[^4] [^5] [^11]的研究投入巨大，这类模型能从视觉和文本输入中输出控制信号。现有研究[^6] [^28] [^55]也利用了大型语言模型（LLM）的上下文学习能力和零样本泛化能力，从多种选项中选择动作以实现规划的递归式执行。[^29] [^37] [^55]中关于基于LLM的程序生成以完成任务的做法，启发我们探索LLM推理代码的能力，从而识别复杂任务中物体可操作性之间的相互依赖关系及其执行顺序。我们的OAKINK2引入了将复杂任务分解为相互依赖的、基于可操作性的优先级项，并配以多样化的图文描述。基于此，我们展示了OAKINK2在利用现有基础模型能力完成复杂任务方面的应用。

### 3. OAKINK2的构建

我们首先在第3.1节介绍如何获取三级抽象，随后在第3.2节详细说明数据收集与标注的细节。

#### 3.1. 复杂任务的获取

任务初始化。给定收集到的物体库，我们首先构建四种操作场景。每种场景都有其独特特征，并对应一组复杂的操作任务。这些场景包括：1）厨房餐桌；2）书房桌；3）演示化学实验室；4）浴室桌。接着，我们邀请四位标注员（👤👤）在这些场景中提出复杂任务，并选出完成这些任务所需的物体簇（见图2的第1列）。

#### 3.1.1 物体可供性分析

确定任务目标之后，我们便开始分析给定场景中物体的可供性。可供性的表述遵循前文OakInk中[^67]的定义：每种可供性都包含特定的物体部位分割结果（例如瓶盖）以及描述性短语元组（例如<secure, sth>），用以阐明该部位的功能。图2的第二列给出了这些可供性的示例。

#### 3.1.2 基本任务设计

在第二阶段，我们将基本操作定义为能够实现上述物体可供性要求的最小交互行为。“最小”指的是完成特定可供性功能所需的任务无需任何多余的交互过程。每个基本操作都包含起始条件、终止条件以及中间的手-物交互过程。例如，对于与刀刃相关的、用于<cut, sth>的可供性而言，对应的基本操作“切割”就要求执行者移动刀刃。

---

![Image](images/78d8418b9465c0ceb0d1b183e2cd4a3693c9054ce7595d67070e87a47de91bb0.jpg)

<div style="text-align: center;">Figure 2. Illustration of the complex task acquisition process. This figure uses a Complex Task: 'Prepare a bowl of hot sweet fruit tea.' to demonstrate the process. Initially, the annotators (◇) analyze the affordances of four essential objects (a gripper, a knife, a tea bottle, and a microwave oven) and design corresponding Primitive. For instance, to prepare fruit slices, the Primitive: cut associated with the knife blade is required. Following this, an expert (◇) arranges the scene for the Complex Task, and then the subject (△), utilizing the designed Primitive, plans the execution path of the Complex Task. Later, these execution paths are structured into a Primitive Dependency Graphs.</div>

刀刃必须完全穿过被切割的物体，这样才能使被切割的部分分离。在这一阶段，我们会收集所有现有的物体可供性及其对应的基本操作，从而形成一个基本任务池（见图2的第三列）。

#### 3.1.3 复杂任务分解

在第三阶段，我们将此前提出的复杂任务——这类任务具有时间跨度长、操控目标多等特点——分解为一系列短期且单目标的基本操作。由于复杂任务的完成依赖于基本操作的顺序，我们的方法还会明确各基本操作之间的依赖关系。因此，每个复杂任务都包含一系列基本操作，以及用于描述这些基本操作层级执行顺序的基本操作依赖图（PDG）。层级为0（L0）的基本操作是独立的，无需先完成其他基本操作；而最高层级的基本操作则负责让复杂任务得以完成。

我们采用专门的协议来获取这种分解结果及依赖关系。如图2的第四列所示，首先由专家（$\underline{\text{⚡}}$）设定场景和目标的具体描述；随后指示受试者（$\underline{\text{⚡}}$）利用任务池中的现有基本操作来描述完成任务的顺序；最后由专家记录并整理这一序列，形成基本操作依赖图，从而完成复杂任务的获取流程。

#### 3.2 数据采集与标注

获取这三个层级的抽象概念之后，受试者需分别在数据采集平台上完成基本任务和复杂任务（见图3）。

![Image](images/1161397676bf6468c26332e970714104a2a035fcd76f7b845eb999e0543035ab.jpg)

<div style="text-align: center;">Figure 3. Capture platform. 12 MoCap cameras are circled in blue and 4 RGB cameras in red.</div>

#### 3.2.1 采集设置

数据采集平台包含两个主要组件：用于记录操控过程的多摄像头系统，以及用于姿态追踪的光学动作捕捉系统。动作捕捉系统使用12台Optitrack Prime 13W红外摄像头，来追踪固定在受试者上半身、左右手以及交互物体上的表面标记点。多摄像头系统则由4台商用RGB摄像头组成，其中3台为客观视角，1台为主观视角。我们将所有传感器的采样率同步为30帧/秒，并校准两个系统之间的坐标转换关系。

#### 3.2.2 数据标注

物体姿态。刚体的姿态可直接通过动作捕捉系统求解。对于关节体的姿态，其基础部分的处理方式与刚体类似，而关节部分则分为两类。如果某部件足够大，能够附着足够多的标记点且不会阻碍交互，那么它就会像刚体一样被处理；否则，仅在该部件上附着一个标记点。该标记点的位置是在物体的标准坐标系中进行校准的。随后，根据关节类型（如旋转或平移），通过最小化观测到的标记点位置与在物体标准坐标系中恢复出的标记点位置之间的平方差，来确定关节参数。

---

![Image](images/87ce21857fd4413340061ba339e63195f6ef5c8dd51756913787d4512f33404d.jpg)

<div style="text-align: center;">Figure 4. Commentary of the task execution. The left column shows the current state of the scene. The center column shows the narrative dialog retrieved from experts. The right column shows the upcoming Primitive task to be executed.</div>

如果物体不会阻碍交互，那么它将被当作刚体来处理。否则，只会在该部位附加一个标记点。该标记点的位置是在物体的标准坐标系中进行校准的。随后，根据关节类型（例如旋转或平移），通过最小化观测到的标记点位置与物体在标准坐标系中恢复出的标记点位置之间的平方差，来确定关节参数。

人体姿态与表面。对人体姿态和表面的标注依赖于SMPL-X [^50] 人体网格模型。为了获取人体姿态和表面信息，我们采用了与MoSH++ [^44] 一致的两阶段拟合方法。在第一阶段，我们利用受试者处于T型姿势时采集到的标记点数据，来拟合受试者的SMPL-X形状参数 $\bar{\beta}$ 以及每个标记点在SMPL-X标准空间中的位置 $P_{\mathcal{M}}^{(c)}$。根据第一阶段的优化结果，我们可以确定受试者表面标记点与SMPL-X模型顶点之间的对应关系 $\mathcal{C}(\cdot)$。在第二阶段，我们基于已获得的形状参数 $\theta$ 和标记点对应关系 $\bar{\beta}$，拟合任务执行过程中每一帧的受试者姿态参数 $\mathcal{C}(\cdot)$。获得姿态和形状参数后，便可利用SMPL-X模型重建受试者的身体网格。其他如MANO等身体表示形式也是由此结果衍生而来。详情请参阅补充材料。

任务执行评述。操作过程完成后，我们会将视频记录发送给专家进行分析，请他们针对任务执行过程提供详细的评述。在每个基本步骤中，都会要求专家对当前任务状态及后续动作发表评论。具体而言，基于前一步骤的执行情况，专家需要：1）结合当前场景以及即将执行的基本步骤，总结为实现操作目标尚需完成的任务；2）利用可用的基本操作来描述下一步动作。这一过程如图4所示。专家提供的叙述文本随后会经由GPT-4 [^48] 进行润色，以形成评述内容。OAKINK2数据集便是以这些评述为基础构建的，因为它们体现了专家观察操作过程时的思维脉络。这些评述不仅能用于解读用户行为，还能为生成用户动作提供依据。

### 4. OAKINK2数据集

#### 4.1. 数据与标注列表

OAKINK2提供了记录操作过程的RGB视频。这些视频采集自多视角（1个自我中心视角和3个非自我中心视角）设置，以30帧/秒的速率同步，分辨率为$848 \times 480$。注释包含两部分：1）3D运动信息，包括交互过程中人体上半身、手部以及物体的姿态和形状（含关节参数）；2）任务规范，包括物体可供性、与这些可供性对应的基本动作、带有任务目标、初始条件、PDG、专家评论以及受试者完成顺序的复杂任务。3D注释质量的评估结果详见补充材料。关于3D手部关键点的注释会利用重建模型进行跨数据集验证，而与抓取动作相关的3D姿态则会针对其物理属性完整性进行检测。

#### 4.2. 数据集统计

OAKINK2设置了四种手-物交互场景，共包含38个长时程复杂操作目标，这些目标被具体化为150个复杂任务。OAKINK2总共包含75个物体和39种可供性，这些可供性对应60种类型的基本动作。OAKINK2总计包含627段双手灵巧手-物交互序列，其中363段属于基本动作，264段属于复杂任务。总体而言，OAKINK2包含401万帧图像。我们在表4中将OAKINK2与多个现有的手-物交互数据集进行了比较。在此我们重点介绍OAKINK2的几个显著特点：1）它提供了基于物体可供性的交互数据（与HO3D、DexYCB相比）；2）它具有长时程操作目标（与ARCTIC、HOI4D、GRAB相比）；3）它为手部和物体提供了3D姿态和形状注释（与EGO4D、AssemblyHands相比）；4）它提供了基于基本动作的任务分解功能，这是表4中任何数据集都不具备的。

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td rowspan="2">Dataset</td><td rowspan="2">image mod.</td><td rowspan="2">resolution</td><td rowspan="2">#frame</td><td rowspan="2">#views</td><td rowspan="2">#subj</td><td rowspan="2">#obj</td><td style='text-align: center; word-wrap: break-word;'>3D</td><td style='text-align: center; word-wrap: break-word;'>real / syn.</td><td style='text-align: center; word-wrap: break-word;'>label method</td><td rowspan="2">hand pose</td><td rowspan="2">obj pose</td><td rowspan="2">afford. inter.</td><td rowspan="2">dynamic inter.</td><td rowspan="2">long-</td><td rowspan="2">horizon</td><td rowspan="2">task</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>gnd.</td><td style='text-align: center; word-wrap: break-word;'>syn.</td><td style='text-align: center; word-wrap: break-word;'>method</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EGO4D [^19]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>~</td><td style='text-align: center; word-wrap: break-word;'>~</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>931</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HO3D [^21]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>640 \times 480</td><td style='text-align: center; word-wrap: break-word;'>78K</td><td style='text-align: center; word-wrap: break-word;'>1-5</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>GRAB [^56]</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>1.62M</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>51</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>H2O [^34]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1280 \times 720</td><td style='text-align: center; word-wrap: break-word;'>571K</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HOI4D [^40]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1280 \times 800</td><td style='text-align: center; word-wrap: break-word;'>3M</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>1000</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>crowd</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ARCTIC [^15]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>2800 \times 2000</td><td style='text-align: center; word-wrap: break-word;'>2.1M</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>11</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>AssemblyHands [^47]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1920 \times 1080</td><td style='text-align: center; word-wrap: break-word;'>3.03M</td><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>34</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>semi-auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ego-Exo4D [^20]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>~</td><td style='text-align: center; word-wrap: break-word;'>~</td><td style='text-align: center; word-wrap: break-word;'>5-6</td><td style='text-align: center; word-wrap: break-word;'>839</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>semi-auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OakInk-Image [^67]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>848 \times 480</td><td style='text-align: center; word-wrap: break-word;'>230K</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>100</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>crowd</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OAKINK2</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>848 \times 480</td><td style='text-align: center; word-wrap: break-word;'>4.01M</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>75</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr></table>

<div style="text-align: center;">Table 1. A cross-comparison among various public datasets. (Refer to Sup. Mat for the full table.)</div>

### 5. 典型应用

#### 5.1. 手部网格重建

手部网格重建（HMR）任务旨在根据采集到的图像估计交互过程中的3D手部姿态。我们在单视角和多视角两种设置下对HMR任务进行基准测试。在单视角设置中，输入图像仅包含一个视角，即自我中心视角或非自我中心视角。在多视角设置中，输入图像将包含多个视角，同时附带相机校准参数。对于这两种设置，我们都在序列层面划分了对应的任务指定子集，以保持训练集、验证集和测试集中样本的比例约为70%、5%和25%。

我们评估了世界坐标系下的平均关节位置误差（MPJPE）、平均顶点位置误差（MPVPE），以及腕部（根部）相对（RR）系统和经过Procrustes分析（PA）后的系统中的误差。我们还评估了根部相对系统中0–20毫米范围内正确关键点百分比的曲线下面积（AUC）。我们在表2中展示了两种设置下的HMR基准测试结果。

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Setting</td><td style='text-align: center; word-wrap: break-word;'>Methods</td><td style='text-align: center; word-wrap: break-word;'>PA-MPJPE</td><td style='text-align: center; word-wrap: break-word;'>PA-MPVPE</td><td style='text-align: center; word-wrap: break-word;'>RR-MPJPE (AUC)</td><td style='text-align: center; word-wrap: break-word;'>RR-MPVPE</td><td style='text-align: center; word-wrap: break-word;'>MPJPE</td><td style='text-align: center; word-wrap: break-word;'>MPVPE</td></tr><tr><td rowspan="3">Mono</td><td style='text-align: center; word-wrap: break-word;'>METRO [^38]</td><td style='text-align: center; word-wrap: break-word;'>6.90</td><td style='text-align: center; word-wrap: break-word;'>6.47</td><td style='text-align: center; word-wrap: break-word;'>17.56 (0.410)</td><td style='text-align: center; word-wrap: break-word;'>16.44</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>RLE [^35]</td><td rowspan="2">5.46</td><td rowspan="2">6.86</td><td rowspan="2">13.08 (0.441)</td><td rowspan="2">14.03</td><td rowspan="2">-</td><td rowspan="2">-</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>+ HandTailer [^42]</td></tr><tr><td rowspan="2">Multi</td><td style='text-align: center; word-wrap: break-word;'>KP-based Fit [^68]</td><td style='text-align: center; word-wrap: break-word;'>9.20</td><td style='text-align: center; word-wrap: break-word;'>8.83</td><td style='text-align: center; word-wrap: break-word;'>15.63 (0.349)</td><td style='text-align: center; word-wrap: break-word;'>15.38</td><td style='text-align: center; word-wrap: break-word;'>19.30</td><td style='text-align: center; word-wrap: break-word;'>19.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>POEM [^68]</td><td style='text-align: center; word-wrap: break-word;'>6.18</td><td style='text-align: center; word-wrap: break-word;'>6.61</td><td style='text-align: center; word-wrap: break-word;'>12.12 (0.581)</td><td style='text-align: center; word-wrap: break-word;'>12.15</td><td style='text-align: center; word-wrap: break-word;'>9.17</td><td style='text-align: center; word-wrap: break-word;'>9.52</td></tr></table>

<div style="text-align: center;">Table 2. Single- and multi-view HMR evaluation results in mm.</div>

#### 5.2. 任务感知运动实现（TaMF）

为了在交互场景中实现任务目标，我们提出了一种新任务：任务感知运动实现（TaMF）。该任务旨在生成能够完成给定物体轨迹的手部运动序列，且这些序列需符合文本形式的任务描述要求。

任务表述。给定一段关于……的文本描述

基本任务：$\text{text}_{\text{PT}}$，我们假设所涉及的物体

其几何形状$\mathcal{V}_o = \{\mathbf{V}_{o,m}\}$以及运动轨迹

$\mathcal{T}_o = \{\mathbf{T}_{o,m}^{(i)}\}$在交互过程中是已知的。我们

用下标h表示人手，o表示物体，

物体，m 用于索引不同的物体实例（以及不同的

同一实例的不同部分），并使用上标 $(i)$ 来索引不同的

时间戳。任务是生成相应的

手部运动轨迹 $\mathcal{P}_h = \{\mathbf{P}_h^{(0:L)}\}$，以

文本描述 $\text{text}_{\text{PT}}$、物体几何 $\mathcal{V}_o$ 以及

运动轨迹 $\mathcal{T}_o$。

评估指标：我们采用接触率（CR）和实体相交体积（SIV）来衡量生成动作的物理合理性。在序列层面，我们参照人体动作生成领域的方法，用关节功率谱KL散度（PSKL-J）来评估动作平滑度；同时用FID来衡量真实动作与生成动作之间的距离。我们还开展了感知研究，以评估生成动作的真实感水平。这些指标的详细定义可在补充材料中找到。

![Image](images/bdb4faf3ea8e0fb88a13b212e9ba631a42b1e32cde0e8c9aa6b443c5a941576a.jpg)

<div style="text-align: center;">Figure 5. Architecture of MF-MDM. First sample random noises  $\boldsymbol{x}_{T}$; then at each step iterating from T to 1, MF-MDM G predicts the cleaned sample  $\hat{\boldsymbol{x}}_{0}$ and then diffuse it back to  $\boldsymbol{x}_{t-1}$. After the generated sample  $\boldsymbol{x}_{0}$ is acquired, it is refined by MF-MDM R for better interaction details.</div>

---

![Image](images/519f1af5433a664a4881f2a2a2a9b35caf96dec47c1f2d57cac8018a933ab08b.jpg)

<div style="text-align: center;">Figure 6. Qualitative Visualization of the generated hand motion in TaMF model.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td colspan="2">Physical lausibility</td><td colspan="2">Motion Smoothness</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>CR $\uparrow$</td><td style='text-align: center; word-wrap: break-word;'>SIV ( $cm^{{3}}$) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>PSKL-J (g.t., p.) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>(p., g.t.) $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>0.90</td><td style='text-align: center; word-wrap: break-word;'>4.17</td><td style='text-align: center; word-wrap: break-word;'>0.0446</td><td style='text-align: center; word-wrap: break-word;'>0.0460</td></tr><tr><td rowspan="2">FID</td><td colspan="3">Perceptual Score</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td colspan="2">Generated</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1.369</td><td style='text-align: center; word-wrap: break-word;'>4.66 $\pm$ 0.48</td><td colspan="2">3.64 $\pm$ 0.85</td></tr></table>

<div style="text-align: center;">Table 3. Evaluations of generated hand motion in TaMF model. PSKL-J is evaluated between the training data (g.t.) and the generated hand motion trajectory (p.); both directions are included as PSKL-J is an asymmetric metric.</div>

模型与结果：我们对基于扩散的动作生成模型MDM [^59]进行了改进，使其能适配任务感知型手部动作合成的精细需求。模型架构如图5所示。我们提出的模型名为MF-MDM，包含两个部分：1）MF-MDM G，它根据任务的文本描述及物体动作轨迹生成人体动作轨迹；2）MF-MDM R，它根据手部与物体的空间关系优化生成的手部动作。采样过程被建模为逐步去除噪声样本的逆扩散过程。MF-MDM的核心创新在于将多物体相关的概率条件融入现有的Transformer编码器。为此，我们引入了一个额外层——顺序合并层，用于在每个时间帧汇总交互场景中的空间关系。物体动作轨迹和此前生成的手部动作轨迹会被投影到同一维度后再进行合并。对于优化模型MF-MDM R，我们会将手部与物体的距离作为额外空间信息输入顺序合并层。合并后的嵌入序列会与其它标记一起被送入主Transformer编码器：包括加噪步骤标记、来自CLIP文本编码器的任务描述文本嵌入，以及来自PointBert编码器的聚合物体几何嵌入。我们在表3中提供了定量评估结果，图6则展示了定性可视化结果。

#### 5.3. 复杂任务完成（CTC）

OAKINK2引入了一项新应用——将复杂任务目标拆解为一系列基本动作路径。复杂任务完成（CTC）是指根据场景的文本描述及任务目标生成手部动作轨迹。由于从复杂任务和场景文本直接转化为端到端动作生成涉及多模态间的转换，目前尚无成熟的框架来解决这一问题。因此，我们将CTC分解为三个阶段，依次进行处理。

该过程最初从基于文本的1) 基础规划开始。近期在基础模型方面的突破——如大型语言模型（LLMs）[^48] [^69]，使我们能够将其用作任务规划器，因为这些模型本身便具备规划基础执行路径的能力，仅需适当的引导与上下文即可。此阶段的输出是一份任务规划脚本，其中包含了每个基础步骤的执行顺序。随后，根据目标任务和场景状态，将问题重新定义为为每个基础步骤生成手部与物体的运动轨迹，从而构建出$P(\mathcal{P}_h, \mathcal{T}_o|\text{text}_{PT})$。我们进一步将其拆解为两个子任务：2) 物体轨迹检索，即$P(\mathcal{T}_o|\text{text}_{PT})$；以及3) 手部运动生成，即$P(\mathcal{P}_h|\mathcal{T}_o|\text{text}_{PT})$。前者通过将专家演示中的$^1$物体运动重新定位，以适应新生成的随机场景；后者则采用我们预先定义的任务感知运动实现模型（TaMF，见第5.2节）。

① 利用LLM进行基础规划。在此阶段，我们利用现成的GPT-4模型[^48]来生成程序，将复杂任务分解为一系列基础步骤。我们首先依据手动设计的模板，将场景描述$\text{text}_{scene}$、复杂任务描述$\text{text}_{goal}$以及每个物体的描述$\{\text{text}_{obj}\}$嵌入提示词中。GPT-4会根据该提示词生成相应程序。如Fig. 8的代码块所示，该程序通过一系列代码片段构建基础步骤依赖图（PDG），其中PDG的每个节点（即基础步骤）被实现为$\text{execute}$([primitive], ...)函数，而PDG的边则体现为函数的调用顺序。接着，我们利用基于OAKINK2中PDG信息构建的依赖检查器，来验证生成的程序能否在不违反约束条件的情况下完成复杂任务。一旦获得成功的程序，便进入下一阶段。

---

![Image](images/cf7d8c9b0a84aa6f3e0219893506919b4a9d14219f1c5c2141181834b7728399.jpg)

<div style="text-align: center;">Figure 7. Visualization of Motion Generation Outcome in Complex Task Completion.</div>

![Image](images/28248be6bd5e94e84314f30f0189e332fe62aa9f6c654c72444a93a3acb0bd6d.jpg)

<div style="text-align: center;">Figure 8. The diagram of Complex Task Completion. The task input populates a predefined template to generate the prompt for planning. The ① LLM (GPT-4) responds with code of the program's execution path, delineating the DAG for Primitive dependency. Within the code response block, the  $\text{orange}$ snippets marks the ② Oracle to re-target object trajectories; the  $\text{blue}$ snippets indicate ③ motion generators for Primitives.</div>

此时，Fig. 8代码块中的$\text{execute}()$函数尚未完整，缺少两个关键组件：$\text{object\_trajectory}$与手部运动生成器。我们将在接下来的两个阶段中解决这些问题。

② 从“Oracle”中检索物体轨迹。完成一个基础任务需要该场景下物体的运动轨迹。在此阶段，我们利用“Oracle”根据特定场景和基础步骤来检索物体运动轨迹。“Oracle”具备双重功能：1) 根据给定的基础步骤，从OAKINK2数据集中获取物体运动轨迹；2) 根据物体的初始姿态、功能姿态及最终姿态，对这些专家生成的轨迹进行重新定位，以满足新场景的需求并生成所需的物体轨迹。

③ 利用TaMF生成手部运动。一旦获得物体轨迹，最后一步便是为每个基础步骤生成手部运动轨迹。为此，我们采用先前设计的任务感知运动实现模型（TaMF，见第5.2节）作为通用生成器（意味着单个TaMF模型可适用于所有基础步骤）。在将所有$\text{execute}()$函数填入确定的物体轨迹与生成器后，程序便会按顺序执行，各基础步骤的轨迹会通过插值法连接起来。这种插值方式通过将前一个轨迹的最终状态与后一个轨迹的初始状态相连，确保了运动的平滑过渡。

我们在图7中展示了复杂任务的生成动作示例。关于测试场景生成、提示词与模板的细节，以及基本规划评估、成功/失败案例等内容，请参阅补充材料。

### 6. 未来工作

OAKINK2是一个包含多种手-物体交互的数据集，用于支持人类完成长时程、多目标复杂操控任务。OAKINK2收录了基本动作演示——即满足物体功能需求的最小交互单元，以及复杂任务演示，后者还包含将其拆解为相互依赖的基本动作的内容。

首先，我们希望OAKINK2能够支撑大规模语言-操控预训练，提升多模态（如视觉-语言-动作 [^69]）模型在复杂任务完成方面的性能。从更长远来看，我们期望OAKINK2能助力开发能够实现端到端文本到操控生成的学习框架。

其次，通过将收集到的基本动作演示重新适配到不同的实体上，OAKINK2能够赋能各类具身操控任务，比如文中提到的异质手部与平台 [^23] [^53] [^54] [^61] [^64]。OAKINK2中构建的交互场景也可以被迁移并整合到现有的仿真环境 [^45] [^60] 中，以支持物体操控领域的具身学习。

---

## 参考文献

[^1]: Ahmed Tawfik Aboukhadra, Jameel Malik, Ahmed Elhayek, Nadia Robertini, and Didier Stricker. THOR-Net: End-to-end graformer-based realistic two hands and object reconstruction with self-supervision. In Winter Conference on Applications of Computer Vision (WACV), 2023. 2

[^2]: Suneel Belkhale, Tianli Ding, Ted Xiao, Pierre Sermanet, Quon Vuong, Jonathan Tompson, Yevgen Chebotar, Debidatta Dwibedi, and Dorsa Sadigh. RT-H: Action hierarchies using language. arXiv preprint arXiv:2403.01823, 2024. 3

[^3]: Samarth Brahmbhatt, Chengcheng Tang, Christopher D Twigg, Charles C Kemp, and James Hays. ContactPose: A dataset of grasps with object contact and hand pose. In European Conference on Computer Vision (ECCV), 2020. 2, 3, 15

[^4]: Anthony Brohan, Noah Brown, Justice Carbajal, Yevgen Chebotar, Xi Chen, Krzysztof Choromanski, Tianli Ding, Danny Driess, Avinava Dubey, Chelsea Finn, Pete Florence, Chuyuan Fu, Montse Gonzalez Arenas, Keerthana Gopalakrishnan, Kehang Han, Karol Hausman, Alex Herzog, Jasmine Hsu, Brian Ichter, Alex Irpan, Nikhil Joshi, Ryan Julian, Dmitry Kalashnikov, Yuheng Kuang, Isabel Leal, Lisa Lee, Tsang-Wei Edward Lee, Sergey Levine, Yao Lu, Henryk Michalewski, Igor Mordatch, Karl Pertsch, Kanishka Rao, Krista Reymann, Michael Ryoo, Grecia Salazar, Pannag Sanketi, Pierre Sermanet, Jaspiar Singh, Anikait Singh, Radu Soricut, Huong Tran, Vincent Vanhoucke, Quan Vuong, Ayzaan Wahid, Stefan Welker, Paul Wohlhart, Jialin Wu, Fei Xia, Ted Xiao, Peng Xu, Sichun Xu, Tianhe Yu, and Brianna Zitkovich. RT-2: Vision-language-action models transfer web knowledge to robotic control. arXiv preprint arXiv:2307.15818, 2023. 3

[^5]: Anthony Brohan, Noah Brown, Justice Carbajal, Yevgen Chebotar, Joseph Dabis, Chelsea Finn, Keerthana Gopalakrishnan, Karol Hausman, Alex Herzog, Jasmine Hsu, Julian Ibarz, Brian Ichter, Alex Irpan, Tomas Jackson, Sally Jesmonth, Nikhil Joshi, Ryan Julian, Dmitry Kalashnikov, Yuheng Kuang, Isabel Leal, Kuang-Huei Lee, Sergey Levine, Yao Lu, Utsav Malla, Deeksha Manjunath, Igor Mordatch, Ofir Nachum, Carolina Parada, Jodilyn Peralta, Emily Perez, Karl Pertsch, Jornell Quiamboo, Kanishka Rao, Michael Ryoo, Grecia Salazar, Pannag Sanketi, Kevin Sayed, Jaspiar Singh, Sumedh Sontakke, Austin Stone, Clayton Tan, Huong Tran, Vincent Vanhoucke, Steve Vega, Quan Vuong, Fei Xia, Ted Xiao, Peng Xu, Sichun Xu, Tianhe Yu, and Brianna Zitkovich. RT-1: Robotics transformer for real-world control at scale. Robotics: Science and Systems (RSS), 2023. 3

[^6]: Anthony Brohan, Yevgen Chebotar, Chelsea Finn, Karol Hausman, Alexander Herzog, Daniel Ho, Julian Ibarz, Alex Irpan, Eric Jang, Ryan Julian, et al. Do as i can, not as i say: Grounding language in robotic affordances. In Conference on Robot Learning (CoRL), 2023. 3

[^7]: Zhe Cao, Ilija Radosavovic, Angjoo Kanazawa, and Jitendra Malik. Reconstructing hand-object interactions in the wild.

发表于2021年国际计算机视觉会议（ICCV）。2

[^8]: Yu-Wei Chao, Wei Yang, Yu Xiang, Pavlo Molchanov, Ankur Handa, Jonathan Tremblay, Yashraj S. Narang, Karl Van Wyk, Umar Iqbal, Stan Birchfield, Jan Kautz, and Dieter Fox. DexYCB: A benchmark for capturing hand grasping of objects. In Computer Vision and Pattern Recognition (CVPR), 2021. 2, 3, 15

[^9]: Yuanpei Chen, Chen Wang, Li Fei-Fei, and C Karen Liu. Sequential dexterity: Chaining dexterous policies for long-horizon manipulation. arXiv preprint arXiv:2309.00987, 2023. 3

[^10]: Shuo Cheng and Danfei Xu. LEAGUE: Guided skill learning and abstraction for long-horizon manipulation. IEEE Robotics and Automation Letters, 2023. 3

## [^11]: Open X-Embodiment Collaboration, Abby O'Neill, Abdul Rehman, Abhiram Maddukuri, Abhishek Gupta, Abhishek Padalkar, Abraham Lee, Acorn Pooley, Agrim Gupta, Ajay Mandlekar, Ajinkya Jain, Albert Tung, Alex Bewley, Alex Herzog, Alex Irpan, Alexander Khazatsky, Anant Rai, Anchit Gupta, Andrew Wang, Anikait Singh, Animesh Garg, Aniruddha Kembhavi, Annie Xie, Anthony Brohan, Antonin Raffin, Archit Sharma, Arefeh Yavary, Arhan Jain, Ashwin Balakrishna, Ayzaan Wahid, Ben Burgess-Limerick, Beomjoon Kim, Bernhard Schölkopf, Blake Wulfe, Brian Ichter, Cewu Lu, Charles Xu, Charlotte Le, Chelsea Finn, Chen Wang, Chenfeng Xu, Cheng Chi, Chenguang Huang, Christine Chan, Christopher Agia, Chuer Pan, Chuyuan Fu, Coline Devin, Danfei Xu, Daniel Morton, Danny Driess, Daphne Chen, Deepak Pathak, Dhruv Shah, Dieter Büchler, Dinesh Jayaraman, Dmitry Kalashnikov, Dorsa Sadigh, Edward Johns, Ethan Foster, Fangchen Liu, Federico Ceola, Fei Xia, Feiyu Zhao, Freek Stulp, Gaoyue Zhou, Gaurav S. Sukhatme, Gautam Salhotra, Ge Yan, Gilbert Feng, Giulio Schiavi, Glen Berseth, Gregory Kahn, Guanzhi Wang, Hao Su, Hao-Shu Fang, Haochen Shi, Henghui Bao, Heni Ben Amor, Henrik I Christensen, Hiroki Furuta, Homer Walke, Hongjie Fang, Huy Ha, Igor Mordatch, Ilija Radosavovic, Isabel Leal, Jacky Liang, Jad Abou-Chakra, Jaehyung Kim, Jaimyn Drake, Jan Peters, Jan Schneider, Jasmine Hsu, Jeannette Bohg, Jeffrey Bingham, Jeffrey Wu, Jensen Gao, Jiaheng Hu, Jiajun Wu, Jialin Wu, Jiankai Sun, Jianlan Luo, Jiayuan Gu, Jie Tan, Jihoon Oh, Jimmy Wu, Jingpei Lu, Jingyun Yang, Jitendra Malik, João Silvério, Joey Hejna, Jonathan Booher, Jonathan Tompson, Jonathan Yang, Jordi Salvador, Joseph J. Lim, Junhyek Han, Kaiyuan Wang, Kanishka Rao, Karl Pertsch, Karol Hausman, Keegan Go, Keerthana Gopalakrishnan, Ken Goldberg, Kendra Byrne, Kenneth Oslund, Kento Kawaharazuka, Kevin Black, Kevin Lin, Kevin Zhang, Kiana Ehsani, Kiran Lekkala, Kirsty Ellis, Krishan Rana, Krishnan Srinivasan, Kuan Fang, Kunal Pratap Singh, Kuo-Hao Zeng, Kyle Hatch, Kyle Hsu, Laurent Itti, Lawrence Yunliang Chen, Lerrel Pinto, Li Fei Fei, Liam Tan, Linxi "Jim" Fan, Lionel Ott, Lisa Lee, Luca Weihs, Magnum Chen, Marion Lepert, Marius Memmel, Masayoshi Tomizuka, Masha Itkina, Mateo Guaman Castro, Max Spero, Maximilian Du, Michael Ahn, Michael C. Yip, Mingtong Zhang, Mingyu Ding, Minho Heo, Mo

---

Han Kumar Srirama、Mohit Sharma、Moo Jin Kim、Naoaki Kanazawa、Nicklas Hansen、Nicolas Heess、Nikhil J Joshi、Niko Suenderhauf、Ning Liu、Norman Di Palo、Nur Muhammad Mahi Shafiullah、Oier Mees、Oliver Kroemer、Osbert Bastani、Pannag R Sanketi、Patrick "Tree" Miller、Patrick Yin、Paul Wohlhart、Peng Xu、Peter David Fagan、Peter Mitrano、Pierre Sermanet、Pieter Abbeel、Priya Sundaresan、Qiuyu Chen、Quan Vuong、Rafael Rafailov、Ran Tian、Ria Doshi、Roberto Martín-Martín、Rohan Baijal、Rosario Scalise、Rose Hendrix、Roy Lin、Runjia Qian、Ruohan Zhang、Russell Mendonca、Rutav Shah、Ryan Hoque、Ryan Julian、Samuel Bustamante、Sean Kirmani、Sergey Levine、Shan Lin、Sherry Moore、Shikhar Bahl、Shivin Dass、Shubham Sonawani、Shuran Song、Sichun Xu、Siddhant Haldar、Siddharth Karamcheti、Simeon Adebola、Simon Guist、Soroush Nasiriyan、Stefan Schaal、Stefan Welker、Stephen Tian、Subramanian Ramamoorthy、Sudeep Dasari、Suneel Belkhale、Sungjae Park、Suraj Nair、Suvir Mirchandani、Takayuki Osa、Tanmay Gupta、Tatsuya Harada、Tatsuya Matsushima、Ted Xiao、Thomas Kollar、Tianhe Yu、Tianli Ding、Todor Davchev、Tony Z. Zhao、Travis Armstrong、Trevor Darrell、Trinity Chung、Vidhi Jain、Vincent Vanhoucke、Wei Zhan、Wenxuan Zhou、Wolfram Burgard、Xi Chen、Xiaolong Wang、Xinghao Zhu、Xinyang Geng、Xiyuan Liu、Xu Liangwei、Xuanlin Li、Yao Lu、Yecheng Jason Ma、Yejin Kim、Yevgen Chebotar、Yifan Zhou、Yifeng Zhu、Yilin Wu、Ying Xu、Yixuan Wang、Yonatan Bisk、Yoonyoung Cho、Youngwoon Lee、Yuchen Cui、Yue Cao、Yueh-Hua Wu、Yujin Tang、Yuke Zhu、Yunchu Zhang、Yunfan Jiang、Yunshuang Li、Yunzhu Li、Yusuke Iwasawa、Yutaka Matsuo、Zehan Ma、Zhuo Xu、Zichen Jeff Cui、Zichen Zhang和Zipeng Lin。Open X-Embodiment：机器人学习数据集与RT-X模型。<https://arxiv.org/abs/2310.08864>，2023.3

[^12]: Enric Corona, Albert Pumarola, Guillem Alenya, Francesc Moreno-Noguer, and Grégory Rogez. GanHand: Predicting human grasp affordances in multi-object scenes. In Computer Vision and Pattern Recognition (CVPR), 2020. 2, 3, 15

[^13]: Dima Damen, Hazel Doughty, Giovanni Maria Farinella, Antonino Furnari, Evangelos Kazakos, Jian Ma, Davide Moltisanti, Jonathan Munro, Toby Perrett, Will Price, et al. Rescaling egocentric vision: Collection, pipeline and challenges for epic-kitchens-100. International Journal of Computer Vision, 2022. 15

[^14]: Bardia Doosti, Shujon Naha, Majid Mirbagheri, and David Crandall. HOPE-Net: A graph-based model for hand-object pose estimation. In Computer Vision and Pattern Recognition (CVPR), 2020. 2

[^15]: Zicong Fan, Omid Taheri, Dimitrios Tzionas, Muhammed Kocabas, Manuel Kaufmann, Michael J Black, and Otmar Hilliges. ARCTIC: A dataset for dexterous bimanual hand-object manipulation. In Computer Vision and Pattern Recognition (CVPR), 2023. 2, 3, 6, 13, 15

[^16]: Guillermo Garcia-Hernando, Shanxin Yuan, Seungryul Baek, and Tae-Kyun Kim. First-person hand action benchmark with rgb-d videos and 3D hand pose annotations. In Computer Vision and Pattern Recognition (CVPR), 2018. 15

[^17]: Anindita Ghosh, Rishabh Dabral, Vladislav Golyanik, Christian Theobalt, and Philipp Slusallek. IMOs: Intent-driven full-body motion synthesis for human-object interactions. In Computer Graphics Forum, 2023. 2, 3

[^18]: James J Gibson. The ecological approach to visual perception: classic edition. Psychology Press, 2014. 2

[^19]: Kristen Grauman, Andrew Westbury, Eugene Byrne, Zachary Chavis, Antonino Furnari, Rohit Girdhar, Jackson Hamburger, Hao Jiang, Miao Liu, Xingyu Liu, et al. Ego4d: Around the world in 3,000 hours of egocentric video. In Computer Vision and Pattern Recognition (CVPR), 2022. 6, 15

[^20]: Kristen Grauman, Andrew Westbury, Lorenzo Torresani, Kris Kitani, Jitendra Malik, Triantafyllos Afouras, Kumar Ashutosh, Vijay Baiyya, Siddhant Bansal, Bikram Boote, et al. Ego-exo4d: Understanding skilled human activity from first-and third-person perspectives. arXiv preprint arXiv:2311.18259, 2023. 6, 15

[^21]: Shreyas Hampali, Mahdi Rad, Markus Oberweger, and Vincent Lepetit. Honnotate: A method for 3D annotation of hand and object poses. In Computer Vision and Pattern Recognition (CVPR), 2020. 2, 3, 6, 15

[^22]: Shreyas Hampali, Sayan Deb Sarkar, Mahdi Rad, and Vincent Lepetit. Keypoint transformer: Solving joint identification in challenging hands and object interactions for accurate 3D pose estimation. In Computer Vision and Pattern Recognition (CVPR), 2022. 2

[^23]: Ankur Handa, Karl Van Wyk, Wei Yang, Jacky Liang, Yu-Wei Chao, Qian Wan, Stan Birchfield, Nathan Ratliff, and Dieter Fox. DexPilot: Vision-based teleoperation of dexterous robotic hand-arm system. In International Conference on Robotics and Automation (ICRA), pages 9164–9170. IEEE, 2020. 8

[^24]: Yana Hasson, Gul Varol, Dimitrios Tzionas, Igor Kalevatykh, Michael J Black, Ivan Laptev, and Cordelia Schmid. Learning joint reconstruction of hands and manipulated objects. In Computer Vision and Pattern Recognition (CVPR), 2019. 2, 3, 15

[^25]: Yana Hasson, Bugra Tekin, Federica Bogo, Ivan Laptev, Marc Pollefeys, and Cordelia Schmid. Leveraging photometric consistency over time for sparsely supervised hand-object reconstruction. In Computer Vision and Pattern Recognition (CVPR), 2020.

[^26]: Yana Hasson, Gül Varol, Ivan Laptev, and Cordelia Schmid. Towards unconstrained joint hand-object reconstruction from rgb videos. In International Conference on 3D Vision (3DV), 2021. 2

[^27]: De-An Huang, Suraj Nair, Danfei Xu, Yuke Zhu, Animesh Garg, Li Fei-Fei, Silvio Savarese, and Juan Carlos Niebles. Neural task graphs: Generalizing to unseen tasks from a single video demonstration. In Computer Vision and Pattern Recognition (CVPR), 2019. 3

## [^28]: Wenlong Huang, Pieter Abbeel, Deepak Pathak, and Igor Mordatch. Language models as zero-shot planners: Extracting actionable knowledge for embodied agents. In International Conference on Machine Learning (ICML). PMLR, 2022. 3

---

[^29]: Wenlong Huang, Chen Wang, Ruohan Zhang, Yunzhu Li, Jiajun Wu, and Li Fei-Fei. VoxPoser: Composable 3D value maps for robotic manipulation with language models. arXiv preprint arXiv:2307.05973, 2023. 3

[^30]: Juntao Jian, Xiuping Liu, Manyi Li, Ruizhen Hu, and Jian Liu. AffordPose: A large-scale dataset of hand-object interactions with affordance-driven hand pose. arXiv preprint arXiv:2309.08942, 2023. 2, 3, 15

[^31]: Hanwen Jiang, Shaowei Liu, Jiashun Wang, and Xiaolong Wang. Hand-object contact consistency reasoning for human grasps generation. In International Conference on Computer Vision (ICCV), 2021. 2

[^32]: Diederik P Kingma and Jimmy Ba. Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014. 14

[^33]: Christopher A Kurby and Jeffrey M Zacks. Segmentation in the perception and memory of events. Trends in cognitive sciences, 2008. 2

[^34]: Taein Kwon, Bugra Tekin, Jan Stuhmer, Federica Bogo, and Marc Pollefeys. H2O: Two hands manipulating objects for first person interaction recognition. In International Conference on Computer Vision (ICCV), 2021. 2, 3, 6, 15

[^35]: Jiefeng Li, Siyuan Bian, Ailing Zeng, Can Wang, Bo Pang, Wentao Liu, and Cewu Lu. Human pose regression with residual log-likelihood estimation. In International Conference on Computer Vision (ICCV), 2021. 6

[^36]: Jiaman Li, Jiajun Wu, and C Karen Liu. Object motion guided human motion synthesis. ACM Transactions on Graphics (TOG), 2023. 3

[^37]: Kailin Li, Lixin Yang, Zenan Lin, Jian Xu, Xinyu Zhan, Yifei Zhao, Pengxiang Zhu, Wenxiong Kang, Kejian Wu, and Cewu Lu. FAVOR: Full-body ar-driven virtual object rearrangement guided by instruction text. In AAAI Conference on Artificial Intelligence, 2024. 3, 17, 18

[^38]: Kevin Lin, Lijuan Wang, and Zicheng Liu. End-to-end human pose and mesh reconstruction with transformers. In Computer Vision and Pattern Recognition (CVPR), 2021. 6, 16

[^39]: Shaowei Liu, Hanwen Jiang, Jiarui Xu, Sifei Liu, and Xiaolong Wang. Semi-supervised 3D hand-object poses estimation with interactions in time. In Computer Vision and Pattern Recognition (CVPR), 2021. 2

[^40]: Yunze Liu, Yun Liu, Che Jiang, Kangbo Lyu, Weikang Wan, Hao Shen, Boqiang Liang, Zhoujie Fu, He Wang, and Li Yi. HOI4D: A 4d egocentric dataset for category-level human-object interaction. In Computer Vision and Pattern Recognition (CVPR), 2022. 2, 6, 15

[^41]: Yun Liu, Haolin Yang, Xu Si, Ling Liu, Zipeng Li, Yuxiang Zhang, Yebin Liu, and Li Yi. TACO: Benchmarking generalizable bimanual tool-action-object understanding. arXiv preprint arXiv:2401.08399, 2024. 3, 15

[^42]: Jun Lv, Wenqiang Xu, Lixin Yang, Sucheng Qian, Chongzhao Mao, and Cewu Lu. HandTailor: Towards high-precision monocular 3D hand recovery. In British Machine Vision Conference (BMVC), 2021. 6

[^43]: Steven Macenski, Tully Foote, Brian Gerkey, Chris Lalancette, and William Woodall. Robot operating system 2:

设计、架构及实际应用。《科学·机器人》杂志，7(66):eabm6074，2022年。共13页。

[^44]: Naureen Mahmood, Nima Ghorbani, Nikolaus F Troje, Gerard Pons-Moll, and Michael J Black. AMASS: Archive of motion capture as surface shapes. In Computer Vision and Pattern Recognition (CVPR), 2019. 5, 13, 14

[^45]: Viktor Makoviychuk, Lukasz Wawrzyniak, Yunrong Guo, Michelle Lu, Kier Storey, Miles Macklin, David Hoeller, Nikita Rudin, Arthur Allshire, Ankur Handa, et al. Isaac gym: High performance gpu-based physics simulation for robot learning. arXiv preprint arXiv:2108.10470, 2021. 8

[^46]: Andrew T Miller and Peter K Allen. Graspit!: A versatile simulator for robotic grasping. IEEE Robotics & Automation Magazine, 11(4):110–122, 2004. 15

[^47]: Takehiko Ohkawa, Kun He, Fadime Sener, Tomas Hodan, Luan Tran, and Cem Keskin. Assembly Hands: Towards egocentric activity understanding via 3D hand pose estimation. In Computer Vision and Pattern Recognition (CVPR), 2023. 2, 6, 15

[^48]: OpenAI. GPT-4 technical report. arXiv preprint arXiv:2303.08774, 2023. 5, 7, 17

[^49]: OptiTrack. Motive: Optical motion capture software. <https://optitrack.com/software/motive/>. 13

[^50]: Georgios Pavlakos, Vasileios Choutas, Nima Ghorbani, Timo Bolkart, Ahmed AA Osman, Dimitrios Tzionas, and Michael J Black. Expressive Body Capture: 3D hands, face, and body from a single image. In Computer Vision and Pattern Recognition (CVPR), 2019. 5, 13

[^51]: Mathis Petrovich, Michael J Black, and Gül Varol. Action-conditioned 3D human motion synthesis with transformer VAE. In International Conference on Computer Vision (ICCV), 2021. 3

[^52]: Mathis Petrovich, Michael J Black, and Gül Varol. TEMOS: Generating diverse human motions from textual descriptions. In European Conference on Computer Vision (ECCV), 2022. 3

[^53]: Yuzhe Qin, Hao Su, and Xiaolong Wang. From one hand to multiple hands: Imitation learning for dexterous manipulation from single-camera teleoperation. IEEE Robotics and Automation Letters, 2022. 2, 8

[^54]: Yuzhe Qin, Yueh-Hua Wu, Shaowei Liu, Hanwen Jiang, Ruihan Yang, Yang Fu, and Xiaolong Wang. DexMV: Imitation learning for dexterous manipulation from human videos. In European Conference on Computer Vision (ECCV), 2022. 2, 8

[^55]: Ishika Singh, Valts Blukis, Arsalan Mousavian, Ankit Goyal, Danfei Xu, Jonathan Tremblay, Dieter Fox, Jesse Thomason, and Animesh Garg. ProgPrompt: Generating situated robot task plans using large language models. In International Conference on Robotics and Automation (ICRA), 2023. 3

[^56]: Omid Taheri, Nima Ghorbani, Michael J Black, and Dimitrios Tzionas. GRAB: A dataset of whole-body human grasping of objects. In European Conference on Computer Vision (ECCV), 2020. 2, 3, 6, 13, 15

### [^57]: Omid Taheri, Vasileios Choutas, Michael J Black, and Dimitrios Tzionas. GOAL: Generating 4d whole-body motion

---

用于手-物体抓取任务。载于《计算机视觉与模式识别会议》（CVPR），2022年。第2、3、18页。

[^58]: Omid Taheri, Yi Zhou, Dimitrios Tzionas, Yang Zhou, Duygu Ceylan, Soren Pirk, and Michael J Black. Grip: Generating interaction poses using spatial cues and latent consistency. In International Conference on 3D Vision (3DV), 2024. 3

[^59]: Guy Tevet, Sigal Raab, Brian Gordon, Yonatan Shafir, Daniel Cohen-Or, and Amit H Bermano. Human motion diffusion model. International Conference on Learning Representations (ICLR), 2023. 3, 7

[^60]: Emanuel Todorov, Tom Erez, and Yuval Tassa. MuJoCo: A physics engine for model-based control. 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2012. 8

[^01]: Weikang Wan, Haoran Geng, Yun Liu, Zikang Snan, Yaodong Yang, Li Yi, and He Wang. UniDexGrasp++: Improving dexterous grasping policy learning via geometry-aware curriculum and iterative generalist-specialist learning. arXiv preprint arXiv:2304.00464, 2023. 8

[^62]: Yan Wu, Jiahao Wang, Yan Zhang, Siwei Zhang, Otmar Hilliges, Fisher Yu, and Siyu Tang. SAGA: Stochastic whole-body grasping with contact. In European Conference on Computer Vision (ECCV), 2022. 2, 3, 17

[^63]: Danfei Xu, Suraj Nair, Yuke Zhu, Julian Gao, Animesh Garg, Li Fei-Fei, and Silvio Savarese. Neural task programming: Learning to generalize across hierarchical tasks. In International Conference on Robotics and Automation (ICRA), 2018. 3

[^64]: Yinzhen Xu, Weikang Wan, Jialiang Zhang, Haoran Liu, Zikang Shan, Hao Shen, Ruicheng Wang, Haoran Geng, Yijia Weng, Jiayi Chen, et al. Unidexgrasp: Universal robotic dexterous grasping via learning diverse proposal generation and goal-conditioned policy. In Computer Vision and Pattern Recognition (CVPR), 2023. 8

[^65]: Lixin Yang, Xinyu Zhan, Kailin Li, Wenqiang Xu, Jiefeng Li, and Cewu Lu. CPF: Learning a contact potential field to model the hand-object interaction. In Computer Vision and Pattern Recognition (CVPR), 2021. 14

[^66]: Lixin Yang, Kailin Li, Xinyu Zhan, Jun Lv, Wenqiang Xu, Jiefeng Li, and Cewu Lu. ArtiBoost: Boosting articulated 3D hand-object pose estimation via online exploration and synthesis. In Computer Vision and Pattern Recognition (CVPR), 2022. 2

[^67]: Lixin Yang, Kailin Li, Xinyu Zhan, Fei Wu, Anran Xu, Liu Liu, and Cewu Lu. OakInk: A large-scale knowledge repository for understanding hand-object interaction. In Computer Vision and Pattern Recognition (CVPR), 2022. 2, 3, 6, 15, 16

[^68]: Lixin Yang, Jian Xu, Licheng Zhong, Xinyu Zhan, Zhicheng Wang, Kejian Wu, and Cewu Lu. POEM: Reconstructing hand in a point embedded multi-view stereo. In Computer Vision and Pattern Recognition (CVPR), 2023. 6

[^69]: Haoyu Zhen, Xiaowen Qiu, Peihao Chen, Jincheng Yang, Xin Yan, Yilun Du, Yining Hong, and Chuang Gan. 3D-VLA: A 3D vision-language-action generative world model. arXiv preprint arXiv:2403.09631, 2024. 7, 8

[^70]: Hao Zheng, Regina Lee, and Yuqian Lu. HA-ViD: A human assembly video dataset for comprehensive assembly knowledge understanding. arXiv preprint arXiv:2307.05721, 2023. 15

[^71]: Juntian Zheng, Qingyuan Zheng, Lixing Fang, Yun Liu, and Li Yi. CAMS: Canonicalized manipulation spaces for category-level functional hand-object manipulation synthesis. In Computer Vision and Pattern Recognition (CVPR), 2023. 2

[^72]: Zehao Zhu, Jiashun Wang, Yuzhe Qin, Deqing Sun, Varun Jampani, and Xiaolong Wang. ContactArt: Learning 3D interaction priors for category-level articulated object and hand poses estimation. arXiv preprint arXiv:2305.01618, 2023. 2, 3, 15

#### [^73]: Christian Zimmermann, Duygu Ceylan, Jimei Yang, Bryan Russell, Max Argus, and Thomas Brox. FreiHAND: A dataset for markerless capture of hand pose and shape from single rgb images. In International Conference on Computer Vision (ICCV), 2019. 16

---

#### 补充材料

#### 目录

A 标注详情

A.1 平台校准与同步

A.2 数据清洗

A.3 人体姿态与表面

B 数据集元信息

B.1 特定任务子集

C 数据集评估

C.1 跨数据集验证

C.2 物理属性评估

D 任务与基准测试

D.1 任务感知型运动实现

E 应用：复杂任务完成

F 数据集检查

F.1 任务列表

F.2 可视化

### A. 标注详情

#### A.1. 平台校准与同步

动作捕捉系统通过厂商提供的专用校准棒进行校准。多摄像头系统中的各摄像头则利用ArUco立方体进行校准。这些摄像头上装有反光标记点，以便被动作捕捉系统追踪。相关校准工具如图9所示。两套系统通过ROS2中集成的软件同步工具实现时间同步 [^43]。

### A.2. 数据清洗

本节简要介绍为后续计算物体姿态和人体姿态而对动作捕捉系统采集的反光标记点位置进行清洗的流程。动作捕捉系统的固有局限性必然会导致所获取的反光标记点位置出现误差：在严重遮挡的情况下，系统可能无法检测并记录某些标记点；由于环境中的杂散反射，可能会引入虚假标记点；当两个或多个标记点距离过近时，系统可能会错误分配其标签，或将其误判为单个标记点。这些局限性促使我们引入了手动机制来清洗和后期处理采集到的数据。

数据清洗流程包含两个部分：1）动作捕捉后期处理软件；2）多视角交互式编辑器。我们邀请了三名专业标注员参与数据清洗工作。标注员首先会在动作捕捉后期处理软件中依次检查采集到的反光标记点的位置 [^49]。随后他们便会剔除虚假点、拆分重叠的标记点、修正标签错误的标记点，并填补其中的短间隙。

![Image](images/3963a020d806a09f383f44744af59bc9b69da95e16da1ad785451abc1088aa8f.jpg)

<div style="text-align: center;">Figure 9. Illustration of Platform Calibration Tools. The top is the vender-provided calibration wand for the MoCap system. The bottom are the ArUco cubes attached with reflective markers (circled in red). The ArUco patterns are for unifying the camera in the multi-camera system, while the surface-attached reflective markers are used for unifying the cameras with the MoCap system.</div>

标记轨迹。标注员按照从关节部位到刚体、人体以及双手的顺序，系统地清理所采集标记的结果。随后，这些序列被导出至多视角交互式编辑器。在编辑器中，标注员会验证清理后的动作捕捉结果，并通过基于三角测量的标注方法，利用多个视角下的2D点位置来恢复极端遮挡情况下的标记位置。最终将这些结果整合，得到在捕捉区域内清理后的反射标记位置。

#### A.3. 人体姿态与表面

我们采用了一种两阶段拟合方法，该方法借鉴了MoSH++算法在[^15] [^44] [^56]中对SMPL-X [^50]进行标注的应用方式。第一阶段是注册受试者的SMPL-X形状参数，并建立标记集与SMPL-X模型表面之间的对应关系映射。第二阶段则为序列中的每一帧注册SMPL-X姿态参数。由于PyTorch支持自动微分，这一两阶段拟合流程便在PyTorch上得以实现；各阶段求解均采用常见的梯度下降算法。

第一阶段：设$\bar{\beta}$为形状参数；设$P_{\mathcal{M}}^{(c)} \in \mathbb{R}^{N_{\mathcal{M}} \times 3}$为位于SMPL-X标准空间内的表面标记位置，其中$N_{\mathcal{M}}$表示目标标记集中的标记数量；设$\theta = \{\theta_i\}$为受试者处于T姿势时第i帧的SMPL-X姿态参数。第一阶段可表述为一个优化过程，旨在最小化观测到的标记与

---

以及由位于SMPL-X标准空间内的表面标记位置所重构出的标记之间的距离，如公式(1)所示。

 $$ \begin{aligned}\min_{\theta,\beta,P_{\mathcal{M}}^{(c)}}E=\lambda_{1}E_{recon}\big(\theta,\beta,P_{\mathcal{M}}^{(c)}\big)+\lambda_{2}E_{prior(b)}\big(\theta\big)+\\ \lambda_{3}E_{plau(h)}\big(\theta\big)+\lambda_{4}E_{reg}\big(\theta,\beta,P_{\mathcal{M}}^{(c)}\big)\end{aligned} $$

主要代价函数为$E_{recon}$，它代表观测到的标记$P_{\mathcal{M}}$与由表面标记位置重构出的标记$\hat{P}_{\mathcal{M}}$之间的距离。设$\boldsymbol{V}^{(c)}$为SMPL-X标准空间内的表面顶点，V为重构的表面顶点。标记集对应函数$\mathcal{C}(\cdot)$利用标准空间内的标记集位置$P_{\mathcal{M}}^{(c)}$和表面顶点$\boldsymbol{V}^{(c)}$，从当前重构的表面顶点V中恢复出标记集位置$\hat{P}_{\mathcal{M}}$。该函数首先把标准空间中的标记$P_{\mathcal{M}}^{(c)}$投影到由表面顶点构成的局部坐标系中，从而得到顶点索引$I_{\mathcal{M}}$以及局部坐标系中的系数$C_{\mathcal{M}}$。接着利用该索引在已摆好姿势的顶点V上恢复出对应帧，再借助局部坐标系中的系数来确定摆好姿势后的SMPL-X人体上的标记位置。因此$E_{recon}$可如公式(2)所示进行表达。

 $$ \begin{aligned}\boldsymbol{V}^{(c)}&=\mathrm{SMPL-X}(\mathbf{0},\bar{\boldsymbol{\beta}})\quad\boldsymbol{V}=\mathrm{SMPL-X}(\boldsymbol{\theta},\bar{\boldsymbol{\beta}})\\E_{\mathrm{recon}}&=\left\|\boldsymbol{P}_{\mathcal{M}}-\hat{\boldsymbol{P}}_{\mathcal{M}}\right\|^{2}=\left\|\boldsymbol{P}_{\mathcal{M}}-\mathcal{C}\big(\boldsymbol{V},\boldsymbol{P}_{\mathcal{M}}^{(c)};\boldsymbol{V}^{(c)}\big)\right\|^{2}\end{aligned} $$

$E_{\text{prior}(b)}(\theta)$、$E_{\text{plau}(h)}(\theta)$和$E_{\text{reg}}(\theta, \beta, P_{\mathcal{M}}^{(c)})$为辅助代价项。$E_{\text{prior}(b)}(\theta)$是一项辅助项，用于最小化根据现有数据集先验计算出的人体姿态的负对数似然值，这一做法遵循[^44]中的实践。E_{\text{plau}(h)}(\theta) $is an implementation of anatomy loss in [65] on the SMPLX model, designed to prevent distortion in the pose of the human body during the fitting process, enhancing its physical plausibility.$ E_{\text{reg}}(\theta, \beta, P_{\mathcal{M}}^{(c)}) $则是一项用于正则化优化变量的辅助项。

第二阶段：在第二阶段中，我们基于第一阶段得到的形状参数$\theta = \{\theta_t\}$和标记对应关系$\bar{\beta}$，来拟合整个交互过程中受试者的姿态$C(\cdot)$。

对于序列中的每个帧 t，我们会对受试者的 SMPL-X 姿态参数 $\theta_t$ 进行优化，以最小化由观测到的标记点重建误差 $E_{\mathrm{recon}}(\theta_t)$、身体姿态先验 $E_{\mathrm{prior(b)}}(\theta_t)$、手部解剖结构异常 $E_{\mathrm{plau(h)}}(\theta_t)$、手与物体的相交情况 $E_{\mathrm{plau(ho)}}(\theta_t)$ 以及其他辅助正则化项所组成的综合成本。

 $$ \begin{aligned}\min_{\theta_{t}}E=&\lambda_{1}E_{recon}\big(\theta_{t}\big)+\lambda_{2}E_{prior(b)}\big(\theta_{t}\big)+\lambda_{3}E_{plau(h)}\big(\theta_{t}\big)\\&+\lambda_{4}E_{plau(ho)}\big(\theta_{t}\big)+\lambda_{5}E_{reg}\big(\theta_{t}\big)\end{aligned} $$

$E_{\text{plau}(h)}(\theta_t)$、$E_{\text{prior}(b)}(\theta_t)$ 和 $E_{\text{plau}(h)}(\theta_t)$ 与第一阶段的成本项相同。$E_{\text{plau}(ho)}$ 通过对手部网格内部的点进行采样，并计算这些点到物体有符号距离函数值之和，来惩罚交互的手与物体之间的穿透和相交现象。$E_{\text{reg}}(\theta_t)$ 不仅包含对优化变量的正则化项，还包含用于保持标注轨迹平滑性的速度正则化项。

优化方面，我们在 PyTorch 上实现了两阶段拟合流程，因为它支持自动微分功能。我们采用 Adam [^32] 作为两个阶段的优化器，该算法应用广泛，且适用于两个阶段中引入的非凸成本项。为了提高第二阶段的运行速度，我们提出了一种提前停止机制：如果在连续多帧中拟合成本的降低幅度未超过特定阈值，优化过程就会终止。

#### B. 数据集元信息

### B.1. 任务特定的子集

由于 OAKINK2 旨在支持多种类型的任务，我们针对每项具体任务，采用不同的样本选择和数据组织策略来创建多个子集。为得到这些子集，我们会运用一些启发式规则来判断每个样本是否满足其所支持任务的要求。例如，图像样本中手部或物体的可见性对于支持相关视觉任务至关重要。我们会验证图像中手部与物体的单独及组合分割掩码；如果组合分割掩码占其单独掩码的比例超过某一阈值，我们就认为该实例在当前帧中可见。如果物体与手的距离足够近（最小距离 ≤ 5 mm）且被抬起（相对于初始状态的高度位移 ≥ 5 mm），我们就将其视为可被抓取的对象。

我们在下文中列出了任务特定子集的特征及构建方法。

OAKINK2-H-SV 子集用于从单视图图像中恢复手部模型。我们选取能清晰看到受试者手部的视图来构成该子集。该子集支持单视图手部网格恢复任务。

OAKINK2-H-MV 子集用于从多视图图像中恢复手部模型。如果受试者的手部在多数相机视图中可见，我们就将不同相机的组合视图作为该子集中的单个样本。该子集支持多视图手部网格恢复任务。

OAKINK2-HO 子集用于从图像中估计或重建手与物体的姿态。我们选取能看到受试者手部且物体被抓取的视图来构成该子集。

OAKINK2-Grasp 子集用于研究对物体的抓取行为。我们

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Dataset</td><td style='text-align: center; word-wrap: break-word;'>image mod.</td><td style='text-align: center; word-wrap: break-word;'>resolution</td><td style='text-align: center; word-wrap: break-word;'>#frame</td><td style='text-align: center; word-wrap: break-word;'>#views</td><td style='text-align: center; word-wrap: break-word;'>#subj</td><td style='text-align: center; word-wrap: break-word;'>#obj</td><td style='text-align: center; word-wrap: break-word;'>3D</td><td style='text-align: center; word-wrap: break-word;'>real / syn.</td><td style='text-align: center; word-wrap: break-word;'>label method</td><td style='text-align: center; word-wrap: break-word;'>hand pose</td><td style='text-align: center; word-wrap: break-word;'>obj pose</td><td style='text-align: center; word-wrap: break-word;'>afford. inter.</td><td style='text-align: center; word-wrap: break-word;'>dynamic inter.</td><td style='text-align: center; word-wrap: break-word;'>long-</td><td style='text-align: center; word-wrap: break-word;'>horizon</td><td style='text-align: center; word-wrap: break-word;'>task</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>EPIC-KITCHEN-100 [^13]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>~</td><td style='text-align: center; word-wrap: break-word;'>20M $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>37</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ego4D [^19]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>~‡</td><td style='text-align: center; word-wrap: break-word;'>~ $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>931</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HA-ViD [^70]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1280 $\times$ 720</td><td style='text-align: center; word-wrap: break-word;'>1.5M</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>30</td><td style='text-align: center; word-wrap: break-word;'>40</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>FPHAB [^16]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1920 $\times$ 1080</td><td style='text-align: center; word-wrap: break-word;'>105K</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>6</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ObMan [^24]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>256 $\times$ 256</td><td style='text-align: center; word-wrap: break-word;'>154K</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>20</td><td style='text-align: center; word-wrap: break-word;'>3K</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>syn</td><td style='text-align: center; word-wrap: break-word;'>simulate</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>YCBAfford [^12]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>133K</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>21</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>syn</td><td style='text-align: center; word-wrap: break-word;'>manual</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HO3D [^21]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>640 $\times$ 480</td><td style='text-align: center; word-wrap: break-word;'>78K</td><td style='text-align: center; word-wrap: break-word;'>1-5</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ContactPose [^3]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>960 $\times$ 540</td><td style='text-align: center; word-wrap: break-word;'>2.99M</td><td style='text-align: center; word-wrap: break-word;'>3</td><td style='text-align: center; word-wrap: break-word;'>50</td><td style='text-align: center; word-wrap: break-word;'>25</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>GRAB [^56]</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>1.62M</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>51</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>DexYCB [^8]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>640 $\times$ 480</td><td style='text-align: center; word-wrap: break-word;'>582K</td><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>20</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>crowd</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>H2O [^34]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1280 $\times$ 720</td><td style='text-align: center; word-wrap: break-word;'>571K</td><td style='text-align: center; word-wrap: break-word;'>5</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>8</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>HOI4D [^40]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1280 $\times$ 800</td><td style='text-align: center; word-wrap: break-word;'>3M</td><td style='text-align: center; word-wrap: break-word;'>1</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>1000</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>crowd</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ARCTIC [^15]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>2800 $\times$ 2000</td><td style='text-align: center; word-wrap: break-word;'>2.1M</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>10</td><td style='text-align: center; word-wrap: break-word;'>11</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>ContactArt [^72]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>332K</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>80</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>transfer</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>AssemblyHands [^47]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>1920 $\times$ 1080</td><td style='text-align: center; word-wrap: break-word;'>3.03M</td><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>34</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>semi-auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>AffordPose [^30]</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>641</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>syn</td><td style='text-align: center; word-wrap: break-word;'>manual</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>TACO [^41]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>4096 $\times$ 3000 $^{\ddagger}$</td><td style='text-align: center; word-wrap: break-word;'>5.2M</td><td style='text-align: center; word-wrap: break-word;'>13</td><td style='text-align: center; word-wrap: break-word;'>14</td><td style='text-align: center; word-wrap: break-word;'>196</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Ego-Exo4D [^20]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>~ $^{\ddagger}$</td><td style='text-align: center; word-wrap: break-word;'>~ $^{\dagger}$</td><td style='text-align: center; word-wrap: break-word;'>5-6</td><td style='text-align: center; word-wrap: break-word;'>839</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>semi-auto</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OakInk-Image [^67]</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>848 $\times$ 480</td><td style='text-align: center; word-wrap: break-word;'>230K</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>12</td><td style='text-align: center; word-wrap: break-word;'>100</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>crowd</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OakInk-Shape [^67]</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>-</td><td style='text-align: center; word-wrap: break-word;'>1700</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>transfer</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td><td style='text-align: center; word-wrap: break-word;'>✗</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>OAKINK2</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>848 $\times$ 480</td><td style='text-align: center; word-wrap: break-word;'>4.01M</td><td style='text-align: center; word-wrap: break-word;'>4</td><td style='text-align: center; word-wrap: break-word;'>9</td><td style='text-align: center; word-wrap: break-word;'>75</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>real</td><td style='text-align: center; word-wrap: break-word;'>mocap</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td><td style='text-align: center; word-wrap: break-word;'>✓</td></tr></table>

<div style="text-align: center;">Table 4. A cross-comparison among various public datasets. ~: The value is either not provided on the paper or measured in a different unit. †: Datasets measure in record time rather than number of captured frames. In particular, EPIC-KITCHEN-100 contains more than 100 hours of video, Ego4D 3670 hours, and Ego-Exo4D 1422 hours. They are larger in scale than any other dataset listed in the table. ‡: Dataset has a mixed resolution.</div>

图例：

图像模态：指数据的图像类型。✓ 表示真实图像采集；✓ 表示合成（渲染）图像；✗ 表示未提供图像模态。3D 定位：指数据是否包含 3D 定位标注。✓ 表示数据集包含 3D 定位标注；✗ 表示数据集仅为 2D 数据。

真实/合成：交互分为真实交互和合成交互。此处“合成”表示交互来自特定的抓取/交互合成器。

标签方法：3D定位信息的标签方法。对于合成交互，“simulate”表示交互是从基于物理的抓取模拟器中获取的，例如GraspIt！[^46]；“manual”表示交互是通过人工标注得到的。对于真实交互，“mocap”表示交互是由MoCap系统捕获的；“crowd”表示交互源自众包关键点标注；“auto”表示交互是从自动标注流程中获取的；“semi-auto”则是“crowd”和“auto”方法的混合。

基于可供性交互：基于可供性的交互。✓表示所捕获的交互具备可供性意识且被明确标注；✓表示交互具备可供性意识，但被归类到意图等粗粒度标签中；✗表示交互未按物体可供性进行组织。

动态交互：✓表示数据集捕获了手与物体的动态交互序列；X表示数据集捕获的是在交互过程中不发生变化的静态抓取。

长时序任务：如正文所述，✓表示数据集包含涉及多种物体可供性的捕获交互；反之则为X。

任务分解：如正文所述，✓表示数据集包含将复杂任务分解为多个片段的标注；反之则为X。

选取物体被抓取时的帧来构成该子集。

OAKINK2-靠近与抓取动作子集，用于描述受试者靠近并抓取物体以备后续使用的交互过程。我们从一个基本任务序列中选取涵盖靠近及抓取物体过程的帧来构成该子集。该子集在任务感知运动实现以及复杂任务完成中的数据库查询对象轨迹检索方面提供了辅助信息。

OAKINK2-任务相关运动子集，用于描述受试者完成任务并实现某一物体可供性的交互过程。我们从一个基本任务序列中选取涵盖从抓取物体到任务完成的过程的帧来构成该子集。该子集为任务感知运动实现提供支持。

#### C. 数据集评估

3D手部关键点的标注会借助重建模型进行跨数据集验证，而与之相关的3D姿态

---

![Image](images/1a001c7cdce1d8e80374181f37c22d28e72de6a1120989920f512a61df4e3e5d.jpg)

![Image](images/1e011e75ef9ba3cf7f0849000e74fb96c6d2e5bbc6ab3ceda9ae3615459d919a.jpg)

<div style="text-align: center;">Figure 10. Distribution of Primitive Task demonstrations. The sub-figure above displays the proportion of Primitive Task demonstrations across various scenarios within the entire OAKINK2 dataset, with frequently occurring Primitive Tasks highlighted. The sub-figure below presents a list of Primitive Tasks recorded in OAKINK2, along with the illustration of their corresponding quantity distribution. A list of all recorded Primitive Tasks and Complex Tasks can be found at Tab. 7 and Tab. 8.</div>

与抓取动作相关的数据会就其物理属性完整性进行检查。

## C.1. 跨数据集验证

我们开展跨数据集验证，以确认OAKINK2中3D手部关键点标注与现有数据集的一致性。我们分别针对三种训练方案训练单视图手部网格恢复模型[^38]：仅使用FreiHAND [^73]、仅使用OAKINK2-H-SV，以及混合使用这两组数据。我们在OakInk-image（SP2）[^67]上进行了Procrustes分析后的MPJPE和MPVPE评估，表5所示结果表明这些指标均有明显改善，这验证了OAKINK2能够补充现有数据集并提升现有模型的性能。

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Train</td><td style='text-align: center; word-wrap: break-word;'>Test</td><td style='text-align: center; word-wrap: break-word;'>PA-MPJPE (mm) $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>PA-MPVPE (mm) $\downarrow$</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1) FreiHAND</td><td style='text-align: center; word-wrap: break-word;'>OakInk-image (SP2)</td><td style='text-align: center; word-wrap: break-word;'>12.07</td><td style='text-align: center; word-wrap: break-word;'>11.96</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>2) OAKINK2-H-SV</td><td style='text-align: center; word-wrap: break-word;'>OakInk-image (SP2)</td><td style='text-align: center; word-wrap: break-word;'>12.60</td><td style='text-align: center; word-wrap: break-word;'>11.04</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>1) &amp; 2) mixture</td><td style='text-align: center; word-wrap: break-word;'>OakInk-image (SP2)</td><td style='text-align: center; word-wrap: break-word;'>10.94</td><td style='text-align: center; word-wrap: break-word;'>9.67</td></tr></table>

<div style="text-align: center;">Table 5. Cross dataset validation for OAKINK2.</div>

### C.2. 物理属性评估

为了评估OAKINK2中与抓取动作相关的3D姿态质量，我们考察了多个基于物理的指标，这些指标用于评估所捕获的手部与物体交互的可行性和稳定性。我们根据特定规则筛选待评估的样本（即参与交互的物体必须被成功抓取并抬起），以确保这些基于物理的质量指标能够准确反映数据集在交互过程中的质量。我们将OAKINK2-Grasp（-G.）与OakInk的两个子集——OakInk-Core和OakInk-Shape进行对比（见表6）。我们发现，尽管OAKINK2主要采用动作捕捉系统作为标注方法以便于扩大采集规模，但其标注质量仍可与基于人工标注和动作捕捉混合方式的OakInk相媲美。关于OAKINK2的更多定性可视化结果详见图14。

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Metrics</td><td style='text-align: center; word-wrap: break-word;'>OAKINK2-G.</td><td style='text-align: center; word-wrap: break-word;'>OAKINK-Core</td><td style='text-align: center; word-wrap: break-word;'>OAKINK-Shape</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Penet. Depth. cm $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.25</td><td style='text-align: center; word-wrap: break-word;'>0.18</td><td style='text-align: center; word-wrap: break-word;'>0.11</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Solid Intsec. Vol. cm $^{3}$ $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>0.61</td><td style='text-align: center; word-wrap: break-word;'>1.03</td><td style='text-align: center; word-wrap: break-word;'>0.62</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Sim. Disp. Mean cm $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>1.83</td><td style='text-align: center; word-wrap: break-word;'>0.98</td><td style='text-align: center; word-wrap: break-word;'>0.94</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>Sim. Disp. Std cm $\downarrow$</td><td style='text-align: center; word-wrap: break-word;'>1.16</td><td style='text-align: center; word-wrap: break-word;'>1.74</td><td style='text-align: center; word-wrap: break-word;'>1.62</td></tr></table>

<div style="text-align: center;">Table 6. Quality assessment of OAKINK2.</div>

### D. 任务与基准测试

#### D.1. 任务感知的运动实现

#### 评估指标详情

训练-验证-测试划分：遵循HMR的做法，我们在序列层面划分子集，保持训练集、验证集和测试集中样本的比例约为70%、5%和25%，这一划分方式与OakInk一致。

CR，接触比例。该指标用于衡量运动轨迹中手与物体接触（最小距离）在5毫米阈值内的帧数占比。

SIV，实体交集体积。该指标用于衡量估计过程中空间交集的大小。我们将物体网格体素化为$100^{3}$个体素，再计算手表面内体素体积的总和。

PSKL-J，关节功率谱KL散度。

该指标反映了生成运动的平滑程度。

---

它通过计算预测关节序列与真实关节序列之间的加速度分布方差来评估运动平滑度，结果会分别从两个方向进行报告。我们的实现细节可参考[^37]和[^62]。显著的区别在于我们使用手部关节进行测量，因此得到的指标数值范围与全身关节的情况有所不同。

FID，Fréchet Inception Distance分数。该指标用于评估生成运动轨迹的真实感。我们基于Transformer编码器架构开发了运动特征提取器，通过给手部运动轨迹添加尾随标记来获取嵌入向量。每个运动对应的嵌入向量维度为64。编码器通过对运动轨迹进行分类训练。我们将编码器同时应用于真实轨迹和生成轨迹，通过计算两者之间的Fréchet Inception Distance来评估运动真实感。

## E. 应用：复杂任务完成

测试场景生成。为了评估正文中描述的、由神谕辅助的三阶段方法完成复杂任务的能力，我们通过扰动OAKINK2数据集中复杂场景内的物体位置来生成一组测试环境，同时保持任务目标$\text{text}_{goal}$和物体状态描述$\{\text{text}_{obj}\}$不变。

我们利用真实标注数据来生成测试场景中的变体。我们将特定的物体集合视为一个簇，并将它们放置在随机位置。同一簇内的物体会采用统一的偏移量，以确保它们能够同步随机化。当一组物体需要保持运动一致性时，这一点尤为重要。随机化过程包含四个不同的游走步骤，这样就能防止某个物体朝随机方向移动时与其他物体发生碰撞。因此，每个物体都有更多机会在其环境中绕过其他结构。每个物体的最终位置是这四个游走步骤累积作用的结果。在每个游走步骤中，最多会进行八次迭代，通过将步长减半来避免物体间的碰撞。

提示词生成。在本研究中，我们通过对大型语言模型GPT-4 [^48]进行调整来实现原始规划功能，使其能够根据描述当前场景和任务目标的叙述性提示词生成Python代码。语言模型的作用是解读这些描述，识别任务中涉及的关键物体，确定合适的物体可操作性与运动轨迹，并生成按可行顺序组织的原始指令执行实例。

为克服这些挑战，我们设计了包含前述场景与任务描述的提示词模板。该模板不仅阐明了底层的代码框架，还提供了与具体场景无关的代码示例。我们进一步要求语言学习模型（LLM）直接输出代码实现作为响应，而非提供关于编码过程的解释性说明。

关于底层代码框架，为确保代码生成的稳健性与连贯性，我们采用了实体-组件-系统（ECS）架构。这种结构促进了组件（此处指数据或状态）与系统（在我们语境中即原始指令）的解耦。这种方式使我们能够生成风格统一的代码实现，其结构包括实例化物体实体、加载可操作性作为组件，再将原始指令提交给执行系统。

原始指令规划的评估。我们利用随复杂任务一同提供的原始指令依赖图作为基准，对旨在完成任务的程序成功率进行测评。分析测评结果后发现，规划代码的整体生成成功率为36%。就复杂任务中所包含的原始指令数量而言，我们观察到了不同的成功率：在包含三个或更少原始指令的复杂任务中，成功率为44%；而在包含三到五个原始指令的复杂任务中，成功率降至20%；值得注意的是，包含超过五个原始指令的复杂任务均未取得成功。这些结果表明，在当前环境下，大型语言模型（LLM）足以处理相对简单的复杂任务；但在高度复杂的任务场景中，LLM难以准确理解物体可操作性与对应原始指令之间的关系和依赖性。

演示规划结果。我们针对在构建的测试场景中完成的复杂任务结果进行了评估。生成的Python程序如清单2所示。该代码将所有相关物体及其对应的可操作属性关联起来，然后按照精确要求的顺序执行基本操作。我们还提供了一个失败案例作为示例，见清单3，该案例反映了基本操作规划执行中的失误。这种失误表现为存在多余的基本操作，它满足了不必要的物体可操作属性要求，从而阻塞了执行路径。

完成复杂任务的替代运动生成方法。除了正文中介绍的基于TaMF的运动生成方法外，我们还探索了一种利用关键帧生成与运动插值的替代策略。

---

![Image](images/4a9398658a20b53417c5ad7e30c6f8295adcdf42a4f363120ba31d853e52e30d.jpg)

<div style="text-align: center;">Figure 11. Oracle Trajectories and Motion Generation This figure illustrates the successful Complex Task completion of two Primitive Tasks. The top pair of images depict the oracle trajectories, while the bottom pair represents the sequential motion generated.</div>

采用插值法作为完成复杂任务的运动生成器。我们在GOAL $^{[57]}$中采用GNet和MNet，在FAVOR $^{[37]}$中采用INet。这些模型遵循先生成关键帧中的手-物交互，再在这些帧内生成中间交互轨迹的模式。整个生成过程分为三个阶段：第一阶段，GNet根据物体的初始姿态和最终姿态生成静态抓取姿势；随后，MNet生成用于接近物体和远离物体的运动轨迹；最后阶段，将物体运动轨迹中的交替物体姿态输入INet，以生成交互过程中的中间运动。根据物体预设轨迹生成的一系列人体动作如图11所示。图11左侧的图像展示了接近并使用刀子切梨的连续动作，这代表了属于基本任务类别下与刀子相关的“切割”可操作属性；右侧图像则展示了提起瓶子并将瓶内液体倒入平底锅的序列，这体现了与瓶子相关的“倾倒”基本任务可操作属性。

---

## F. 数据集检查

## F.1. 任务列表

<div style="text-align: center;">Table 7. Collected Affordances and Designed Primitive Tasks.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Affordance</td><td style='text-align: center; word-wrap: break-word;'>Affordance Instantiation</td><td style='text-align: center; word-wrap: break-word;'>Primitive Task</td></tr><tr><td rowspan="7">kitchen table</td><td rowspan="2">&lt;be rearranged, &gt;&lt;store securely, sth&gt;&lt;contain, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>rearrange</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;flow in, sth&gt;&lt;pour, sth&gt;&lt;shake, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'>pourpour shake</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;secure, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>screwunscrewcapuncapgripscoopscrapecutstirspreadassemblewipe</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;grip, sth&gt;&lt;scoop, sth&gt;&lt;scrape, sth&gt;&lt;cut, sth&gt;&lt;stir, sth&gt;&lt;spread, sth&gt;&lt;assemble into, sth&gt;&lt;wipe, sth&gt;&lt;heat with microwave, sth&gt;&lt;contain, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>place insidesaketakepartagemateagemate</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;secure, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>closegateopengatepressbuttontriggerlever</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;control, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>pressbuttontriggerlever</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;weigh, sth&gt;&lt;support, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>placeontoperange</td></tr><tr><td rowspan="8">study room table</td><td style='text-align: center; word-wrap: break-word;'>&lt;be rearranged, &gt;&lt;store securely, sth&gt;&lt;contain, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>rearrange</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;secure, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;place inside, sth&gt;&lt;take outside, sth&gt;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;secure, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;cover, sth&gt;&lt;uncover, sth&gt;&lt;shut, sth&gt;&lt;open, sth&gt;putonlidremovelidpulloutdrawerpushindrawer</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;illuminate, sth&gt;&lt;connect to, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;connect to, power socket&gt;&lt;connectfrom, powersocket&gt;&lt;connectto, usb&gt;&lt;connectfrom, usb&gt;&lt;connect to, lightbulbsocket&gt;&lt;connectfrom, lightbulbsocket&gt;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;shear, paper&gt;&lt;secure, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;cap, pen tip&gt;&lt;uncap, pen tip&gt;capthepenremovethepencapwriteonpaperwriteonwhiteboardbrushwhiteboardsharpennpencilsharpencilstaplepapertogetherwriteonpaperwriteonwhiteboardshearpaperstaplepapertogetherclosebookopenbook</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;write/draw, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;brush, whiteboard&gt;&lt;be sharpen by, sth&gt;&lt;sharpen, pencil&gt;&lt;stapletogether, paper&gt;&lt;be written/drawn by, pen/pencil&gt;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;be sheared by, scissors&gt;&lt;be stapled together by, stapler&gt;&lt;be turn, &gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;display, sth&gt;&lt;protect, sth&gt;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>&lt;control, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;open, laptop lid&gt;&lt;close, laptop lid&gt;openlaptoplidcloselaptoplidusekeyboardusemouse</td></tr></table>

---

<div style="text-align: center;">Table 7. Collected Affordances and Designed Primitive Tasks.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Affordance</td><td style='text-align: center; word-wrap: break-word;'>Affordance Instantiation</td><td style='text-align: center; word-wrap: break-word;'>Primitive Task</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;cultivate, flowers&gt;\n&lt;be cultivated in, sth&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>use gamecontroller\nput flower into vase\nput flower into vase</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>demo chem lab</td><td style='text-align: center; word-wrap: break-word;'>&lt;be rearranged, .&gt;\n&lt;store securely, experiment substances&gt;\n&lt;contain, experiment substances&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>rearrange</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;secure, experiment substances&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>pour in lab\npour in lab\nshake lab container</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;contain, experiment substances&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>screw\nunscrew\ncap\nuncap</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;be heated by, alcohol lamp&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>pour in lab\npour in lab\nshake lab container\nheat beaker/flask\nheat test tube\nstir experiment substances\nignite alcohol lamp\nheat beaker/flask\nheat test tube\nput off alcohol lamp\nignite alcohol lamp\nhold test tube\nplace asbestos mesh\nplace asbestos mesh</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;be ignited, .&gt;\n&lt;heat, lab container&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>heating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nheating the beaker/flask\nhe heating the beaker/flask</td></tr><tr><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>&lt;put off, alcohol lamp&gt;\n&lt;ignite, alcohol lamp&gt;\n&lt;clamp, test tube&gt;\n&lt;conduct heat to, lab container&gt;\n&lt;support, lab container&gt;</td><td style='text-align: center; word-wrap: break-word;'></td><td style='text-align: center; word-wrap: break-word;'>heating the beaker/flask\nheating the beaker/flask\n</td></tr></table>

<div style="text-align: center;">Table 7. Collected Affordances and Designed Primitive Tasks. The first column records the manipulation scenarios. The second column lists collected affordances of object instances and parts. The affordances of object parts are indented below their parent instance-level affordance. The third column lists the instantiations of object affordances. These instantiations are bound to certain object attributes, e.g. <screw, sth> is bound to actual screws on the bottle's opening and cap. The fourth column lists the designed Primitives corresponding to the affordances. Some Primitives are set to gray for these Primitives are difficult to demonstrate and capture in individual. Demonstrations of these tasks are embedded within Complex Task demonstrations.</div>

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Complex Task</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>kitchen table</td><td style='text-align: center; word-wrap: break-word;'>heat with microwave oven; weigh with scale; scoop and pour; scoop and grip; scoop and wipe; scoop and scrape; pour and stir; grip and pour; pour and arrange; weigh with scale and pour; pour and scrape; grip and arrange; weigh with scale and grip; grip and wipe; pour and grip; clean the kitchen table; prepare a cup of hot sweet drink; prepare a bowl of hot soup with salt; prepare a cup of hot sweet fruit tea; prepare a chilled apple platter; prepare a savory fruit salad; prepare a baked sweet donut with sauce; prepare a baked sweet donut with apple slices and jam; prepare a savory baked sweet donut; prepare a cheese-baked sweet donut with tomato sauce; prepare savory baked apple slices with cheese; prepare a chilled fruit platter; make a baked sandwich with a filling of donut and salt; make a sandwich with a filling of tomato sauce and sugar; make a sandwich with a filling of apple slices and donut, adding tomato sauce, mustard sauce, salt, and sugar; make a baked sandwich with a filling of cheese and donut, adding tomato sauce; scoop, unscrew, pour, and screw; grip and scoop; scoop and scoop; scoop and arrange; weigh with scale and scoop; cut and scoop; cut and pour; grip and scoop; cut and grip; grip and assemble; stir and arrange; stir and scrape; scrape and arrange; weigh with scale and assemble; unscrew and pour; pour and screw; uncap and scrape; scrape and cap; uncap, scrape, and cap; scrape and assemble; assemble and arrange; unscrew and heat with microwave; pour and heat with microwave; heat with microwave and pour; heat with microwave and stir; heat with microwave and assemble; cut and heat with microwave; uncap, pour, and cap; prepare a cup of chilled green tea; prepare a cup of apple green tea; prepare a cup of mixed flavor fruit juice; prepare a cup of savory fruit juice milk tea; prepare a cup of pear milk tea with fruit jam; prepare a cup of savory honey fruit juice milk tea; prepare a cup of savory strawberry orange juice mixed with milk; uncap and scoop; prepare a cup of wine; prepare a cup of milk tea; prepare a cup of chilled fruit tea; prepare a cup of honey coffee; prepare a cup of chilled juice milk with jam; prepare a cup of chilled sweet milk tea;</td></tr></table>

---

<table border=1 style='margin: auto; word-wrap: break-word;'><tr><td style='text-align: center; word-wrap: break-word;'>Scenario</td><td style='text-align: center; word-wrap: break-word;'>Complex Task</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>study room table</td><td style='text-align: center; word-wrap: break-word;'>put into box; take out of box; put into drawer; take out of drawer; ready the laptop on the desktop for work; tidy up the desktop with the laptop after work; ready the laptop on the desktop for entertainment; illuminate the desktop; sharpen the pencil and write; tidy up the desktop with the laptop after entertainment; tidy up the desktop after paper-cutting; write and bind the paper; design and cut out rectangle shape on the paper; press button and open laptop; press button and close laptop; press button and put into box; press button and take out of box; press button and remove power plug; insert usb and plug in power plug; tidy up the desktop after writing; plug in power plug and press button; design and cut out flower shape on the paper; design and draw on the paper; ready the laptop and the lamp on the desktop for work; design, write and bind the paper; ready the desktop for drawing; take out of drawer, insert usb, and open laptop; put into drawer and put into box; put into drawer, put into box, and close laptop; remove usb, close laptop, and put into drawer; tidy up the desktop after drawing; cut and bind paper; ready the laptop and the lamp on the desktop for entertainment; design, draw and cut out flower shape on the paper; design, draw and bind the paper; tidy up the desktop after binding paper;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>demo chem lab</td><td style='text-align: center; word-wrap: break-word;'>transfer and heat liquid in beaker; transfer and heat liquid in conical flask; heat liquid in beaker and transfer liquid; heat liquid in conical flask and transfer liquid; transfer and heat liquid in beaker and transfer liquid out; heat liquid in test tube and transfer liquid; prepare solution through heating; mix liquid; pour in lab and shake in lab; pour in lab and pour in lab; pour in lab and heat test tube; pour in lab and light lamp; stir in lab and pour in lab; stir in lab and heat beaker; shake in lab and pour in lab; shake in lab and heat test tube; shake in lab and heat beaker; heat beaker and put off lamp; heat test tube and put off lamp; light lamp and pour in lab; put off lamp and stir in lab; put off lamp and shake in lab; heat beaker and stir in lab; stack mesh and heat beaker; light lamp and heat beaker; light lamp and heat test tube; pour in lab, shake in lab, and heat test tube; stir in lab, pour in lab, and shake in lab; light lamp, heat beaker, light lamp, heat beaker, and stir in lab; light lamp, heat test tube, and put off lamp; stack mesh, light lamp, and heat beaker; light lamp, heat beaker, and stir in lab; light lamp, heat test tube, and shake in lab; pour in lab, pour in lab, and pour in lab; pour in lab, and heat test tube; shake in lab, and pour in lab; pour in lab, and heat beaker; shake in lab, pour in lab, and heat beaker; put off lamp, and pour in lab; heat beaker, and stir in lab; heat test tube, and put off lamp, and shake in lab; pour in lab, stir in lab, and pour in lab; pour in lab, pour in lab, and pour in lab; pour in lab, and pour in lab; prepare solution in beaker;</td></tr><tr><td style='text-align: center; word-wrap: break-word;'>bathroom table</td><td style='text-align: center; word-wrap: break-word;'>squeeze tooth paste tube to tooth brush; squeeze tooth paste and stack tooth brush; prepare for teeth brushing.</td></tr></table>

<div style="text-align: center;">Table 8. Recorded Complex Tasks. We list the names of the recorded Complex Tasks here.</div>

## F.2. 可视化

---

![Image](images/ffb2fb721e04f10bd27e1a12da6a8a798d76eeb8e239dbd2110a745009af2cc5.jpg)

倾倒

![Image](images/ec95e05ea0c8afdfe00a3d43ecaec175648071070eb0b08aa48be37ea1d1cae8.jpg)

擦拭

![Image](images/09536be3dfc178b1868e630134f3394727be454e97441d9b3a84cc779c3dd6e1.jpg)

![Image](images/c95863aea14c2262f573e354de3e3b8168285df2e0bd19f8f040562b91f30a70.jpg)

切割

![Image](images/84b36d7cf0f6813db5cc191c751388d0f62be506c48f9268377f756c6d1838dc.jpg)

拧开盖子

搅拌

![Image](images/325dcd62dedbf9336329255eb426e4ebf77dc002e91d56b723f83c39b9c848f4.jpg)

![Image](images/cf3b2313f40da902dc4c4b9aa0d277b9182b78784311cb7646f85e55f5f824d4.jpg)

![Image](images/bd8ecef35d3f3e927a741c78ab52830b81ea7cda549d826635de0d3bf4936e84.jpg)

涂抹

![Image](images/3b1003558b34d289358d347312241867949e02db069923d4f8cecd45f10f4288.jpg)

盖上盖子

组装

![Image](images/0e0b286917b9d83a72c0824086214a35473d63d1ccfb096e47f4bd00f11e60db.jpg)

舀取

拧开

![Image](images/8ac2793f04d8df1190450ac05bb527dcc55d879c7961fc13582e8a4e84bcc1fd.jpg)

拧紧

![Image](images/4ada1495c9169de66aea82a4db1979aa9656460e919b95627bc76dda33012651.jpg)

![Image](images/8b636b39ad885f143d2803f422294d547e5606fb4a2b085bbc0487361827d7da.jpg)

抓握

![Image](images/dd393226f2bb6985b7108cfbcf5390aea4da35d634f3d8414a1094f39a34a220.jpg)

刮擦

按下按钮

![Image](images/2145eb0d448f0cadc0888de8dc279456ef9eed4f0f5fafbe199663f102d9ae89.jpg)

放入内部

![Image](images/163fa82790488b20b6fd6dee98022830cc028f90150747e50629fd6ba31d6ef5.jpg)

取出外部

![Image](images/00d363ce71dd8fbbb650ba3da3a039d21a90b81b400d69ce6984261854bce5b1.jpg)

打开闸门

![Image](images/7615cd7e387ad7079e50b34806931431a0ab41a4de3f5bb5d91653b75fe33b26.jpg)

关闭闸门

![Image](images/2ccef163698f799d39cf3b233955ba5018780dd7414e546db012ff0425d4f7d9.jpg)

![Image](images/62e3001653dff5e7b4b4073128eef9217a812bbff576200982568e62fbccac34.jpg)

按下按钮

![Image](images/d6aed95b6f54b05bf8138d7b3400ebe6023e6cdcfa0600a18311a04427601fe1.jpg)

推入抽屉

拉出抽屉

![Image](images/279ff9d1fd84609b9fd4c634000776dd3dc2cfaace094da0d59af4bb0d3a2c05.jpg)

盖上盖子

![Image](images/eeedfb00df56744c24193ba6e081126c68fb58acc3f6495fc2c3372a2ce5bda2.jpg)

取下盖子

![Image](images/72e4b569eff8e42575284b86041824484e49bf1613e7175ec14309fddb58e746.jpg)

![Image](images/d977ca63bc34a9f141e1de9e09c486d3fcfac463fa9f5da214b2315ddc553a97.jpg)

放入内部

取出外部

![Image](images/b1c6b2095ea47078d9dcde208a417c3d0c7cbc21c4b31ead412871d84f2f5adb.jpg)

![Image](images/47172cbef086fd1d490d10060e962c54a2e1dc4f7a8c19eeeaaa26eee9fdad35.jpg)

放入内部

取出外部

![Image](images/024e38ef428134015c89b5944be137f60949f797c5a2ed7c1d8c6cddb5fcc6cf.jpg)

按下按钮

![Image](images/b642342c549def8b91017c107203716da3c9816c99a601052306931a2050fb2d.jpg)

![Image](images/fb95ac53910073730fabec44eb1ca70f619e6f7cfd9cc64783d5d7afd30ca747.jpg)

在白板上书写

![Image](images/e16756494c7baf3edb7c0f705424bee75511a5f32653e469c7340543498fad41.jpg)

将纸张钉在一起

![Image](images/a7ed7af4c1b75af34780cc4d75f12ce51dd8e073cdccda7270c49586ccff3372.jpg)

打开笔记本电脑盖

![Image](images/e1e2846d5dc996a7b429e59d3c4b12588f082d8a06b8c84dbcf9e3cc77696e5d.jpg)

合上笔记本电脑盖

![Image](images/840e1a1a9f9234a498f9aa2cd9fd30706580fce29c417602ce49325269523a53.jpg)

用板刷清理白板并撕掉纸张

![Image](images/b74888b7b483a64365ff5e091d10c9703e1402fccb569ea72bc4765832e3736e.jpg)

![Image](images/087fd4f1d4bddff8c69a2d8b82c767473f3ba44c09b3c2f6577d782fd5697b2a.jpg)

![Image](images/95396b002c5d3e81239ef3a8a2981cf4b8bf7b2afde42ea6432f8f81b2634a3d.jpg)

取下笔帽

给笔盖上盖子

![Image](images/57b0809cb21b9b3ffa93a0921306981ba328949400d228e86df2519c6b3e3028.jpg)

削尖铅笔

![Image](images/8ecf1433dd2e6810781a5bd9273933ea755626bab9ebf611d39f82964b743e95.jpg)

把花插入花瓶

![Image](images/2a2056b9556b9cbdb3f51d6a3a89471c8aea486231a3d0f21e29881a0749d8c1.jpg)

在纸上书写

![Image](images/5c1f1216d968e8f931161973421e6e3c13b83e257fda28ee0f5b19e9ddb99151.jpg)

握住试管

![Image](images/4fda6b8d1b59463a0249dd96be6d06033f8b62a340313b2a854e6997be244215.jpg)

拔掉电源插头

![Image](images/3dd4f75ae473c5341f31a7325fc49f571cddc3dbe9af9078a90b46dd25fdb854.jpg)

插入电源插头

拔出USB设备

![Image](images/30d891d9d3c993295fdd2e61cc84213cdab95df28afcea6e0570aed94d3fd3da.jpg)

插入USB设备

![Image](images/2be3dca8cd3907fac8bc1e1391cd574171ce74f6f47ee2f1c692ae2f4c2d85ca.jpg)

安装灯泡

![Image](images/11f07a89183451dba62089ffd586d027850c48c4b154e76bd13e0137452d181f.jpg)

取下灯泡

![Image](images/712d92fecfee0ca91a9efcac62d551295058e956430dc1d8bb6d79e7db7f2569.jpg)

倒入实验用试剂

![Image](images/7d1ab9c2215d6036aebb173f5bc7c1287cc4ad5026bdd46a84a97a53607037e4.jpg)

点燃酒精灯

![Image](images/cabf61708bf67f0660204d9d6b6b3f253735b9b7e6f7ddf63da2ea77bf0669b9.jpg)

熄灭酒精灯

![Image](images/e2bb07e75e908a986eb28e728b165c3320abd19527ab02d4cf98783a2bdf941d.jpg)

放置石棉网

![Image](images/cf986fc8e794fbca8394043be0750b3f0d702349090f2272ad42479545a7adf2.jpg)

搅拌实验用试剂

![Image](images/1a9b5eadf482051c5bf67e8e6258390948402b35f28701a7c34264704daff96a.jpg)

摇晃实验室容器

![Image](images/e7bcbc154962cc7efbaaf7dc417cb08f461f72217edd40e85d26b08190e24926.jpg)

加热烧杯/烧瓶

![Image](images/3b0f11a7f783ad9e6a6d3b64ab5b5eec0f4ff9feeffb976fc23ddf7986604e9d.jpg)

加热试管

![Image](images/ffae3ef58185558dd2c1c1f2e6c3be56ac397afa997a6d4a51197489b5f4e289.jpg)

拧开牙膏盖

![Image](images/7d02ca2cf669bbabe1ea89f810dd154cd1469d04dc04770522b40ed765a00fda.jpg)

拧紧牙膏盖

![Image](images/15c1220df2d4cfd2de587a46d92dba26a0b5141d23c1c3a7347acdca4b8fb746.jpg)

<div style="text-align: center;">Figure 12. Primitives visualization.</div>

挤出牙膏

---

##

<div style="text-align: center;">Figure 13. Object visualization.</div>

---

![Image](images/a6b72ebcff07b812513d2adfead4f9c49723ce2bd0ac413eec0e4feb89e1e25b.jpg)

<div style="text-align: center;">Figure 14. Dataset visualization. Human bodies and objects within the scene are rendered onto the captured raw images for visualization.</div>

---

你是一位Python编程专家，需要完成某项双手机器人任务。

场景描述：
{scene_desc}

任务描述：
{task_desc}

代码采用ECS架构，具体定义为
ECS文件

实体定义如下：
实体文件

组件定义如下：
组件文件

系统定义如下：
系统文件

任务是完成该类{read_from_file(scene_path)}中的“exec_task”方法。

你需要从场景中查询原始3D物体，这些物体的名称会作为场景描述中的键，利用它们可以查询不同类型的场景信息。将这些信息构建成Object对象，并实例化PrimitiveTask来完成任务。

任务描述中未提及的物体保持原样即可。

避免使用以下划线开头的方法，要显式指定关键字参数，而非使用**kwargs。

例如：

an_object = Object('object_name',
geometry=self.query_geometry_info('object_name'),

a_primitive_task = PrimitiveTask(an_object.affordance.get_primitive_task_info('primitive_task_name'))

a_primitive_task.execute(src_object=an_object, tgt_object=another_object, trajectory=oracle.generate(a_primitive_task))

无需解释代码，把所有内容都写在方法实现中即可。最终返回exec_task(self)本身。

列表1. 提示模板。Entity表示场景中存在的物体实例；Component用于存储物体的初始状态及可操作属性信息；System则包含用于生成基本动作的运动生成器接口。提示中包含的示例代码展示了查询物体运动轨迹的接口用法。

## 任务

## 任务是将梨切成块，放入平底锅中，再加入一些调料。

## 场景

## 厨房的桌子上放置了以下物体：[刀、梨、瓶子、平底锅]。

def exec_task(self):

    # making an object for knife

    knife = Object('knife',
        geometry=self.query_geometry_info('knife'),
        state=self.query_state_info('knife'),
        affordance=self.query_affordance_info('knife')
)

## 为梨创建对应的物体

pear = Object('pear',
        geometry=self.query_geometry_info('pear'),
        state=self.query_state_info('pear'),
        affordance=self.query_affordance_info('pear')
)

## 为平底锅创建一个对象

pan = Object('pan',
        geometry=self.query_geometry_info('pan'),
        state=self.query_state_info('pan'),
        affordance=self.query_affordance_info('pan')
)

## 为瓶子创建一个对象

bottle = Object('bottle',
        geometry=self.query_geometry_info('bottle'),
        state=self.query_state_info('bottle'),
        affordance=self.query_affordance_info('bottle')
)

## 创建用于切割的基础任务

cut_pear = PrimitiveTask(knife, affordance.get_primitive_task_info('cut'))
cut_pear.execute(src_object=knife, tgt_object=pear, trajectory=oracle.generate(cut_pear))

## 创建用于将梨放入平底锅的基础任务

put_task = PrimitiveTask(pear.affordance.get_primitive_task_info('put_inside'))
put_task.execute(src_object=pear, tgt_object=pan)

## 创建用于添加调味料的基础任务

add_season = PrimitiveTask(bottle.affordance.get_primitive_task_info('pour'))
add_season.execute(src_object=bottle, tgt_object=pan, trajectory=oracle.generate(add_season))

<div style="text-align: center;">Listing 2. Primitive Task Planning Success Example.</div>

---

## 任务

## 任务是点燃酒精灯来加热烧杯中的混合物。一开始灯是盖着的。加热时需将烧杯放在带网格的支撑架上。

## 场景

## 在化学实验室的桌子上放置了以下物品：[打火机、酒精灯、烧杯、加热支架、网格]

def exec_task(self):

## 打开灯罩

    alcohol_lamp = Object('alcohol lamp',
                     geometry=self.query_geometry_info('alcohol_lamp'),
                     affordance=self.query_affordance_info('alcohol_lamp'),
                     state=self.query_state_info('alcohol_lamp')

    )
    uncap_alcohol_lamp_task = PrimitiveTask(alcohol_lamp, affordance.get_primitive_task_info('uncap'))
    uncap_alcohol_lamp_task_execute(src_object=alcohol_lamp, trajectory=oracle.generate(uncap_alcohol_lamp_task))

    # Light
    lighter = Object('lighter',
                     geometry=self.query_geometry_info('lighter'),
                     affordance=self.query_affordance_info('lighter')
                     state=self.query_state_info('lighter')

    )
    light_alcohol_lamp_task = PrimitiveTask(lighter, affordance.get_primitive_task_info('light_lamp'))
    light_alcohol_lamp_task_execute(src_object=lighter, tgt_object=alcohol_lamp, trajectory=oracle.generate(light_alcohol_lamp_task))

    # Arrange (put on the mesh support)
    beaker = Object('beaker',
                     geometry=self.query_geometry_info('beaker'),
                     affordance=self.query_affordance_info('beaker')
                     state=self.query_state_info('beaker')

    heat_support = Object('heat_support',
                     geometry=self.query_geometry_info('heat_support'),
                     affordance=self.query_affordance_info('heat_support'),
                     state=self.query_state_info('heat_support')

    mesh = Object('mesh',
                     geometry=self.query_geometry_info('mesh'),
                     affordance=self.query_affordance_info('mesh')
                     state=self.query_state_info('mesh')

    put_beaker_on_mesh_task = PrimitiveTask(beaker, affordance.get_primitive_task_info('arrange'))
    put_beaker_on_mesh_task_execute(src_object=beaker, tgt_object=heat_support, trajectory=oracle.generate(put_beaker_on_mesh_task))

    # Stack mesh to heat
    stack_mesh_task = PrimitiveTask(mesh_affordance.get_primitive_task_info('stack_mesh'))
    stack_mesh_task_execute(src_object=mesh, tgt_object=beaker, trajectory=oracle.generate(stack_mesh_task))

    heat_beaker = PrimitiveTask(alcohol_lamp, affordance.get_primitive_task_info('heat_beaker'))
    heat_beaker_execute(src_object=alcohol_lamp, tgt_object=beaker, trajectory=oracle.generate(heat_beaker))

<div style="text-align: center;">Listing 3. Primitive Task Planning Fail Example. One violation of dependency occurs (line 41): the extra place onto primitive erroneously positions the beaker upon the support prior to the asbestos mesh's placement on the support. This blocks the correct execution path that requires placing the asbestos mesh before heating the beaker.</div>
