北京大学与智元机器人联合实验室发布OmniManip:显著提升机器人3D操作能力

news/2025/2/3 23:09:59/

近年来视觉语⾔基础模型(Vision Language Models, VLMs)在多模态理解和⾼层次常识推理上⼤放异彩,如何将其应⽤于机器⼈以实现通⽤操作是具身智能领域的⼀个核⼼问题。这⼀⽬标的实现受两⼤关键挑战制约:1. VLM 缺少精确的 3D 理解能⼒:通过对⽐学习范式训练、仅以 2D 图像 / ⽂本作为输⼊的 VLM 的天然局限;2. ⽆法输出低层次动作:将 VLM 在机器⼈数据上进⾏微调以得到视觉 - 语⾔ - 动作(VLA)模型是⼀种有前景的解决⽅案,但⽬前仍受到数据收集成本和泛化能⼒的限制。针对上述难题,北⼤携⼿智元机器⼈团队提出了 OmniManip 架构,基于以对象为中⼼的 3D 交互基元,将 VLM 的高层次推理能力转化为机器⼈的低层次高精度动作。针对⼤模型幻觉问题和真实环境操作的不确定性,OmniManip 创新性地引⼊了 VLM 规划和机器⼈执⾏的双闭环系统设计,实现了操作性能的显著突破。实验结果表明,OmniManip 作为⼀种免训练的开放词汇操作⽅法,在各种机器⼈操作任务中具备强⼤的零样本泛化能⼒。项⽬主⻚与论⽂已上线,代码与测试平台即将开源。主⻚地址:https://omnimanip.github.io论⽂地址:https://arxiv.org/abs/2501.03841▍技术⽅案解析⽅法概述OmniManip 的关键设计包括:基于 VLM 的任务解析:利⽤ VLM 强⼤的常识推理能⼒,将任务分解为多个结构化阶段(Stages),每个阶段明确指定了主动物体(Active)、被动物体(Passive)和动作类型(Action)。以物体为中⼼的交互基元作为空间约束:通过 3D 基座模型⽣成任务相关物体的 3D 模型和规范化空间(canonical space),使 VLM 能够直接在该空间中采样 3D 交互基元,作为 Action 的空间约束,从⽽优化求解出 Active 物体在 Passive 物体规范坐标系下的⽬标交互姿态。闭环 VLM 规划:将⽬标交互姿态下的 Active/Passive 物体渲染成图像,由 VLM 评估与重采样,实现 VLM 对⾃身规划结果的闭环调整。闭环机器⼈执⾏:通过物体 6D 姿态跟踪器实时更新 Active/Passive 物体的位姿,转换为机械臂末端执⾏器的操作轨迹,实现闭环执⾏。以物体为中⼼的交互基元物体的交互基元通过其在标准空间中的交互点和⽅向来表征。交互点 p∈R3 表示物体上关键的交互位置,⽽交互⽅向 v∈R3 代表与任务相关的主要轴。在这里插入图片描述
在这里插入图片描述
这两者共同构成交互基元 O={p,v},封装了满⾜任务约束所需的基本⼏何和功能属性。这些标准交互基元相对于其标准空间定义,能够在不同场景中保持⼀致,实现更通⽤和可重⽤的操作策略。对于通⽤物体的交互点提取,OmniManip 利⽤视觉语⾔模型(VLM)在原图(当部件可⻅且实体存在时)或在正交视图中渲染的 3D ⽹格(当部件不可⻅或实体不存在时)上进⾏定位。与 CoPa 和 ReKep 等⽅法不同,OmniManip 直接让 VLM 进⾏ grounding,不会受限于不稳定的 part 分割或聚类结果。在交互⽅向的采样⽅⾯,由于物体的规范化空间通过 Omni6DPose 锚定,轴的⽅向与语义对⻬,该团队让 VLM 直接对物体标准空间的轴进⾏语义描述,并根据操作任务进⾏匹配度排序,以获得交互⽅向的候选。双闭环系统设计李⻜⻜团队的⼯作 ReKep 通过关键点跟踪巧妙地实现了机械臂的闭环执⾏,但其 VLM 规划过程是开环的。OmniManip 则更进⼀步,得益于以物体为中⼼的设计理念,⾸次在 VLM 规划和机械臂执⾏层⾯实现了双闭环系统:闭环规划:在实验中,VLM 推理很容易出现幻觉,导致错误的规划结果(尤其是在涉及 3D 旋转的任务中,如倒⽔、插笔)。OmniManip 赋予 VLM 闭环规划能⼒,通过渲染物体的三维模型,帮助 VLM 「脑补」出规划结果后的物体样貌,再判断其合理性。这⼀功能赋予了 VLM 空间反思能⼒,使其能够在测试时进⾏推理,类似于 OpenAI 的 O1,⼤⼤提⾼了操作成功率。为了保持框架的简洁性,研究团队没有设计复杂的测试时推理流程,仅作⼀轮校验就已明显提⾼了 VLM 的规划准确率。闭环执⾏:OmniManip 提取的交互基元位于物体的规范空间中,只需引⼊⼀个 6D 位姿跟踪器即可轻松实现闭环操作。与 ReKep 使⽤的关键点跟踪器相⽐,基于物体的 6D 位姿跟踪⽅式更为稳定,并对遮挡具有更强的鲁棒性。(缺点则是不如关键点灵活、⽆法建模柔性物体操作。)▍实验结果强⼤的开放词汇操作性能在 12 个真机短程任务上,OmniManip 均展现出卓越的性能。在这里插入图片描述
双闭环系统设计为 OmniManip 带来了约 17% 的性能提升,这证明了 RRC 在有效减少⼤模型幻觉影响⽅⾯的作⽤。交互基元的鲁棒性VLM 需要基于交互基元对机器⼈操作进⾏规划,如果交互基元本身存在问题,VLM 就会陷⼊「巧妇难为⽆⽶之炊」的困境。因此,可靠的交互基元⾄关重要。以往的⽅法通常是让 VLM 直接在相机拍摄的 2D 图像上采样交互基元,然后通过相机的内外参数转换到 3D 空间。然⽽,由于 2D 图像存在空间歧义,采样效果对相机视⻆、图像纹理和部件形状等因素极为敏感(例如,当相机平视杯⼦时,之前的⽅法只能对准杯⼦的侧壁、⽽不是开⼝)。⽽ OmniManip 则是在物体的 3D 规范空间中进⾏采样,能够轻松克服 2D 图像的局限性,实现可靠的 3D 交互基元提取。强⼤的拓展性与潜⼒OmniManip 能够与 high-level 任务规划器结合,实现⻓程任务操作作为⼀种以物体为中⼼的算法,OmniManip 与机械臂本体解耦,能够零成本迁移⾄不同形态的本体(例如双臂⼈形机器⼈)。3df68420.png" alt="在这里插入图片描述" />
OmniManip 具有强⼤的通⽤泛化能⼒,不受特定场景和物体限制。团队已将其应⽤于数字资产⾃动标注 / 合成管道,实现⼤规模的机器⼈轨迹⾃动采集。该研究团队即将开源⾼质量的泛化操作⼤规模数据集和对应的仿真评测基准,敬请期待!本文的作者均来自北京大学与智元机器人联合实验室,通讯作者为北京大学计算机学院助理教授董豪。目前团队研究方向覆盖智能机器人的泛化操纵、具身导航和感知自主决策。团队持续开放联合实习生岗位,提供充足的机器人本体和计算资源。


