ReKep——李飞飞团队提出的新一代机器人操作方法:基于视觉语言模型和关键点约束

前言

由于工厂、车厂的任务需求场景非常明确,加之自今年年初以来,我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建),使得近期我司七月接到了不少来自车厂/工厂的订单,比如柔性上料、物料分拣、RL仿真平台搭建等

也让我们越来越坚定在机器人方向发力具身智能 工业协作机器人,且细分为如下三大场景

  • 初级,类似上条微博,面向高校实验室的具身「教学机器人」,及给青年少年小孩的「教育机器人」
  • 中级,面向小工厂或家务,硬件成本十来万到几十万,今24年q4 开搞
  • 高级,南京那边目前早已在弄的 面向大规模工业场景的协作机器人

而既然在机器人这个行业,故我们对该领域的各种前沿进展始终保持极高关注,从而注意到了李飞飞团队提出的这个ReKep,其对应的论文为《》,当然,你在阅读该文时,也欢迎使用我司七月开发的基于大模型的翻译系统(目前已上线七月官网,左边英文 右边中文,如此中英文对照下的阅读效率奇快无比)

如我司机器人技术合伙人姚博士所说,“ReKep的方法基于大模型,增加运动限制,而我们之前做的更多基于端到端的专用数据模型”

第一部分 ReKep的提出背景与其关键架构

1.1 提出背景

机器人操作涉及与环境中物体的复杂交互,这些交互通常可以在空间和时间域中表示为约束

考虑下图中的倒茶任务:机器人必须抓住把手,在运输过程中保持杯子直立,最后对齐壶嘴与目标容器,并以正确的角度倾斜杯子进行倒茶

在这里,这些约束不仅编码了中间的子目标(例如,对齐壶嘴),还编码了过渡行为(例如,在运输过程中保持杯子直立),这些约束共同决定了机器人在环境中行动的空间、时间和其他组合要求

然而,有效地为各种现实任务制定这些约束条件面临着重大挑战,之前有不少相关的工作,而李飞飞团队则提出了关系关键点约束——ReKep,具体来说

  1. ReKep 将约束表示为 Python 函数,这些函数将一组关键点映射到一个数值成本,其中每个关键点都是场景中特定任务和语义上有意义的三维点
    ReKep repre-sents constraints as Python functions that map a set of keypoints to a numerical cost, where eachkeypoint is a task-specific and semantically meaningful 3D point in the scene
  2. 每个函数由关键点上的(可能是非线性的)算术运算组成,并编码了它们之间的期望“关系”,这些关键点可能属于环境中的不同实体,例如机器人手臂、物体部件和其他代理
  3. 虽然每个关键点仅包含其在世界坐标系中的三维笛卡尔坐标,但如果关键点之间的刚性rigidity得到保证,多个关键点可以共同指定线、面和/或三维旋转

他们在顺序操作问题的背景下研究 ReKep,其中每个任务涉及具有时空依赖关系的多个阶段——例如,上述示例中的“抓取”、“对齐”和“倒入”

虽然约束通常是根据任务手动定义的[4],但ReKep的特定形式具有独特的优势

  • 即可以通过预训练的大型视觉模型(LVM)[Dinov2: Learning robust visual features without supervision]和视觉-语言模型(VLM)[比如GPT4]实现自动化「they can be automated by pre-trained large vi-sion models (LVM) [5] and vision-language models (VLM) [6]
  • 从而能够从RGB-D观测和自由形式的语言指令中进行自然环境下的ReKep规范(enabling in-the-wild specificationof ReKep from RGB-D observations and free-form language instructions)

具体来说

  1. 我们利用LVM在场景中提出细粒度且语义有意义的关键点,并利用VLM将这些约束从覆盖有建议关键点的视觉输入写成Python函数
    Specifically, we leverage LVM to propose fine-grained and semantically meaningful keypoints in the scene and VLM to write the constraints as Python functions from visual input overlaid with proposed keypoints.

    这个过程可以解释为VLM支持的输出模式(代码)中使用视觉引用表达来奠定细粒度空间关系,通常这些关系不易用自然语言指定(使用大型视觉模型和视觉-语言模型自动指定关键点和约束)
    This processcan be interpreted as grounding fine-grained spatial relations, often those not easily specified with natural language, in an output modality supported by VLM (code) using visual referral expressions.
  2. 通过生成的约束条件,可以使用现成的求解器,通过重新评估基于跟踪关键点的约束来生成机器人动作
    With the generated constraints, off-the-shelf solvers can be used to produce robot actions by re-evaluating the constraints based on tracked keypoints.
  3. 受[Sequence-of-constraints mpc: Reactive timing-optimal control of sequential manipulation]的启发,采用分层优化程序——将操作任务表述为具有关系关键点约束的分层优化问题
    首先解决一组路径点作为子目标(表示为SE(3)末端执行器姿态)
    然后解决退化视界控制问题,以获得实现每个子目标的密集动作序列
    Inspired by [7], we employ a hierarchical optimization procedure to first solve a set of waypoints as sub-goals (represented as SE(3) end-effector poses) and then solve the receding-horizon control problem to obtain a dense sequence ofactions to achieve each sub-goal

