专栏名称: 学姐带你玩AI
这里有人工智能前沿信息、算法技术交流、机器学习/深度学习经验分享、AI大赛解析、大厂大咖算法面试分享、人工智能论文技巧、AI环境工具库教程等……学姐带你玩转AI!
目录
相关文章推荐
51好读  ›  专栏  ›  学姐带你玩AI

能搭载GPT-4o!李飞飞团队重磅开源万能具身机器人ReKep!

学姐带你玩AI  · 公众号  ·  · 2024-09-23 18:15

正文

来源:投稿  作者:橡皮
编辑:学姐

论文链接:http://arxiv.org/abs/2409.01652

项目主页:https://rekep-robot.github.io/

unset unset 摘要: unset unset

将机器人操作任务表示为将机器人与环境相关联的约束是一种很有前途的编码所需机器人行为的方法。然而,如何制定约束条件仍不清楚,以便它们 1) 适用于各种任务,2) 无需手动标记,3) 可通过现成的求解器进行优化,以实时产生机器人动作。在这项工作中,我们引入了关系关键点约束 (ReKep),这是机器人操作约束的视觉表示。具体来说,ReKep 表示为 Python 函数,将环境中的一组 3D 关键点映射到数值成本。我们证明,通过将操作任务表示为关系关键点约束序列,我们可以采用分层优化程序来解决机器人动作(由 SE(3) 中的一系列末端执行器姿势表示),具有实时频率的感知动作循环。此外,为了避免为每个新任务手动指定 ReKep 的需要,我们设计了一个自动化程序,利用大型视觉模型和视觉语言模型,从自由形式的语言指令和 RGB-D 观察中生成 ReKep。我们在轮式单臂平台和固定式双臂平台上展示了系统实现,这些平台可以执行各种各样的操作任务,具有多阶段、野外、双手和反应行为,所有这些都不需要特定于任务的数据或环境模型。

图 1:关系关键点约束 (ReKep) 将各种操作行为指定为对语义关键点进行操作的可优化时空约束函数系列。在倒水任务中,一个 ReKep 首先将抓取位置约束在茶壶的把手 (蓝色) 处。随后的 ReKep 将茶壶壶嘴 (红色) 拉向杯子开口的顶部 (绿色),而另一个 ReKep 通过关联把手 (蓝色) 和壶嘴 (红色) 形成的矢量来约束茶壶的所需旋转。

unset unset 1 引言 unset unset

机器人操作涉及与环境中物体的复杂交互,这些交互通常可以表示为空间和时间域中的约束。考虑图 1 中将茶倒进杯子的任务:机器人必须抓住手柄,在运输过程中保持杯子直立,将壶嘴与目标容器对齐,然后将杯子倾斜到正确的角度以倒茶。在这里,约束不仅编码了中间子目标(例如,对齐壶嘴),还编码了过渡行为(例如,在运输过程中保持杯子直立),这些行为共同决定了机器人相对于环境的动作的空间、时间和其他组合要求。

然而,要有效地为各种现实世界的任务制定这些约束,面临着巨大的挑战。虽然使用机器人和物体之间的相对姿势来表示约束是一种直接且广泛使用的方法,但刚体变换不能描绘几何细节,需要先验地获得物体模型,并且不能对可变形物体起作用。另一方面,数据驱动的方法可以直接在视觉空间中学习约束。虽然更灵活,但随着约束的数量在对象和任务方面组合增长,如何有效地收集训练数据仍不清楚。因此,我们提出一个问题:我们如何表示操纵中的约束,使其 1)广泛适用:适应需要多阶段、野外、双手和反应行为的任务,2)可扩展获得:有可能通过基础模型的进步实现完全自动化,3)实时优化:可以通过现成的求解器有效求解以产生复杂的操纵行为?

在这项工作中,我们提出了关系关键点约束 (ReKep)。具体来说,ReKep 将约束表示为 Python 函数,这些函数将一组关键点映射到数值成本,其中每个关键点都是场景中特定于任务且具有语义意义的 3D 点。每个函数都由对关键点的(可能非线性的)算术运算组成,并编码它们之间的所需“关系”,其中关键点可能属于环境中的不同实体,例如机器人手臂、物体部件和其他代理。虽然每个关键点仅由其在世界框架中的 3D 笛卡尔坐标组成,但如果强制执行关键点之间的刚性,则多个关键点可以共同指定线、表面和/或 3D 旋转。我们在顺序操作问题的背景下研究 ReKep,其中每个任务涉及具有时空依赖性的多个阶段(例如,上述示例中的“抓取”、“对齐”和“倾倒”)。