http://www.ppmy.cn/news/1569078.html

相关文章

揭秘算法 课程导读

目录 一、老师介绍 二、课程目标 三、课程安排 一、老师介绍 学问小小谢 我是一个热爱分享知识的人,我深信知识的力量能够启迪思考,丰富生活。 欢迎每一位对知识有渴望的朋友,如果你对我的创作感兴趣,或者我们有着共同的兴趣点&…

基于OSAL的嵌入式裸机事件驱动框架——整体架构调度机制

参考B站up主【架构分析】嵌入式祼机事件驱动框架 感谢大佬分享 任务ID : TASK_XXX TASK_XXX 在系统中每个任务的ID是唯一的,范围是 0 to 0xFFFE,0xFFFF保留为SYS_TSK_INIT。 同时任务ID的大小也充当任务调度的优先级,ID越大&#…

本地缓存~

前言 Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中取而代之,基于LRU算法实现,支持多种缓存过期策略。 以下摘抄于https://github.com/ben-manes/caffeine/wiki/Benchmarks-zh-CN 基准测试通过使用Java microbenchmark ha…

2025年01月31日Github流行趋势

项目名称:Qwen2.5项目地址url:https://github.com/QwenLM/Qwen2.5项目语言:Shell历史star数:13199今日star数:459项目维护者:jklj077, JustinLin610, bug-orz, huybery, JianxinMa项目简介:Qwen…

Nginx前端后端共用一个域名如何配置

在 Nginx 中配置前端和后端共用一个域名的情况,通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置,假设: 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.com&#xff…

Mono里运行C#脚本39—mono_jit_runtime_invoke函数

当脚本MonoEmbed里的Main ()函数JIT编译完成之后,那么就需要在C代码里运行受托管的代码,即是C#的代码。要运行托管的代码,这是需要初始化一个运行环境,以便把参数从C代码传送给托管代码,又需要从托管代码返回值传送回到C代码。 在这里是通过函数mono_jit_runtime_invoke来…

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范

目录 前言 SSRF 漏洞深度剖析 Redis:强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域&#xff0…

【数据结构】(3)包装类和泛型

一、包装类 1、什么是包装类 将基础类型包装成的类就是包装类。由于基础类型不是继承 Object 类的类,所以在泛型不能直接支持基础类型,为了解决这个问题,就需要把基础类型转换为对应的包装类。 基础类型对应的包装类 基础类型包装类byteByte…