1.2 ReKep的关键方法与其架构

1.2.1 什么是关系关键点约束

ReKep 的一个实例是一个函数f: \mathbb{R}^{K \times 3} \rightarrow \mathbb{R},它将关键点数组(记作 k)映射到一个无界的成本,其中f(\boldsymbol{k}) \leq 0表示约束已满足

函数 f 实现为一个无状态的 Python 函数,包含对关键点进行的 NumPy [123] 操作,这些操作可能是非线性和非凸的

本质上,ReKep 的一个实例编码了关键点之间的一种期望的空间关系,这些关键点可能属于机器人手臂、物体部件和其他代理

然而,一个操作任务通常涉及多个空间关系,并且可能具有多个时间上相互依赖的阶段,每个阶段都包含不同的空间关系

为此,我们将任务分解为N个阶段,并使用ReKep为每个阶段i \in\{1, \ldots, N\}指定两种约束

  1. 一组子目标约束\mathcal{C}_{\text {sub-goal }}^{(i)}=\left\{f_{\text {sub-goal }, 1}^{(i)}(\boldsymbol{k}), \ldots, f_{\text {sub-goal }, n}^{(i)}(\boldsymbol{k})\right\}
    其中,f_{\text {sub-goal }}^{(i)}编码了在阶段i结束时要实现的一个关键点关系,相当于是阶段目标
  2. 一组路径约束\mathcal{C}_{\text {path }}^{(i)}=\left\{f_{\text {path }, 1}^{(i)}(\boldsymbol{k}), \ldots, f_{\text {path }, m}^{(i)}(\boldsymbol{k})\right\}
    其中,f_{\text {path }}^{(i)}编码了在阶段i内每个状态都要满足的一个关键点关系,相当于是路径

考虑下图中的倒水任务,它包括三个阶段:抓取、对齐和倒水

  1. 阶段1的子目标约束(sub-goal constraint),将末端执行器拉向茶壶把手
  2. 然后阶段2的子目标约束指定茶壶嘴需要在杯口上方。此外,阶段2的路径约束(path constraint),确保茶壶保持直立,以避免在运输过程中洒出
  3. 最后,阶段3的子目标约束指定了理想的倒水角度

1.2.2 通过ReKep将操作任务视为带约束的优化问题

使用ReKep作为表示约束的一般工具,采用[7]中的公式,并展示如何将操作任务表述
为涉及\mathcal{C}_{\text {sub-goal }}^{(i)}\mathcal{C}_{\text {path }}^{(i)}的约束优化问题

将末端执行器姿态表示为\mathbf{e} \in S E(3),为了执行操作任务,旨在通过如下公式化控制问题来获得整体离散时间轨迹\mathbf{e}_{1: T}(记为方程1)