虽然约束通常是根据任务手动定义的,但我们证明了 ReKep 的特定形式具有独特的优势,因为它们可以通过预训练的大型视觉模型 (LVM)和视觉语言模型 (VLM)实现自动化,从而能够根据 RGB-D 观察和自由格式的语言指令在野外指定 ReKep。具体来说,我们利用 LVM 提出场景中细粒度且语义上有意义的关键点,并利用 VLM 将约束写为 Python 函数,这些函数来自与所提出的关键点叠加的视觉输入。这个过程可以解释为使用视觉引用表达式将细粒度的空间关系(通常是那些不易用自然语言指定的关系)置于 VLM(代码)支持的输出模态中。

有了生成的约束,现成的求解器可用于通过基于跟踪的关键点重新评估约束来生成机器人动作。受先前工作的启发,我们采用分层优化程序,首先解决一组航路点作为子目标(表示为 SE(3) 末端执行器姿势),然后解决滚动时域控制问题以获得实现每个子目标的密集动作序列。通过对问题进行适当的实例化,我们证明它可以在大约 10 Hz 的频率下可靠地解决本文中考虑的任务。

我们的贡献概括如下:1)我们将操作任务制定为具有关系关键点约束的分层优化问题;2)我们设计了一个管道,使用大型视觉模型和视觉语言模型自动指定关键点和约束;3)我们在两个真实机器人平台上展示了系统实现,这两个平台以语言指令和 RGB-D 观测作为输入,并为各种各样的操作任务产生多阶段、野外、双手和反应行为,所有这些都不需要特定于任务的数据或环境模型。

unset unset 2 相关工作 unset unset

操作的结构表示。 结构表示决定了操纵系统中不同模块的编排,并对系统的功能、假设、效率和有效性产生不同的影响。考虑到自由空间中刚体运动的充分理解及其在建模物体长距离依赖性方面的效率,刚体姿势是最常用的。然而,由于它通常需要事先对环境的几何和动力学进行建模,因此各种工作都使用数据驱动的方法研究了结构表示,例如学习以对象为中心的表示、基于粒子的动力学和关键点或描述符。其中,关键点因其可解释性、效率、对实例变化的泛化以及对刚体和可变形物体进行建模的能力而显示出巨大的前景。然而,每个任务都需要手动注释,因此在开放世界环境中缺乏可扩展性,我们旨在在本文中解决这个问题。

操作中的约束优化。 约束通常用于对机器人施加期望的行为。运动规划算法使用几何约束来计算可行轨迹,从而避开障碍物并实现目标。接触约束可用于规划有力或接触丰富的行为。对于顺序操作任务,任务和运动规划 (TAMP) 是一种广泛使用的框架,通常表述为约束满足问题,其中连续几何问题作为子程序。逻辑几何规划可以在整个状态轨迹上制定非线性约束规划,同时考虑逻辑和几何约束。约束可以手动编写,也可以从流形、可行性模型或有符号距离场形式的数据中学习。受到先前工作的启发,我们将顺序操作任务制定为一个集成的连续数学程序,以滚动求解的方式反复求解,其关键区别在于约束由基础模型综合而成。

机器人基础模型。 利用机器人基础模型是一个活跃的研究领域。在这里,我们重点介绍能够整合视觉输入以进行机器人操作的 VLM。然而,尽管 VLM 显示出在开放世界规划和目标指定方面的潜力,但其字幕引导关联方案通常会限制可以保留的图像视觉细节。另一方面,自监督视觉模型(例如 DINO)提供了可用于各种视觉和机器人任务的细粒度像素级特征,但缺乏解释开放世界语义的有效方法,而这对于跨任务泛化至关重要。在这项工作中,我们利用它们的互补优势,使用 DINOv2进行细粒度关键点提议,并使用 GPT-4o在支持的输出模态(代码)中实现其视觉推理能力。并行工作中也探索了类似形式的视觉提示技术。在这项工作中,我们证明了 ReKep 具有执行具有挑战性的 6-12 DoF 任务、集成高级推理以进行反应性重新规划、高频闭环执行以及通过视觉提示生成黑盒约束的独特优势。我们将更详细的讨论推迟到附录 A.10。

unset unset 3 方法 unset unset

我们在此讨论:

(1)什么是关系关键点约束(第 3.1 节)?

(2)如何使用 ReKep 将操作表述为受约束的优化问题(第 3.2 节)?

(3)我们的算法实例是什么,可以有效地实时解决优化问题(第 3.3 节)?

(4)如何从 RGB-D 观察和语言指令中自动获取 ReKep(第 3.4 节)?

3.1 关系关键点约束(ReKep)

在此我们定义了 ReKep 的单个实例。为清楚起见,我们假设已指定一组 K 个关键点(稍后将在第 3.4 节中讨论)。具体来说,每个关键点 指的是具有笛卡尔坐标的场景表面上的 3D 点,这取决于任务语义和环境(例如,手柄上的抓握点、喷口)。

ReKep 的一个实例是一个函数 ,它将一组关键点(表示为 k)映射到无界成本,其中 表示满足约束。函数 实现为无状态 Python 函数,包含对关键点的 NumPy操作,这些操作可能是非线性和非凸的。本质上,ReKep 的一个实例对关键点之间的一个所需空间关系进行编码,这些关键点可能属于机器人手臂、物体部件和其他代理。

