Shelving, Stacking, Hanging: Relational Pose Diffusion for Multi-modal Rearrangement(二)
文章概括
引用:
@inproceedings{simeonov2023shelving,
title={Shelving, Stacking, Hanging: Relational Pose Diffusion for Multi-modal Rearrangement},
author={Simeonov, Anthony and Goyal, Ankit and Manuelli, Lucas and Lin, Yen-Chen and Sarmiento, Alina and Garcia, Alberto Rodriguez and Agrawal, Pulkit and Fox, Dieter},
booktitle={Conference on Robot Learning},
pages={2030--2069},
year={2023},
organization={PMLR}
}
Simeonov, A., Goyal, A., Manuelli, L., Lin, Y.C., Sarmiento, A., Garcia, A.R., Agrawal, P. and Fox, D., 2023, December. Shelving, Stacking, Hanging: Relational Pose Diffusion for Multi-modal Rearrangement. In Conference on Robot Learning (pp. 2030-2069). PMLR.
主页:https://anthonysimeonov.github.io/rpdiff-multi-modal/
原文: https://arxiv.org/abs/2307.04751
代码、数据和视频: https://github.com/anthonysimeonov/rpdiff
系列文章:
请在
《
《
《文章
》
》
》 专栏中查找
宇宙声明!
引用解析部分属于自我理解补充,如有错误可以评论讨论然后改正!
摘要
我们提出了一个系统,用于重新排列场景中的物体,以实现所需的物体–场景放置关系,例如将书插入书架的一个开放槽中。 该流程能够推广到新的几何形状、姿态以及场景和物体的布局,并通过示范进行训练,直接在3D点云上运行。我们的系统克服了给定场景存在许多在几何上相似的重排解决方案所带来的挑战。通过利用迭代姿态去噪训练过程,我们能够拟合多模态示范数据并产生多模态输出,同时保持精确和准确。我们还展示了在条件于相关的局部几何特征、同时忽略那些损害泛化性和精确性的不相关全局结构时的优势。我们在仿真和现实世界中,通过三个不同的重排任务验证了我们的方法,这些任务都需要处理多模态并在物体形状与姿态上实现泛化。项目网站、代码和视频: https://anthonysimeonov.github.io/rpdiff-multi-modal
关键词: 物体重排、多模态、操作、点云
补充材料:《搁置、堆叠、悬挂:用于多模态重排的关系姿态扩散》
第 A1 节包括对仿真形状的迭代测试时评估的附加可视化,以及用作训练数据的物体–场景点云示例。在第 A2 节中,我们详细介绍了 RPDiff 的数据生成、模型架构和训练细节。第 A3 节更详细地阐述了多步迭代回归推理过程,该过程用于预测重排变换集合。第 A4 节描述了成功分类器的训练方法及其如何与我们的变换预测器配合使用,作为从多个候选变换中选择执行变换的简单机制。在第 A5 节中,我们介绍了实验设置的更多细节,第 A6 节讨论了评估任务和机器人执行流程的更多细节。第 A7 节给出了一组额外的消融实验,以突出其他超参数和设计决策的影响。第 A8 节描述了真实环境执行的额外实现细节,并就局限性和未来工作方向进行了扩展讨论。最后,第 A9 节展示了模型架构示意图以及用于训练和评估的相关超参数汇总。
A1 额外的测试时与训练数据可视化
在此,我们展示用于仿真实验的任务的附加可视化,以及用于训练我们的姿态回归模型的带噪点云。图 A1 展示了在评估时对仿真物体执行迭代去噪的若干快照,图 A2 则展示了用于训练迭代去噪的组合物体–场景点云及其对应的带噪版本示例。
图 A1:在仿真物体上进行多步迭代去噪的可视化。从左侧开始,每个物体在场景附近以随机的 SE(3) 姿态初始化。经过多次迭代,RPDiff 更新物体姿态。右侧显示收敛到的一组最终解。
图 A2:每个任务示范的点云示例,分别为堆罐/柜子(顶部)、书/书架(中部)和杯/挂架(中—多模态,中部)。对于每个任务,第一行显示真实的组合物体–场景点云。场景点云为黑色,物体点云为深蓝色。每个任务的第二行展示通过对单个随机采样的扰动变换进行均匀插值(平移使用线性插值,旋转使用球面线性插值 SLERP)来创建多步加噪示例,不同颜色表示在不同插值姿态下的点云。第三行显示从这些插值姿态中采样的一个步骤,对应的“带噪”物体点云(深蓝)、真实目标点云(浅蓝)以及裁剪后的场景点云(红色)。
A2 迭代姿态回归的训练与数据生成
在本节中,我们介绍用于训练 RPDiff 中姿态扩散模型的数据详情、我们用于处理点云并预测 SE(3) 变换的神经网络架构,以及模型训练的具体细节。
A2.1 训练数据生成
仿真重排示范中使用的物体。
我们在仿真中使用一组合成的 3D 物体创建重排示范。所考虑的三个任务包含来自五大类的物体:杯子、挂架、罐头、书籍、“书架”(部分填满书籍的架子)和“柜子”(部分填满罐头堆叠的架子)。杯子使用 ShapeNet[70] 数据集,其余挂架、书籍、书架和柜子的 .obj 文件由我们程序化生成。各类别 3D 模型的代表性样例见图 A3。
仿真中程序化生成的重排示范。
RPDiff 中的核心回归模型
f
θ
f_θ
fθ 经过训练,能够处理组合的物体–场景点云并预测更新物体点云姿态的 SE(3) 变换。为了训练模型进行这些相对姿态预测,我们使用一组示范,该示范展示了满足目标重排任务的物体和场景点云的最终配置。以下描述我们如何获取这些“最终点云”示范:
我们首先在 PyBullet[19] 的桌面上以随机位置和朝向初始化物体,并使用多台仿真相机渲染分割了背景的深度图。将这些深度图转换为 3D 点云后,根据已知的相机位姿将它们融合到世界坐标系中。为了获得多样化的点云集合,我们随机化相机数量(1–4 台)、相机视角、相机与物体之间的距离、物体尺度和物体姿态。以此方式渲染点云,使模型能够观察到物体在不同方向下的遮挡模式,尤其是当物体因角度问题无法从桌面下方看到时。为了充分观察书架/柜子区域,我们利用对书架/柜子状态的先验知识,放置两台相机,大致对准书架/柜子的开口侧。
在获取初始物体与场景点云后,我们确定一个 SE(3) 变换作用于物体,使该变换将物体转换到一个“最终”姿态,从而实现所需放置。该变换被用于平移与旋转初始物体点云,使得组合后的“最终物体”与场景点云可用来生成训练示例。图 A2 展示了各任务示范中最终点云的可视化示例。
我们利用对仿真中物体的特权信息(例如真实状态、与任务相关部件的大致位置、每个物体的 3D 网格模型、已知可用放置位置)以及对任务的人工直觉,来获取满足这些任务的最终配置。以“将杯子挂在挂架的一个挂钩上”为例,首先我们在某个挂架上随机选择一个挂钩,并定位杯柄(所有 ShapeNet 杯子均已对齐,杯柄指向本体坐标系的 +y 轴),然后将杯子变换至杯柄大致“挂”在所选挂钩上的姿态。最后,我们在此基准姿态周围采样小扰动,直到找到一个不会导致两物体形状碰撞/穿透的姿态。对其他任务亦采用类似流程:在创建书架/柜子 3D 模型时,记录可用的书槽或可放置杯子的有效位置(例如罐头堆顶或已有堆之间的平面区域)。生成这些形状及对应重排姿态的具体方法可在我们的代码中找到。
图 A3:用于训练 RPDiff 并在我们的重排任务中部署 RPDiff 的示例 3D 模型。杯子来自 ShapeNet[70],挂架、书籍、罐头、书架和柜子则是我们程序化生成的合成模型。
A2.2 姿态预测架构
Transformer 点云处理与姿态回归。 我们遵循 Neural Shape Mating[3] 中提出的 Transformer[15] 架构,对点云进行处理并计算形状特征,然后将这些特征输入到输出端的 MLP 中以预测姿态。
我们首先使用最远点采样(farthest point sampling)将观测到的点云 P O ∈ R N ′ × 3 \text{P}_\text{O}\in\mathbb{R}^{N'\times3} PO∈RN′×3 和 P S ∈ R M ′ × 3 \text{P}_\text{S}\in\mathbb{R}^{M'\times3} PS∈RM′×3 下采样为 P ˉ O ∈ R N × 3 \bar{\text{P}}_\text{O}\in\mathbb{R}^{N\times3} PˉO∈RN×3 和 P ˉ S ∈ R M × 3 \bar{\text{P}}_\text{S}\in\mathbb{R}^{M\times3} PˉS∈RM×3。然后,我们基于场景点云的质心和一个缩放因子,对下采样后的点云进行归一化,生成 P O norm ∈ R N × 3 \text{P}_\text{O}^{\text{norm}}\in\mathbb{R}^{N\times3} POnorm∈RN×3 和 P S norm ∈ R M × 3 \text{P}_\text{S}^{\text{norm}}\in\mathbb{R}^{M\times3} PSnorm∈RM×3,该缩放因子可使组合点云的空间范围大致相当于一个单位边界框的范围:
接着,我们通过在归一化后的物体点云 P O norm \text{P}_\text{O}^{\text{norm}} POnorm 和场景点云 P S norm \text{P}_\text{S}^{\text{norm}} PSnorm 中的每个点拼接一个二维 one-hot 特征(以明确告知 Transformer 哪些点属于物体、哪些点属于场景),并用线性层 W in ∈ R d × 5 \text{W}_{\text{in}}\in\mathbb{R}^{d\times5} Win∈Rd×5 将其投射到 d d d 维向量,从而将归一化后的物体/场景点云“分词”为 d d d 维输入特征 ϕ O ∈ R N × d \phi_\text{O}\in\mathbb{R}^{N\times d} ϕO∈RN×d 和 ϕ S ∈ R M × d \phi_\text{S}\in\mathbb{R}^{M\times d} ϕS∈RM×d:
请注意,我们也可以将点云通过一个点云编码器来聚合局部特征,就像 NSM 中通过 DGCNN[17] 所做的那样。我们并未对此进行实验,因为直接对单个点特征操作已能获得令人满意的结果,但如果先经过点云编码器,性能可能相似或更佳。我们还将当前预测对应的时间步 t t t 作为额外的输入 token,与物体点 token 一起构成
ϕ ˉ O ∈ R ( N + 1 ) × d , ϕ ˉ O = [ ϕ O p o s _ e m b ( t ) ] \bar ϕ_\text{O}∈\mathbb{R}^{(N+1)×d},\quad \bar ϕ_\text{O}= \left[ \begin{matrix} ϕ_\text{O} \\ \mathtt{pos\_emb}(t) \end{matrix} \right] ϕˉO∈R(N+1)×d,ϕˉO=[ϕOpos_emb(t)]
然后,我们使用 Transformer 编码器和解码器来处理这一组合后的分词点云(可参见图 A4)。该流程包括:在场景特征上执行多轮自注意力(编码器),然后在物体点云上执行自注意力,并在物体点云与场景点云的输出特征之间执行交叉注意力(解码器):
图 A4:架构图展示了在 SE(3) 变换预测中,对象与场景点云之间结合自注意力和交叉注意力的网络结构。场景点云通过多轮自注意力进行处理,而物体特征则通过自注意力与场景点云的交叉注意力相结合来融合。时间步嵌入既作为输入 token,也通过残差连接加入到池化后的输出特征中。全局输出特征用于预测施加到物体点云上的平移和旋转。
这样我们得到一组输出特征 h O ∈ R ( N + 1 ) × d h_\text{O}\in\mathbb{R}^{(N+1)\times d} hO∈R(N+1)×d,其中 d d d 为嵌入空间维度。我们先对输出的点特征做均值池化,再与时间步嵌入按残差方式平均,得到全局特征;然后通过一组输出 MLP 来预测平移和旋转(旋转通过将一对三维向量转换为一个正交基,并堆叠成旋转矩阵来获得)[10,18]:
局部场景点云裁剪。
如实验结果所示,局部裁剪通过提高精度的同时对场景未知布局具有良好泛化能力,从而提升性能。我们的“固定”裁剪方法使用一个边长固定为
L
box
=
L
min
L_\text{box}=L_\text{min}
Lbox=Lmin的立方体,其中心位于当前物体点云,每个时间步都使用相同裁剪范围,并选择落在此立方体内的场景点云点。我们的“可变”裁剪方法根据时间步调整立方体边长:时间步越大裁剪越大,时间步越小裁剪越小。我们通过以下线性衰减函数将其参数化为时间步
t
t
t 的函数:
L box = L min + ( L max − L min ) T − t T , L_\text{box}=L_\text{min}+(L_\text{max}-L_\text{min})\frac{T-t}{T}, Lbox=Lmin+(Lmax−Lmin)TT−t,
其中 L min L_\text{min} Lmin和 L max L_\text{max} Lmax为超参数。
将预测的变换应用于物体点云。
我们首先将物体点云平移至其质心处,应用预测的旋转,然后再平移回原始的世界坐标系位置,最后再应用预测的平移。这样可以降低对旋转预测的敏感性;而如果直接绕世界坐标轴旋转,即使是很小的旋转也可能导致物体配置发生较大变化。
A2.3 训练细节
在此我们详细说明如何使用上述示范数据和模型架构训练 RPDiff 姿态扩散模型。一个数据集样本由元组 ( P O , P S ) (\text{P}_\text{O},\text{P}_\text{S}) (PO,PS) 组成。对于给定的时间步 t ∈ 1 , … , T t\in{1,\dots,T} t∈1,…,T,我们要基于该元组构造一个带扰动的物体点云 P O ( t ) \text{P}_\text{O}^{(t)} PO(t),其中较小的 t t t 对应更接近真实值的带噪点云,较大的 t t t 则对应更强的扰动。在极限情况下,对应 t = T t=T t=T 的点云分布应当近似匹配我们在测试时初始化迭代细化过程时所采样的分布。
目前在扩散模型文献中,噪声调度与扰动方案是一个活跃的研究领域[71,72],针对如何向数据样本添加噪声存在多种选择。我们采用一种简单方法:利用均匀插值的 S E ( 3 ) SE(3) SE(3) 变换。首先,从与测试时评估初始化相同的分布中采样一个“大”变换——旋转从 S O ( 3 ) SO(3) SO(3) 上均匀采样,平移在场景点云边界框内均匀采样。然后,对平移部分做线性插值,对旋转部分做球面线性插值(SLERP),得到一系列 T T T 个等间距变换(参见图 A2)。基于采样得到的时间步 t t t,我们选取序列中对应 t t t 的变换作为噪声扰动 T noise ( t ) \text{T}_{\text{noise}}^{(t)} Tnoise(t),并用对应 t − 1 t-1 t−1 的变换来计算“增量”/“区间”变换,作为预测目标。正如第 3.1 节所述,使用增量变换作为目标有助于在不同样本间保持一致的输出规模,这对神经网络优化有益,可减少梯度波动[14]。我们还提供了定量证据,表明仅预测增量而非完整的逆扰动能改善总体性能(详见 A7 节)。
此过程中最主要的超参数是步数 T T T。在我们的实验中,发现选取合适的 T T T 十分重要:当 T T T 太大时,相邻时间步之间的变换幅度极小,测试时的迭代预测对点云姿态的更新过于微小,常常无法收敛;当 T T T 太小时,多数带噪点云会远离真实值,并且在不同训练样本间看似相似,却对应相互冲突的预测目标,导致模型拟合困难。我们发现 T ≈ 5 T\approx5 T≈5 时在各任务上效果较好( T = 2 T=2 T=2 和 T = 50 T=50 T=50 均表现不佳),这对应的平均扰动大小约为平移 2.5 cm、旋转 18°。
在获得真实预测目标后,我们根据预测与真实之间的损失计算梯度,该损失由均方平移误差、测地旋转距离误差[12,13]以及应用预测变换后点云与真实下一个点云之间的 Chamfer 距离组成。我们还发现,仅使用 Chamfer 距离损失或仅使用平移/旋转组合损失,模型同样能获得良好效果。
我们为每个任务训练了一个独立模型,每个模型在单块 NVIDIA V100 GPU 上以批量大小 16 训练 50 万次迭代,使用线性预热加余弦衰减的学习率调度,最高学习率为 1 × 1 0 − 4 1\times10^{-4} 1×10−4。训练大约耗时三天。优化器采用 AdamW[73]。表 2 列出了每个任务使用的示范次数。
表 2:每个任务中使用的示范次数。相同的示范集用于训练我们的方法和各基线方法。
A3 测试时评估
在此,我们更详细地阐述测试时执行的迭代去噪过程。首先,给定 P O \text{P}_\text{O} PO 和 P S \text{P}_\text{S} PS,我们采样 K K K 个初始变换 { T ^ k ( I ) } k = 1 K \{\hat{\text{T}}^{(I)}_k\}_{k=1}^K {T^k(I)}k=1K——其中初始旋转从 SO ( 3 ) \text{SO}(3) SO(3) 的均匀网格抽取,平移在场景点云的边界框内均匀采样。然后,我们将 P O \text{P}_\text{O} PO 复制 K K K 份,并对每一份应用对应的变换,生成初始物体点云
{ P ^ O , k ( I ) } k = 1 K , P ^ O , k ( I ) = T ^ k ( I ) P O . \{\hat{\text{P}}_{\text{O},k}^{(I)}\}_{k=1}^K,\quad \hat{\text{P}}_{\text{O},k}^{(I)}=\hat{\text{T}}_k^{(I)}\,\text{P}_\text{O}. {P^O,k(I)}k=1K,P^O,k(I)=T^k(I)PO.
接着,对于每个初始变换,我们执行 I I I 步迭代更新:
T ^ ( i − 1 ) = ( T Δ R a n d T ^ Δ ) T ^ ( n ) , P ^ O ( n − 1 ) = ( T Δ R a n d T ^ Δ ) P ^ O ( i ) , \hat{\text{T}}^{(i-1)} = \bigl(\text{T}^{\mathrm{Rand}}_{\Delta}\,\hat{\text{T}}_{\Delta}\bigr)\,\hat{\text{T}}^{(n)},\qquad \hat{\text{P}}_\text{O}^{(n-1)} =\bigl(\text{T}^{\mathrm{Rand}}_{\Delta}\,\hat{\text{T}}_{\Delta}\bigr)\,\hat{\text{P}}_\text{O}^{(i)}, T^(i−1)=(TΔRandT^Δ)T^(n),P^O(n−1)=(TΔRandT^Δ)P^O(i),
其中
T ^ Δ = f θ ( P ^ O ( i ) , P S , p o s _ e m b ( i _ t o _ t ( i ) ) ) . \hat{\text{T}}_{\Delta} = f_\theta\bigl(\hat{\text{P}}_\text{O}^{(i)},\,\text{P}_\text{S},\,\mathtt{pos\_emb}(\mathtt{i\_to\_t}(i))\bigr). T^Δ=fθ(P^O(i),PS,pos_emb(i_to_t(i))).
变换 T Δ R a n d \text{T}^{\mathrm{Rand}}_{\Delta} TΔRand 从一个随迭代步条件变化的分布中采样,该分布在 i → 0 i\to0 i→0 时收敛到恒等变换。我们分别对平移和旋转采样噪声:平移直接输出一个随机三维向量 t 0 ∈ R 3 t^0\in\mathbb{R}^3 t0∈R3;旋转通过轴–角向量 R a a 0 ∈ R 3 R_{aa}^0\in\mathbb{R}^3 Raa0∈R3 并使用 SO ( 3 ) \text{SO}(3) SO(3) 指数映射将其转换为旋转矩阵[74]。对这些噪声分布的方差进行指数衰减,以确保随着迭代步数趋近于 0,噪声影响几乎为零。所有更新均以批量方式执行。完整的迭代推理流程见算法 1。
评估时的时间步调度及不同时间步下的预测行为。
函数
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 用于将迭代次数
i
i
i 映射到模型已训练过的时间步
t
t
t,以便评估时的步数
(
I
)
(I)
(I) 可以与训练时的步数
(
T
)
(T)
(T) 不同。例如,我们在训练时发现
T
=
5
T=5
T=5 效果良好,但评估时默认使用
I
=
50
I=50
I=50。我们观察到,运行多步迭代评估有助于收敛,并能“跳出”那些“局部最优”解。然而,如果提供的
i
i
i 值超出模型训练时的支持范围(即
i
>
T
i>T
i>T),预测表现会很差。因此,函数
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 保证所有
i
∈
1
,
…
,
I
i∈1,…,I
i∈1,…,I 都被映射到模型之前见过的合适
t
∈
1
,
…
,
T
t∈1,…,T
t∈1,…,T。
存在多种方式来实现这种映射,不同的实现会产生不同的行为。这是因为不同的 i _ t o _ t \mathtt{i\_to\_t} i_to_t 调度会强调在不同方式下使用模型,而模型对不同 t t t 值学到的行为在质上是不同的。具体来说,对于较小的 t t t 值,模型只在“较小的吸引盆地”上训练过,因此预测更精确且更具局部性,允许模型“精准对接”到当前物体附近的任何解。图 A5 展示了在一组受限的评估运行中,模型被限制在每次迭代 i = 1 , … , I i=1,…,I i=1,…,I 使用相同 t t t 值时的表现。
图 A5:在完整迭代评估流程中,模型在每次迭代中使用固定 t 值运行 I 步的示例。这突显了模型在去噪过程中为不同时间步学到的不同行为。对于接近 1 的时间步,模型学会了进行非常局部的更新,“精准对接”到物体附近的特征。当时间步增大时,模型考虑了更全局的上下文,并做出能到达更远解的预测。然而,在可能有许多附近解的区域,这些预测往往更偏向于单一解(例如顶部书架行,使用 t=1 时模型能找到四个槽位,但使用 t=2 时只到达其中两个,使用
t
=
3
t=3
t=3 时只到达其中一个)。对于更大的 t 值,模型学到的解更加偏置且“平均化”,不仅无法旋转物体,只能大致到达对应有效放置的场景区域。
然而,这也可能导致模型卡在远离任何解的区域。另一方面,对于较大的扰动,数据开始呈现更多模态,模型的预测会向某个偏置区域的解或直接趋向于恒等变换(即不移动物体)平均化。
我们发现,当主要使用对应于较小时间步的预测,但仍包含来自较大时间步的预测时,该流程的表现最佳。因此,我们对时间步调度函数
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 进行参数化,使其能够指数地增加对较小
t
t
t 值所使用预测的数量。尽管有多种实现方式,我们采用以下流程:构造一个长度为
I
I
I 的数组
D
D
D,其中每个元素取值在
1
1
1 到
T
T
T 之间,并将映射
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 定义为
t
=
i
_
t
o
_
t
(
i
)
=
D
i
t=\mathtt{i\_to\_t}(i)=D_i
t=i_to_t(i)=Di
下标
i
i
i 表示数组
D
D
D 中的第
i
i
i 个元素。
数组
D
D
D 由一个常量值
A
A
A 参数化(
A
A
A 值越大表示对较小时间步使用更多预测,而
A
=
1
A=1
A=1 表示对每个时间步使用相同次数),并保证每个时间步至少被预测一次:
B
=
[
A
T
,
A
T
−
1
,
…
,
A
2
,
A
1
]
指数递减的值
B= [A^T,A^{T-1},\dots,A^2,A^1]\quad\quad指数递减的值
B=[AT,AT−1,…,A2,A1]指数递减的值
C
=
⌈
A
∗
I
∑
i
=
1
T
A
i
⌉
归一化后乘以
I
并向上取整(每个元素的最小值为
1
)
C=\lceil\frac{A * I}{\sum_{i=1}^T A_i}\rceil \quad\quad归一化后乘以 I 并向上取整(每个元素的最小值为 1)
C=⌈∑i=1TAiA∗I⌉归一化后乘以I并向上取整(每个元素的最小值为1)
C
ˉ
=
⌈
C
∗
I
∑
i
=
1
T
C
i
⌉
再次归一化,使得
∑
i
=
1
T
C
ˉ
i
≈
I
且
C
ˉ
i
∈
N
∀
i
=
1
,
…
,
T
\bar C=\lceil\frac{C * I}{\sum_{i=1}^T C_i}\rceil \quad\quad再次归一化,使得 \sum_{i=1}^T\bar C_i\approx I 且 \bar C_i\in\mathbb{N}\,\forall\,i=1,\dots,T
Cˉ=⌈∑i=1TCiC∗I⌉再次归一化,使得i=1∑TCˉi≈I且Cˉi∈N∀i=1,…,T
C
ˉ
1
=
C
ˉ
0
−
(
∑
i
=
1
T
C
ˉ
i
−
I
)
确保
∑
i
=
1
T
C
ˉ
i
=
I
恰好成立
\bar C_1=\bar C_0-(\sum_{i=1}^T\bar C_i-I)\quad\quad确保 \sum_{i=1}^T\bar C_i=I 恰好成立
Cˉ1=Cˉ0−(i=1∑TCˉi−I)确保i=1∑TCˉi=I恰好成立
然后,根据
C
ˉ
\bar C
Cˉ 的值构造多个取值范围从
1
1
1 到
T
T
T 的数组,每个数组的长度对应
C
ˉ
\bar C
Cˉ 中的各元素:
D
ˉ
1
=
[
D
ˉ
1
,
1
,
D
ˉ
1
,
2
,
…
]
其中
D
ˉ
1
,
k
=
1
;
∀
k
=
1
,
…
,
C
ˉ
1
\bar D_1=[\bar D_{1,1},\bar D_{1,2},\dots] 其中 \bar D_{1,k}=1;\forall k=1,\dots,\bar C_1
Dˉ1=[Dˉ1,1,Dˉ1,2,…]其中Dˉ1,k=1;∀k=1,…,Cˉ1
D
ˉ
2
=
[
D
ˉ
2
,
1
,
D
ˉ
2
,
2
,
…
]
其中
D
ˉ
2
,
k
=
2
;
∀
k
=
1
,
…
,
C
ˉ
2
\bar D_2=[\bar D_{2,1},\bar D_{2,2},\dots] 其中 \bar D_{2,k}=2;\forall k=1,\dots,\bar C_2
Dˉ2=[Dˉ2,1,Dˉ2,2,…]其中Dˉ2,k=2;∀k=1,…,Cˉ2
…
\dots
…
D
ˉ
T
=
[
D
ˉ
T
,
1
,
D
ˉ
T
,
2
,
…
]
其中
D
ˉ
T
,
k
=
T
;
∀
k
=
1
,
…
,
C
ˉ
T
\bar D_T=[\bar D_{T,1},\bar D_{T,2},\dots] 其中 \bar D_{T,k}=T;\forall k=1,\dots,\bar C_T
DˉT=[DˉT,1,DˉT,2,…]其中DˉT,k=T;∀k=1,…,CˉT
最后,将这些数组依次拼接以得到长度为
I
I
I 的完整数组
D
D
D:
D
=
[
D
ˉ
1
,
D
ˉ
2
,
…
,
D
ˉ
T
]
D = [\bar D_1,\bar D_2,\dots,\bar D_T]
D=[Dˉ1,Dˉ2,…,DˉT]
A4 成功分级机详细信息
本节介绍用于对 RPDiff 生成的多个预测 SE ( 3 ) \text{SE}(3) SE(3) 变换进行排序和筛选的成功分类器 h ϕ h_ϕ hϕ 的训练与应用细节。
训练数据。
为了训练成功分类器,我们利用示范数据生成正例与负例,其中正例的成功概率标签为
1.0
1.0
1.0,负例的成功概率标签为
0.0
0.0
0.0。正例即未扰动的最终点云,负例则是在最终物体点云上施加扰动得到的点云。我们采用与主模型相同的采样方案:旋转从
SO
(
3
)
\text{SO}(3)
SO(3) 上的均匀分布中采样,平移在场景点云边界框内均匀采样。
模型架构。
我们使用与 A2 节中描述的相同 Transformer 架构,不同之处在于:输出端仅使用一个 MLP 加上 sigmoid 来输出预测的成功概率;不再条件化时间步;并且输入使用未裁剪的场景点云。
训练细节。
我们通过二元交叉熵损失监督成功分类器的预测与真实成功概率。模型在单块 V100 GPU 上以批量大小 64 训练 500,000 次迭代,耗时约 5 天。我们通过对组合的物体–场景点云施加随机三维旋转来增强数据多样性。
A5 实验设置
本节介绍我们在仿真和真实环境中的实验设置细节。
A5.1 仿真实验设置
我们使用 PyBullet [19] 和 AIRobot [75] 库来搭建仿真中的任务,并对我们的方法及基线方法进行定量评估。环境包括一张桌子,上面摆放构成物体和场景的各个形状,以及多台用于获取融合后 3D 点云的仿真相机。我们利用 PyBullet 的内置分割功能获取物体和场景的分割掩码。
A5.2 真实环境实验设置
在真实环境中,我们使用带有 Robotiq 2F140 平行爪夹具的 Franka 机械臂来执行预测的重排动作。我们还部署了四台外参已知的 Realsense D415 RGB-D 相机,其中两台固定用于近距离、无遮挡地观察物体,另外两台用于观察场景中的其他物体。我们结合 Mask-RCNN、基于密度的欧氏聚类[76]和手动关键点标注来分割物体,并使用简单的裁剪启发式方法将整体场景从其他背景/观测中分离出来(例如移除桌面和机器人本体,只保留带书的书架)。
A6 评估细节
本节进一步介绍我们在实验中使用的任务、与 RPDiff 对比的基线方法,以及在仿真和真实环境中将预测的重排变换应用于物体的机制。
A6.1 任务与评估标准
任务描述。
我们考虑三种关系重排任务进行评估:
- 将一个杯子挂在桌面上可能有多个挂架的某个挂架的挂钩上,每个挂架可能有多个挂钩;
- 将一本书插入一个随机姿态、部分填充书籍的书架上的多个开放书槽之一;
- 将一个圆柱形罐头直立放置,要么放在现有的罐头堆顶,要么放在架子上没有罐头的平坦开放区域。每个任务都有许多可实现所需物体–场景关系的放置方案(例如,可在多个书槽和多种方向上放置书籍;可在多个挂架/挂钩及挂钩周围不同角度上挂杯子;罐头可在多个堆顶和/或多个柜子区域放置,并可“侧”或“正”朝下,绕其圆柱轴任意旋转)。
评估指标与成功标准。
为了量化性能,我们在 100 次试验中报告平均成功率,使用仿真器的真实状态判断成功。一次试验成功的条件是:物体
O
\text{O}
O 与场景
S
\text{S}
S 接触,且物体相对于场景的朝向正确(例如,书籍必须放在书架上,且长边不能朝向书架内部)。对于罐头/柜子任务,还需确保罐头未碰撞或顶翻柜内现有的罐头堆,以模拟避免碰撞打翻的需求。
我们还通过召回率来量化覆盖度:将所有预测解与该任务实例预先计算的可行解集合进行匹配。对每个可行解,找到与其距离最近的预测,并检查位置误差是否在 3.5cm 内且旋转误差是否在 5° 内。如满足,则计为“检测到”该解。一次试验的召回率等于“检测到”的解数除以可行解总数;总体召回率为 100 次试验召回率的平均值。精确率以类似方式计算,但对每个预测检查它是否至少匹配一个真实可行解。
A6.2 基线实现与讨论
本节详细阐述各基线方法的实现细节,并讨论它们的表现与失败模式。
A6.2.1 Coarse-to-Fine Q-attention (C2F-QA)。
C2F-QA 将[8]中为具有固定机械爪的抓取–放置设计的基于分类的方法,改编到关系重排任务中。我们首先对场景进行体素化,并使用一个在每个体素内操作的局部 PointNet[77] 来计算体素输入特征。然后,将该体素特征网格送入一组 3D 卷积层,得到输出体素特征网格。最后,对每个体素的输出特征通过共享 MLP,预测该体素的得分,并通过对整个体素网格做 softmax 归一化,表示将物体质心移动到该体素中心的“动作价值”分布。该架构基于 Convolutional Occupancy Networks[7] 中使用的卷积点云编码器。
为了实现“粗到细”流程,我们取得分最高的体素位置(或若需多预测,则取 top-k 体素),将物体点云平移到该位置,然后以物体质心为中心裁剪场景点云。对该裁剪场景与已平移物体构成的局部点云重新体素化,使用更高分辨率的卷积点云编码器计算新的体素特征。最后,对该步骤的输出体素特征池化,并预测一组离散旋转的分布以应用于物体。我们发现直接使用[8]中的欧拉角离散化方法存在困难,于是改为采用[78]中近似均匀的 $SO(3)$ 离散化方案,对旋转进行分箱分类。
训练方面,我们通过最小化平移和旋转的交叉熵损失(即示范中包含物体质心的真实体素坐标与真实离散旋转箱之间的交叉熵)来优化模型。我们使用与主模型相同的扰动方案生成初始“带噪”点云,并让模型一步预测如何逆转该扰动。
输出覆盖度评估。
由于 C2F-QA 在所有基线方法中取得了最高的任务成功率,并且通过在分箱输出解中选择不止一个 argmax 而天然适合处理多模态问题,我们评估了我们的方法和 C2F-QA 在可用放置方案的覆盖度和精度之间的平衡(见第 5.2 节)。为了从 C2F-QA 获得多重输出预测,我们首先使用 PointNet → 3D CNN → MLP 流水线输出的 top-k 体素得分来选择多个体素位置。然后,我们复制物体点云并将其平移到每个选定的体素位置。对于每个选定位置,我们对局部组合的物体–场景点云特征进行池化,并使用池化后的特征预测离散旋转空间上的得分分布。与选择多个体素位置类似,我们选择 top-k 得分最高的旋转,并将这组多重平移 + 平移后多重旋转 组合作为输出变换集合,用于计算覆盖度。
与其他“先离散化再分类”方法的关系。
“C2F-QA”首先从场景中计算每个体素的特征,然后基于这些特征输出一个归一化的得分分布,表示在每个体素坐标处执行“平移”操作的质量。这种将场景离散化并将每个离散位置视为平移动作表示的方法,已在二维和三维的多项工作中成功应用[44,47,79]。在大多数此类流水线中,这些平移通常代表抓爪位置,即用于抓取。而在我们的任务中,体素坐标代表为实现物体重排而移动物体的位置。
然而,用于旋转预测的“先离散化再分类”技术存在差异。C2F-QA 和最近提出的 PerceiverActor[47] 直接基于池化网络特征对最佳离散旋转进行分类。另一方面,TransporterNets[44] 和 O2O-Afford[46] 则通过在整个离散化场景中的每个位置(例如整体图像的每个像素或完整场景点云的每个点)对被重排物体的某种表示(例如局部图像补丁或分割后的物体点云)在所有可能的物体朝向下进行“卷积”式评估,从而穷举不同旋转动作的质量。这种“穷举搜索”方法的优点是能够让模型更明确地考虑物体与场景在不同位置和物体朝向下的“交互可行性”,并有可能更准确地预测每个候选重排动作的质量。然而,该方法的缺点在于计算和内存开销要大得多,因此它们通常仅限于较低维度的场景。
A6.2.2 关系神经描述符场(R-NDF)
R-NDF[20] 使用在任务所用物体的类别级别三维模型上训练的神经场形状表示。该表示由带有 $SO(3)$ 等变向量神经元[VN] 层[80]的 PointNet 编码器和一个 MLP 解码器组成。解码器的输入是一个三维查询点及点云编码器的输出特征,它预测该查询点相对于形状的占用概率或符号距离。训练完成后,可通过记录 MLP 解码器对某点或点集的特征激活来对形状附近的点/点集进行编码。然后,在新形状上,可通过寻找具有最相似解码器激活的点/点集来建立对应关系。
这些点集可用于参数化局部有向坐标系的姿态,用以表示必须与编码物体相互作用的次级物体或夹具的姿态。R-NDF 已被用于执行关系重排任务,其流程是:首先对示范中与任务相关、需对齐的物体部件附近的坐标系进行编码;测试时,再在新物体上定位这些对应部件,以计算使它们对齐的相对变换。我们使用示范点云记录了一组任务相关的坐标系,这些坐标系必须在测试时被定位以完成各项实验任务。
R-NDF 的主要缺点在于,如果神经场表示无法忠实地捕捉形状类别,那么后续的对应匹配也会失败。确实,由于 R-NDF 使用全局点云编码,我们在多挂架/书架/柜子场景中的重构质量较差,因此后续的对应匹配在我们所考虑的各项任务中都表现不佳。
A6.2.3 神经形状匹配 (NSM) + CVAE
神经形状匹配 (NSM)[3] 使用 Transformer 处理一对点云并预测如何对齐它们。该方法最初用于将一个破裂物体的两部分“配对”,但可以轻松地改造为给定被操作物体点云和场景/“父对象”点云的关系重排任务。从架构上看,NSM 与我们的相对姿态回归模型相同,关键区别在于:(i) 在示范点云的任意大扰动上训练,(ii) 不使用局部裁剪,且 (iii) 仅做一次预测。我们将此基线称为“NSM-base”,因为不考虑原方法[3]提出的辅助符号距离预测和学习判别器。如表 1 所示,标准 NSM 在任何具有多模态解空间的任务上表现均不佳(模型也无法成功拟合示范数据)。
因此,我们将其改造为条件变分自编码器 (CVAE),以使其至少具备从多模态数据中学习并输出变换分布的能力。我们对 CVAE 的编码器和解码器均使用相同的 Transformer 架构,并对输入输出做了少量修改,以适应:(i) 编码器同时编码真实的去噪变换并预测潜变量 z z z;(ii) 解码器在组合的物体–场景点云之外还要条件化于 z z z 来重建变换。我们采用了与在主架构中引入时间步信息相同的方法——在编码器中,将真实变换既作为额外输入 token,又通过残差连接加入全局输出特征;在解码器中,同样以此方式包含潜变量 z z z。我们还尝试将残差连接的特征进行拼接,但未见效果提升。此外,我们尝试了不同的潜变量维度和不同的重建损失与 KL 散度损失的加权系数,因为当 KL 损失权重大于重建损失时,CVAE 仍难以良好拟合数据。尽管进行了这些调优,使 CVAE 能较好地拟合训练数据,但在测试时对未见过的物体和场景仍表现不佳。
A6.3 常见失败模式
本节讨论各方法在三个任务上的一些常见失败模式。
对于书/书架任务,我们的方法有时会输出一个忽略书架上已有书本位置的解。我们也偶尔遇到平移或旋转略微不精确的问题,导致书籍无法顺利插入。同样,对于基线方法而言,此任务的主要失败模式是更严重的精度不足。C2F-QA 在准确预测体素位置方面非常出色(即能够检测到靠近书架开放书槽的体素),其旋转预测通常也接近可行的书籍放置方向,但预测的书籍朝向往往与书槽对齐不够,使得插入动作无法完成。
对于杯/挂架任务,当杯柄与附近挂钩配合非常紧密时,我们的预测有时会失败。对于 C2F-QA,其预测在杯子朝向上经常忽略杯柄的位置——平移位置通常合理(例如正好靠近挂架上的一个挂钩),但朝向往往显得任意。我们还发现 C2F-QA 在此任务上的训练损失最高(我们猜测原因为此)。
最后,对于罐/柜子任务,一个普遍的失败模式是预测出的罐头放置位置会导致放置的罐头与柜内现有的罐头堆发生碰撞,而我们出于避免掀翻已有堆栈的要求对此类情况不予允许。
A6.4 任务执行
本节介绍在仿真和真实环境中执行推断关系的管道细节。
A6.4.1 仿真执行流程
评估流程与示范设置相似。我们将对应类别的 3D 模型对象以随机位置和朝向加载到 PyBullet 场景中。我们从 SO ( 3 ) \text{SO}(3) SO(3) 上均匀采样一个旋转矩阵,将对象设置为该朝向,并在世界坐标系中将其固定,不允许其在重力作用下落到桌面上,因为那会偏向仅评估在水平面上稳定放置的朝向,而我们希望评估每种方法对整个 SO ( 3 ) \text{SO}(3) SO(3) 空间泛化的能力。在这两种情况下,我们都会随机采样一个位于或高于桌面、模拟相机可见的位置。
加载物体和场景后,我们获取点云 P O \text{P}_\text{O} PO 和 P S \text{P}_\text{S} PS,并使用 RPDiff 得到一个重排变换来执行。为应用该预测变换,我们首先将物体状态重置到一个“预放置”姿态,然后通过位置控制器直接驱动物体沿直线路径运动。随后根据上文描述的标准检查任务是否成功。
预放置偏移与插入控制器
如果直接根据预测变换重置物体状态,会出现自动成功评估的复杂情况。为避免此类问题,我们在仿真中模拟一个过程,模仿闭环控制器从“预放置”姿态(相对于最终预测放置做了纯平移偏移)执行最后几寸的重排。对于定量评估,我们使用仿真器中物体的真实状态和对任务的先验知识来确定该平移偏移的方向。对于杯/挂架任务,我们确定一个穿过杯柄的轴线,并沿该轴线方向偏移固定距离(同时确保偏移方向不会导致从挂架的错误一侧接近)。对于罐/柜子任务和书/书架任务,我们使用已知的书架/柜子世界坐标系顶视偏航分量,沿书架/柜子的开口方向确定偏移方向。
为执行最终插入,我们将物体重置到计算出的“预放置”姿态,并通过位置控制器让物体沿直线从预放置姿态运动到最终预测放置姿态。为了模拟在完整重排系统中此类插入控制器可能具备的反应能力,我们让仿真器报告物体与场景之间检测到的接触力。如果在检测到接触时,物体姿态尚未接近最终预测姿态,我们便退回并随机采样一个小的“Δ”平移和机体坐标系旋转,应用于物体后再尝试下一次直线插入。最多尝试 10 次此类小调整,仍未成功则判定为执行失败。如果在检测到接触时,物体已在预测放置姿态的阈值范围内,则停止控制器,让物体释放并在重力作用下自由下落(这要么使其在场景物体之间稳定落定,要么使其掉出场景)。我们在所有评估方法中均采用此流程。
我们之所以采用“启发式计算的预放置姿态 + 试错式插入控制器”组合,是因为:(i) 这样可免去为物体规划从预放置到预测放置姿态的完整路径,这一规划问题因物体与场景间的密集碰撞而极难求解;(ii) 它能避免完全开环执行插入时产生的其他人为失败;(iii) 它让我们避免直接重置物体状态所带来的复杂问题。
A6.4.2 真实环境执行流程
在此,我们重复说明如何使用机械臂执行推断的变换,并补充更多细节。在测试时,我们获得物体和场景的点云 P O \text{P}_\text{O} PO 和 P S \text{P}_\text{S} PS,并从 RPDiff 获取作用于物体的 SE ( 3 ) \text{SE}(3) SE(3) 变换 T \text{T} T。通过将初始抓取姿态 T grasp \text{T}_\text{grasp} Tgrasp(使用独立的抓取预测器[10]获得)经 T \text{T} T 变换,得到放置姿态
T place = T T grasp , \text{T}_\text{place}=\text{T}\text{T}_\text{grasp}, Tplace=TTgrasp,
从而将 T \text{T} T 应用于物体 O \text{O} O。如同仿真设置,我们使用一组与任务相关的启发式方法计算额外的“预放置”姿态 T pre-place \text{T}_\text{pre\text{-}place} Tpre-place,然后沿直线轨迹从该姿态运动到 T place \text{T}_\text{place} Tplace。随后,我们使用现成的逆运动学和运动规划,将末端执行器移动到 T grasp \text{T}_\text{grasp} Tgrasp 和 T place \text{T}_\text{place} Tplace。
为了减轻在物体三维几何未知且已被抓取的情况下进行无碰撞规划的负担,我们还计算了一组额外的预抓取和后抓取路径点。这些路径点在执行抓取时可避免夹具与物体之间的碰撞,在将物体移动到预放置姿态时可避免物体与桌面或场景中其他物体的碰撞。整体路径的每个阶段都通过在位置控制模式下跟踪关节轨迹,并在相应步骤开闭爪指来执行。若规划器返回不可行,该流程可多次运行,因为抓取和放置生成模块均有能力提供多种可行解。
A7 额外消融实验
在本节中,我们进行了更多实验,对不同系统组件进行了修改和/或消融。
有无成功分类器对比。
我们使用神经网络
h
ϕ
h_ϕ
hϕ 作为成功分类器,帮助在通过迭代去噪过程生成的
K
K
K 个预测中选择“最佳”输出。另一种简单的输出选择机制是对这
K
K
K 个输出进行均匀采样。然而,由于在较小时间步
t
t
t 下的预测具有局部性,以及用于启动推理过程的随机初始猜测,一些最终解会收敛到不满足任务要求的配置(参见图 A5 中,当
A
=
10
A=10
A=10 时,有些书籍姿态会收敛到没有可用书槽的区域)。
因此,加入 h ϕ h_ϕ hϕ 的另一项好处是可以过滤掉这些可能收敛到“局部最优”解的预测,因为它们与分类器在训练时见过的一些负例相似。实际上,我们发现在使用成功分类器时,RPDiff 在各任务上的平均成功率为 0.88 0.88 0.88,而均匀采样输出预测时的平均成功率为 0.83 0.83 0.83。这一差异虽不算巨大,说明 RPDiff 的姿态去噪过程所做的大多数预测已经足够精确以完成任务,但性能差距也表明使用最终成功分类器对输出进行排序和筛选仍有额外帮助。
有无外部噪声对比。
在迭代评估过程的每次更新中,我们通过网络
f
θ
f_θ
fθ 预测的变换与随机采样的“外部噪声”变换
T
Δ
R
a
n
d
\text{T}^{\mathrm{Rand}}_Δ
TΔRand 相结合来更新当前姿态和物体点云。
T
Δ
R
a
n
d
\text{T}^{\mathrm{Rand}}_Δ
TΔRand 的采样分布由迭代次数
i
i
i 参数化,随着
i
→
0
i\to0
i→0 收敛为恒等变换,使得最终的姿态更新纯粹由网络
f
θ
f_θ
fθ 决定。
引入外部噪声的好处在于更好地平衡精度与覆盖度。首先,外部噪声能帮助每次迭代时的姿态/点云“跳出”任何局部最优区域,最终落在高质量解附近。此外,如果许多高质量解彼此相近,后期迭代中的外部噪声能保持姿态的多样性,使得最终的变换方案集合更具整体多样性。
例如,参见图 A6 中有无外部噪声的迭代预测定性对比:当 i _ t o _ t \mathtt{i\_to\_t} i_to_t 中 A = 1 A=1 A=1 且不加噪声时,仅找到两个可用书槽;而加噪声后,覆盖了四个可用书槽。定量上,我们也发现加入外部噪声能提升各任务的总体成功率和覆盖度。含噪声与不含噪声时,三项任务的平均 (成功率, 召回率) 分别为 ( 0.88 , 0.44 ) (0.88,0.44) (0.88,0.44) 和 ( 0.83 , 0.36 ) (0.83,0.36) (0.83,0.36)。
图 A6:展示了在完整迭代评估流程中,使用不同的
A
A
A 值(以及随后生成的不同数组
D
D
D)的
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 函数(将测试时迭代编号
n
=
1
,
…
,
I
n=1,\dots,I
n=1,…,I 映射到训练中使用的时间步
t
=
1
,
…
,
T
t=1,\dots,T
t=1,…,T),并从退火外部噪声分布
p
AnnealedRandSE
(
3
)
(
⋅
)
p_{\text{AnnealedRandSE}(3)}(\cdot)
pAnnealedRandSE(3)(⋅) 中添加不同量的外部噪声
T
Δ
R
a
n
d
\text{T}^{\mathrm{Rand}}_Δ
TΔRand 时的运行示例。我们观察到,当
A
A
A 值较大时,模型更多地生成对应于较小
t
t
t 值的预测。这些预测更具局部性,且整体解集合会收敛到更加广泛的重排变换上。这有时会导致“局部最优”解而无法完成期望任务(参见右上角
A
=
10
A=10
A=10 的示例)。当
A
A
A 值较小时,早期迭代更偏向于某一区域的平均解,因而变换集合往往在该区域内落至单一解。通过加入外部噪声,可在
A
A
A 值较小时提升覆盖度,同时在
A
A
A 值较大时避免“局部最优”,从而实现更好的平衡。
训练时的扩散步数
T
T
T
总步数
T
T
T 以及用于生成扰动变换
T
noise
(
t
)
\text{T}_\text{noise}^{(t)}
Tnoise(t) 的噪声分布,会影响模型
f
θ
f_θ
fθ 需要预测的平移和旋转幅度。虽然我们未对这些超参数进行穷尽搜索,但在早期实验中发现,若
T
T
T 取值过小(例如
T
=
2
T=2
T=2),预测会显得非常不精确。这是因为训练样本间距离过大时模型会学习到均值解,在这种情况下,示例对模型“看起来几乎都是多模态”的。另一方面,当
T
T
T 取值过大(例如
T
=
50
T=50
T=50)时,用于去噪的增量变换会非常微小、接近恒等变换。部署时,模型只能学习到做极小的姿态更新,最终无法将物体移出初始配置。
我们发现 T = 5 T=5 T=5 在各任务中均表现良好,且在此范围内的类似值也可能提供不错性能。该设置对应模型平均输出约 2.5 cm 的平移和 18° 的旋转。我们还观察到,对时间步 t = 1 , … , T t=1,\dots,T t=1,…,T 的采样做偏置,使其更多集中在较小 t t t 值处,会带来额外好处:模型在训练时能见到更多靠近真实值的样本,并在部署后期迭代中做出更精确的预测。我们通过对 t t t 从指数衰减的离散分布(取值 1 , 2 , … , T 1,2,…,T 1,2,…,T)中采样来实现这种偏置。
增量目标 vs. 完整目标
如第 3.1 节所述,鼓励网络
f
θ
f_θ
fθ 预测幅度大致相当的值是有益的。为验证文献中的这一结论,我们定量评估了一个以完整逆扰动
[
T
noise
(
t
)
]
−
1
\big[\text{T}_\text{noise}^{(t)}\big]^{-1}
[Tnoise(t)]−1 作为去噪目标训练的模型。使用增量去噪目标训练的模型在三项任务上的平均 (成功率, 召回率) 为 (0.88, 0.44);而使用完整去噪目标训练的模型为 (0.76, 0.34)。这表明训练时使用增量变换作为去噪预测目标,能显著提升性能。
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 函数中
A
A
A 的取值
本节讨论迭代评估过程中所用
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 函数中常量
A
A
A 的影响。该函数将评估迭代次数
i
i
i 映射到训练时见过的时间步
t
t
t。例如,我们在评估时运行 50 次迭代,而模型只在
t
≤
5
t\le5
t≤5 的范围内见过输入。我们的
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 函数由
A
A
A 参数化:
A
A
A 越大,评估时会有更多迭代使用较小
t
t
t 值;当
A
→
1
A\to1
A→1,每个
t
t
t 值使用的迭代次数相等(即
A
=
1
A=1
A=1 时,对每个
t
t
t 做
I
/
T
I/T
I/T 次预测)。
图 A6 展示了在 i _ t o _ t \mathtt{i\_to\_t} i_to_t 函数中使用不同 A A A 值,对书相对于多槽书架的姿态去噪的定性可视化。该示例表明,当 A A A 较小时,解更倾向于收敛到单一方案,因为更多预测使用较大 t t t 值,对应训练时更远离真实值的带噪点云;对于这些点云,指向正确目标相对于其它近旁放置区域更为模糊,因此模型学习到一种平均化解,偏向多个近邻放置区域的平均中心。另一方面,当 A A A 较大时,更多预测用到 t = 1 t=1 t=1 或 t = 0 t=0 t=0 等小 t t t 值,在这些时间步,模型已学会精确“吸附”到附近解上,因此姿态更新更具局部性,且 K K K 个并行预测的整体覆盖度更高。其权衡是,这些预测更可能卡在“局部最优”区域,而该区域可能没有有效的放置姿态。
表 3 展示了在书/书架任务中,不同
A
A
A 值的
i
_
t
o
_
t
\mathtt{i\_to\_t}
i_to_t 函数所对应的定量性能变化,结果反映:随着
A
A
A 增大,覆盖度提高但成功率略微下降的趋势。
A8 关于真实系统工程与局限性的进一步讨论
本节提供了在真实机器人上通过抓取–放置执行重排(对应图 1 和图 4 结果)的更多细节,并讨论了我们方法的额外局限性。
A8.1 在真实实验中按序执行多重预测变换
RPDiff 中姿态扩散过程的输出是一组 K K K 个 SE ( 3 ) \text{SE}(3) SE(3) 变换 { T k ( 0 ) } k = 1 K \{\text{T}_k^{(0)}\}_{k=1}^K {Tk(0)}k=1K。为了选择其中一个执行,我们通常使用成功分类器 h ϕ h_ϕ hϕ 对输出打分,并在考虑碰撞避免、机器人工作空间限制等可行性约束的前提下搜索方案。然而,为了在真实实验中展示多样化方案的执行,人操作员会对可行解集合进行最后的视觉检查,并决定执行哪一个。这样做主要是为了减轻记录机器人执行多种不同方案的负担(即避免机器人执行多个相似方案,从而无法展示我们方法生成方案的多样性)。
A8.2 扩展的局限性与限制性假设
第 7 节提到了我们方法的一些关键局限性。这里我们进一步阐述这些点,并讨论额外的局限性,以及未来可能的解决方向。
- 我们从头在示范数据上训练模型,未利用任何预训练或跨任务的特征共享。这意味着我们需要大量示范来训练模型。其后果是,我们无法轻易地提供足够多的真实世界示范来训练扩散模型(同时仍保持对未见过形状、姿态和场景布局的泛化能力)。此外,由于只在仿真中训练并直接迁移到真实环境,存在显著的 sim2real 差距,因此我们在真实世界中也观察到整体预测性能下降。如果所需示范数量更少,并能直接在与部署时观测到的点云相似的数据上训练模型,这一问题可得到缓解。
- 在仿真和真实环境中,我们都需要手动完成将物体移动到最终放置姿态前的偏移姿态。一个更理想的预测流程是沿着到达目标放置的路径(甚至是完整的无碰撞路径,例如[81]所示)生成“路径点”或“中间姿态”,以支持完整的插入轨迹,而不仅仅是指定最终放置姿态。
- 我们的方法仅基于物体与场景的几何表示运行,因此并不考虑物理/接触交互。如果在纯几何/运动学对齐之外,进一步考虑物理交互,方法可能会更准确地预测最终放置,并避免一些小误差。例如,在将杯子挂在挂架上的常见错误是杯柄恰好与挂钩擦肩而过。虽然几何上距离非常近,但物理上两者完全不同(一个有接触支撑杯子悬挂,另一个则无法支撑)。
- 我们的方法依赖于从深度相机获取的三维点云。虽然这使我们能对各种可被深度相机感知的真实物体和场景进行重排,但许多物体(如薄、闪亮或透明物体)无法通过深度相机观测到。未来研究中,探索使用从 RGB 传感器提取的信号,在六维空间中执行类似的物体–场景关系推理,将是一条令人兴奋的方向。