1. 仿真数据生成
CoppeliaSim + PyRep + RLBench
- CoppeliaSim:提供仿真环境和物理引擎,负责环境与机器人建模,处理物理交互和场景渲染。
- PyRep:作为 Python 接口,负责控制 CoppeliaSim 中的机器人,获取传感器数据,并将仿真与训练系统(如强化学习)对接
- RLBench:提供现成的79种任务定义、数据采集工具和任务变种生成,支持强化学习和模仿学习
- 定位:通用机器人操作任务仿真与数据采集工具链
- 场景设计:通过 CoppeliaSim GUI 拖拽建模,PyRep 控制对象,RLBench 封装任务逻辑,上手快、现成任务多,适合研究型项目、机器人模仿学习数据生成
Isaac + MuJoCo
- 定位:高性能物理仿真和深度强化学习训练平台
- Isaac Sim:提供高质量的仿真环境、机器人仿真和传感器支持,适合大规模并行仿真、高保真渲染、和 ROS 集成
- MuJoCo:轻量级、高精度物理引擎(传统上做连续控制/强化学习任务,如机器人手臂、腿足)
- 场景设计:Isaac + MuJoCo 的集成适用于需要高效、多任务仿真和大规模训练
2. AHA论文解读
论文:AHA: A Vision-Language-Model for Detecting and Reasoning over Failures in Robotic Manipulation
网址:https://aha-vlm.github.io/
2.1 介绍
摘要:开放世界环境中的机器人操作不仅需要执行任务,还需要在执行过程中检测故障并从中学习的能力。虽然视觉语言模型(VLMs)和大型语言模型(LLMs)的最新进展增强了机器人的空间推理和解决问题的能力,但这些模型往往难以识别和推理故障,限制了它们在现实世界应用中的有效性。通过将故障检测视为自由形式的推理任务,AHA识别故障并生成详细的解释,这些解释适用于模拟和现实场景中的各种机器人、任务和环境。
为了微调AHA,我们开发了FailGen,这是一个可扩展的仿真框架,通过干扰RLBench模拟器的成功演示,按程序生成AHA数据集,这是机器人故障轨迹的第一个大规模数据集。
尽管仅在AHA数据集上进行了训练,但AHA可以有效地推广到现实世界的故障数据集、不同的机器人系统和看不见的任务。它在多个指标和数据集上超过了第二好的模型10.3%,超过了所有六个比较模型的平均性能35.3%,其中包括五个最先进的VLM和一个采用上下文学习的模型
论文的贡献:
- 开发了FailGen,是一个大规模机器人操作失败数据集生成管道,基于此生成AHA数据集,该数据集包含79个多样化模拟任务中超过4.9万对图像-查询对,用来对VLM进行微调
- 提出一种新的开源VLM:AHA,用于推理操作任务中的失败,其性能优于六种专有和开源模型;
- 将AHA集成到三个VLM/LLM辅助操纵框架中,证明其自然语言失败反馈提高了下游任务中的错误恢复和策略性能。
2.2 方法
2.2.1 故障模式
利用FailGen从RLBench任务中按程序生成AHA数据集,并将其用于AHA的指令调优。首先对机器人操作中的常见故障模式进行分类,
基于先前的工作,制定了一个分类法,包括机器人操作中常见的七种不同的故障模式:未完成抓取、不足的握持保持、关键帧错位、错误的旋转、缺少旋转、错误的动作顺序以及错误的目标物体
- 未完成抓取 (No_Grasp) :发生在夹爪到达目标抓取位置,但在进入下一个关键帧之前未能闭合。
- 滑落 (Slip) :发生在物体被成功抓取后,由于夹持松动,导致物体从夹爪中滑落。
- 平移 (Translation) :发生在夹爪移动时,但由于沿 X、Y 或 Z 轴的平移导致任务失败。
- 旋转 (Rotation) :发生在夹爪到达目标平移位置时,但存在滚转、偏航或俯仰的偏移,导致任务失败。
- 缺少旋转 (No_Rotation) :发生在夹爪到达目标平移位置时,但未能完成子任务所需的旋转(滚转、偏航或俯仰),导致任务失败。
- 错误的动作顺序 (Wrong_action) :发生在机器人以错误的顺序执行动作时。例如,在任务“将立方体放入抽屉”中,机器人在打开抽屉之前先将立方体移动到抽屉前,导致任务失败。
- 错误的目标物体 (Wrong_object) :发生在机器人作用于错误的目标物体上,与语言指令不匹配。例如,在任务“拿起红色杯子”中,夹爪抓取了绿色杯子,导致任务失败。
2.2.2 FailGen框架
FailGen:一个生成失败数据的框架,基于Coppeliasim+PyRep+RLBenchAHA
Pipeline概述:在仿真中获取正常任务轨迹,FailGen基于yaml配置文件,系统性地扰动成功的机器人轨迹,将其转变为具有各种失败模式的失败轨迹。同时,我们为每个任务和失败模式生成相应的query和answer prompt
我们通过首先基于语言规范和输入图像提示预测给定子任务的二元成功条件(“是”或“否”)来进行失败推理。如果答案是“否”,VLM将生成一个简洁、自由的自然语言解释,详细说明为什么任务被视为失败。
为了制定失败推理,我们将操纵任务轨迹定义为一系列子任务{S0,S1,S2,…,St},其中每个子任务由两个连续的关键帧表示。例如,在“堆叠立方体”这样的任务中,子任务可以表示一个基本动作,例如“拾取立方体”。用子任务描述Question和关键帧轨迹图像提示VLM,以预测每个子任务的成功条件和失败原因的语言描述
2.2.3 数据集
使用FailGen,我们通过在RLBench模拟器中的79个不同任务之间交替来管理AHA数据集(训练)数据集,得到49k个故障图像文本对。因此,除了AHA数据集外,我们还将AHA与来自互联网数据的通用视觉问答(VQA)数据集进行了联合微调,这有助于模型保留预先训练的知识。具体来说,我们包括了包含665k个对话对的VQA数据集和LVIS数据集,后者包含10万个具有预测边界框中心和维度的实例,如表所示
2.2.4 AHA 微调
模型架构包括一个图像编码器(image encoder)、一个线性投影器(linear projector)、一个语言分词器(language tokenizer)和一个基于transformer的语言模型(transformerbased language model)。所有组件均使用预训练权重进行初始化。在微调过程中,仅更新projector和transformer的权重,而视觉编码器和分词器保持不变。