然而,一个操作任务通常涉及多种空间关系,并且可能具有多个时间相关的阶段,其中每个阶段需要不同的空间关系。为此,我们将任务分解为 N 个阶段,并使用 ReKep 为每个阶段 指定两种约束:一组子目标约束:

和一组路径约束:

其中 编码在阶段 i 结束时要实现的一个关键点关系, 编码在阶段 i 内每个状态下要满足的一个关键点关系。考虑图 2 中的倒水任务,它包含三个阶段:抓取、对齐和倒水。第 1 阶段子目标约束将末端执行器拉向茶壶把手。然后,第 2 阶段子目标约束指定茶壶壶嘴需要位于杯口上方。此外,第 2 阶段路径约束确保茶壶保持直立,以避免在运输过程中溢出。最后,第 3 阶段子目标约束指定所需的倾倒角度。

3.2 使用 ReKep 将操作任务作为约束优化

使用 ReKep 作为表示约束的通用工具,我们采用先前工作中的公式,并展示如何将操作任务表述为涉及 子目标和 路径的约束优化问题。我们将末端执行器姿势表示为 。为了执行操作任务,我们的目标是通过将控制问题表述如下来获得整体离散时间轨迹

其中 et 表示时刻 t 的末端执行器姿态, 是从阶段 i 到 i + 1 的转换时间,也是辅助决策变量,kt 是时刻 t 的关键点位置数组,h 是关键点的前向模型, 路径分别是子目标和路径问题的辅助成本函数(例如,避免碰撞)。也就是说,对于每个阶段 i,优化应找到一个末端执行器姿态作为下一个子目标,以及它的时间和实现子目标的姿态序列 ,但要满足给定的 ReKep 约束和辅助成本。这种公式可以看作是轨迹优化中的直接解决方案。

3.3 分解与算法实例

为了实时解决方程 1,我们对整个问题进行了分解,只针对下一个子目标和达到子目标的相应路径进行优化(算法 1 中的伪代码)。所有优化问题均使用 SciPy实现和解决,决策变量归一化为 [0, 1]。它们最初使用双退火以 SLSQP作为局部优化器进行求解(大约 1 秒),随后仅使用基于先前解的局部优化器以大约 10 Hz进行求解。

子目标问题:我们首先解决子目标问题以获得当前阶段 i 的

其中 包含辅助控制成本:场景防撞、可达性、姿势正则化、解决方案一致性和双手设置的自碰撞(详见 A.8)。也就是说,等式 2 试图找到一个满足 的子目标,同时最小化辅助成本。如果某个阶段涉及抓取,则还包括抓取指标。在本文中,我们使用 AnyGrasp。

路径问题: 获得子目标 之后,我们求解从当前末端执行器姿势 到子目标 的轨迹

其中 包含以下辅助控制成本:场景碰撞避免、可达性、路径长度、解决方案一致性以及双手设置情况下的自碰撞(详见 A.9)。如果到子目标 的距离在小公差 ϵ 内,我们将进入下一阶段 i + 1。

回溯: 虽然可以实时解决子问题以应对阶段内的外部干扰,但如果上一阶段的任何子目标约束不再成立(例如,在倒水任务中从夹子中取出杯子),系统必须能够跨阶段重新规划。具体来说,在每个控制循环中,我们都会检查是否违反了 。如果发现一个,我们会迭代回溯到前一阶段 j,以便满足

关键点的前向模型: 要解决方程 2 和方程 3,必须利用前向模型 h,该模型在优化过程中根据 ∆e 估算 ∆k。与先前的工作一样,我们在末端执行器和“抓取的关键点”(属于同一物体或部分的刚性关键点组;从第 3.4 节中描述的分割模型中获得)之间做出刚性假设。也就是说,给定末端执行器姿势 ∆e 的变化,我们可以通过应用相同的相对刚性变换 来计算关键点位置的变化,同时假设其他关键点保持不变。我们注意到这是一个“局部”假设,因为它只假设在问题得到解决的短时间内(0.1 秒)成立。实际关键点位置使用 20 Hz 的视觉输入进行跟踪,并用于每个新问题。对于更具挑战性的场景(例如动态或接触丰富的任务),可以使用学习或基于物理的模型。

3.4 关键点候选和 ReKep 生成

为了使系统能够在给定自由形式的任务指令的情况下在野外执行任务,我们设计了一个使用大型视觉模型和视觉语言模型进行关键点提议和 ReKep 生成的管道,分别讨论如下:

关键点候选: 给定一个 RGB 图像 ,我们首先从 DINOv2中提取面片特征 。然后我们执行双线性插值将特征上采样到原始图像大小 。为了确保提议覆盖场景中所有相关物体,我们使用 Segment Anything (SAM)  提取场景中的所有掩码







请到「今天看啥」查看全文