\underset{\mathbf{e}_{1: T}, g_{1: N}}{\arg \min } \sum_{i=1}^{N}\left[\lambda_{\text {sub-goal }}^{(i)}\left(\mathbf{e}_{g_{i}}\right)+\sum_{t=g_{i-1}}^{g_{i}} \lambda_{\text {path }}^{(i)}\left(\mathbf{e}_{t}\right)\right] \text { s.t. }\left\{\begin{array}{l} \mathbf{e}_{1}=\mathbf{e}_{\text {init }}, g_{0}=1,0<g_{i}<g_{i+1} \\ f\left(\boldsymbol{k}_{g_{i}} \leq 0, \forall f \in \mathcal{C}_{\text {sub-goal }}^{(i)}\right. \\ f\left(\boldsymbol{k}_{t}\right) \leq 0, \forall f \in \mathcal{C}_{\text {path }}^{(i)}, t=g_{i-1}, \ldots, g_{i} \\ \boldsymbol{k}_{t+1}=h\left(\boldsymbol{k}_{t}, \mathbf{e}_{t}\right), t=1, \ldots, T-1 \end{array}\right.

  • 其中 ,e_t表示在时间t的末端执行器姿态,g_{i} \in\{1, \ldots, T\}是从阶段ii+ 1的转换时间,这些也是辅助决策变量,k_t是时间t的关键点位置数组, h是关键点的前向模型,\lambda_{\text {sub-goal }}^{(i)}\lambda_{\text {path }}^{(i)}是子目标和路径问题的辅助成本函数(例如,碰撞避免)
  • 即,对于每个阶段i,上述优化函数应找到作为下一个子目标的末端执行器姿态及其时间序列以及一系列姿态\mathbf{e}_{g_{i-1}: g_{i}},以在给定的一组ReKep约束和辅助成本的前提下实现子目标

    Namely, for each stage i, the optimization shall find an end-effector pose as next sub-goal, along with its timing, and a sequence of poses egi−1:gi that achieves the sub-goal, subject to the given set of ReKep constraints and auxiliary costs.

1.2.3 分解与算法实现

为了解实时解决方程1,可以对整个问题进行分解,只优化立即下一个子目标及其到达子
目标的相应路径(算法1中的伪代码)

  1. 所有优化问题均使用SciPy [ Scipy 1.0: fundamental algorithms for scientific computing in python]实现和解决,决策变量归一化到 [0, 1]
  2. 它们最初使用双重退火 [126] 和 SLSQP [127] 作为局部优化器(大约1秒)解决,然后基于先前的解决方案仅使用局部优化器以大约10 Hz1的频率解决

// 待更

1.2.4 关键点提议和ReKep生成

// 待更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1538637.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

自动泊车系统中的YOLOv8 pose关键点车位线检测

自动泊车系统中的YOLOv8关键点车位线检测技术解析 引言 随着智能驾驶技术的快速发展&#xff0c;自动泊车功能成为了现代汽车的重要组成部分。它不仅能够提高驾驶的安全性&#xff0c;还能在一定程度上解决城市停车难的问题。在自动泊车系统中&#xff0c;准确识别停车位的位置…

10年408考研真题-数据结构

23.[2010统考真题]若元素 a,b,c,d,e,f 依次进栈&#xff0c;允许进栈、退栈操作交替进行&#xff0c;但不允许连续3次进行退栈操作&#xff0c;不可能得到的出栈序列是(D)。 A.dcebfa B.cbdaef C.bcaefd D.afedcb 解析&#xff1a;直接看D选项&#xff0c…

风力发电厂智能化转型5G工业路由器物联网应用解决方案

在风力发电厂的智能化转型过程中&#xff0c;5G工业路由器作为数据传输的高速通道&#xff0c;更是连接风电设备、传感器与云端智能平台的桥梁。通过5G的高带宽和低延迟特性&#xff0c;工业路由器能够实时传输海量的风电厂数据&#xff0c;包括但不限于风速、风向、发电机温度…

opencv实战项目二十四:棋盘格相机内参标定

文章目录 前言一、简介&#xff1a;二、使用步骤2.1制作标定板2.2 拍摄不同角度的标定板2.3计算棋盘格角点并优化2.4计算相机参数 三、整体代码实现&#xff1a; 前言 在数字图像处理和计算机视觉领域&#xff0c;相机标定是一个至关重要的步骤。它为相机提供了一个准确的数学…

vue和thinkphp路由伪静态配置

vue路由伪静态配置&#xff1a; location / { try_files $uri $uri/ /index.html; } thinkphp 路由伪静态配置 location ~* (runtime|application)/{ return 403; } location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s$1 last; break; } }

CMA第三方软件测试报告获取指南

在当今竞争激烈的市场环境中&#xff0c;企业对于产品质量的重视程度不断提高。为了确保软件产品的性能和安全性&#xff0c;许多企业开始寻求专业的第三方测试服务来获取第三方软件测试报告&#xff0c;而有无CMA认证资质对于软件测试报告来说至关重要。 CMA认证是中国国家认…

极客天成NVFile并行文件存储加速多模态大模型训练

01 国内多模态大模型训练的存储系统应用现状 近年来&#xff0c;中国在人工智能领域&#xff0c;尤其是多模态大模型的研发和应用方面取得了显著进展。随着百度文心一言、阿里通义千问、讯飞星火等支持图文生成的国产大模型&#xff0c;以及抖音、快手等在视频生成领域的突破…

RK3568平台(基础篇)示波器的使用

一.示波器面板介绍 示波器的横轴表示的是时间,在横轴上有10个小格,每个小格的时间是200us。 示波器的纵轴表示的是电压,在纵轴上有8个小格,每个小格的电压表示1V。 以上是个方波,方波在纵轴上占5个小格,每个小格的电压是500mv,所以这个方波的电压为2500mv。 方波在横…

python毕业设计基于django+vue医院社区医疗挂号预约综合管理系统7918h-pycharm-flask

目录 技术栈和环境说明预期达到的目标具体实现截图系统设计Python技术介绍django框架介绍flask框架介绍解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示操作可行性技术路线感恩大学老师和同学详细视频演示源码获取 技术…

ETL架构类型有哪些?怎么选择?

ETL作为一种企业常用的数据流程和数据管理的重要手段&#xff0c;帮助企业完成大量的数据处理和解决数据分析需求。在选择ETL工具时&#xff0c;同样需要考量ETL架构。ETL架构类型有哪些&#xff1f;企业如何根据自身业务需求选择合适的ETL架构呢&#xff1f;本文将介绍三种常用…

SpringBoot项目编译运行成功,但有些包名类名仍然下划线标红的解决方法 | Idea

目录 问题解决方案&#xff1a;方法一&#xff1a;方法二【我用这个成功的】 问题 如图&#xff0c;成功运行但有些包名类名仍然下划线标红&#xff0c;强迫症抓狂 成功运行&#xff1a; 有些包导入标红&#xff1a; 解决方案&#xff1a; 方法一&#xff1a; 点击fil…

浅显易懂的Git教程

Git概述 SVN与Git的对比 SVN&#xff08;Subversion&#xff09; 类型&#xff1a;集中式版本控制系统 工作流程&#xff1a; 从中央服务器下载最新版本到本地。在本地进行开发。提交更改回中央服务器。 优点&#xff1a; 简单易用&#xff0c;适合小型团队。版本历史清…

JAVA基础:正则表达式,String的intern方法,StringBuilder可变字符串特点与应用,+连接字符串特点

1 String中的常用方法2 1.1 split方法 将字符串按照指定的内容进行分割&#xff0c;将分割成的每一个子部分组成一个数组 分割内容不会出现在数组中 实际上该方法不是按照指定的简单的符号进行分割的&#xff0c;而是按照正则表达式进行分割 1.2 正则表达式 用简单的符号组合…

9.18 C++对C的扩充

使用cout实现输出斐波那契前20项的值 #include <iostream>using namespace std;int main() {int n11,n21,n3;cout << n1 <<" "<< n2<<" ";for(int i0;i<18;i){n3n1n2;cout<<n3<<" " ;n1n2;n2n3;}…

Hikvision综合安防管理平台isecure center文件读取深度利用

前言 远离一线很久了&#xff0c;很难有实战的机会。碰到Hikvision的漏洞&#xff0c;市面上的很多文章又很模糊&#xff0c;自己摸全点做个详细记录。 参考文章&#xff0c;向佬学习。本次测试为内部授权测试&#xff0c;已脱敏。https://mp.weixin.qq.com/s/zvo195UQvWwTppm…

Iceoryx请求/响应通信

除了iceoryx最初支持的发布-订阅消息传递模式外,请求-响应模式也广泛应用于iceoryx所处的领域。由于我们的目标是与ROS 2进行良好的集成,因此这也是支持其通常用于控制机器人的服务通信方法所必需的。 虽然发布-订阅是一种持续提供数据更新的数据分发模式,但请求-响应是一种…

Day29_0.1基础学习MATLAB学习小技巧总结(29)——参数估计函数

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a; 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

【AI工作流】选择AI问答还是AI工作流:提升Python开发效率的最佳实践与应用场景

许多学习者在获取Python知识时&#xff0c;常常会遇到一个问题&#xff1a;在询问某个函数或概念时&#xff0c;可能会得到与所需语言不符的答案。这种情况不仅浪费了时间&#xff0c;还可能导致学习上的误解。因此&#xff0c;找到一个高效的学习工具显得尤为重要。 在这篇文…

2024年9月12日美国Embarcadero公司正式发布RAD Studio Delphi/C++ Builder 12.2 雅典

Embarcadero 非常高兴地宣布&#xff0c;从今天开始&#xff0c;RAD Studio 12.2 Athens 以及 Delphi 12.2 和 CBuilder 12.2 可供客户使用。RAD Studio 12.2 Athens 版本提供了我们在 IDE 中的第一次生成式 AI 集成、用于 Web 开发的新模板库、基于 C Win64 Clang 的新编译器和…

Java | Leetcode Java题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canPartition(int[] nums) {int n nums.length;if (n < 2) {return false;}int sum 0, maxNum 0;for (int num : nums) {sum num;maxNum Math.max(maxNum, num);}if (sum % 2 ! 0) {return false;}…