LeIsaac × Cosmos video2action 数据管线:如何用 1 条演示扩出大规模合成机器人视频动作
【免费下载链接】leisaac
LeIsaac provides teleoperation functionality in IsaacLab using the SO101Leader (LeRobot), including data collection, data conversion, and subsequent policy training.
LeIsaac是基于 IsaacLab 的机器人遥操作与数据采集框架,搭配 SO101 机械臂(LeRobot)完成演示录制、HDF5/LeRobot 数据转换与策略训练。本文介绍它的 video2action 合成数据管线:借助Cosmos-Predict2.5把少量真实演示"扩散"成大规模合成视频,再用 IDM 逆动力学模型把视频转回可执行的机器人动作,最终回到 LeIsaac 仿真中回放验证——一条从"单条演示"到"大规模合成动作"的完整数据管线。
管线总览:4 步把 1 条演示变成 N 条合成轨迹
| 步骤 | 做什么 | 产出 |
|---|---|---|
| 1️⃣ 数据采集 | 用 LeIsaac 遥操作录制演示,并转换为 LeRobot 数据集 | HDF5 数据集 + LeRobot 数据集 |
| 2️⃣ 视频生成 | Cosmos-Predict2.5 后训练 + 批量推理 | 大规模合成 rollout 视频 |
| 3️⃣ 动作推断 | GR00T-Dreams 的 IDM 微调后,从视频中推断动作 | LeRobot 格式动作轨迹(parquet) |
| 4️⃣ 回放验证 | 合并为可回放 HDF5,在 Isaac Sim 中回放 | 物理合理性验证 |
核心思路:Cosmos 只当"视频生成器"——它从你的 LeRobot 视频中学会该任务的视觉 rollout 分布,以文本提示词 + 视频前几帧为条件生成新视频;IDM 则负责把"看起来对"的视频翻译成"真的可执行"的关节动作。
第一步:LeIsaac 遥操作采集 + 转换 LeRobot 数据集
先用 SO101 Leader 臂在 Isaac Sim 中遥操作录制演示(如"把红方块举起来"),得到 HDF5 文件(如dataset.hdf5)。这份 HDF5 是整个管线的source of truth:既用于最终回放评测,也是构建 LeRobot 数据集的源头。
然后运行转换脚本把 HDF5 转成 LeRobot 格式(videos + meta + parquet):
python scripts/convert/isaaclab2lerobot.py --task_name <任务名> --hdf5_root ./datasets⚠️关键避坑点:输出的视频编码必须是H.264,避免使用 AV1,否则 Cosmos 和 IDM 在解码时可能直接失败。转换时可将视频编码参数由
av1改为h264(见 isaaclab2lerobot.py)。
📁 相关文件:isaaclab2lerobot.py
第二步:Cosmos-Predict2.5 后训练 + 批量生成视频
- 准备训练数据:按 Cosmos 约定组织目录——
videos/下放重命名为1.mp4、2.mp4…的演示视频,metas/下放与之一一对应的 prompt 文本(从meta/tasks.jsonl中提取,如Lift_the_red_cube_up)。 - 后训练:在你的机器人本体 + 任务分布上后训练 Cosmos-Predict2.5,得到一个"懂你这条臂、这个任务"的 checkpoint。
- 批量推理:生成 JSONL 批处理配置(每条包含输入视频路径、任务 prompt、分辨率
480,640、输出帧数等),一次批量生成大量合成 rollout 视频。
这一步的规模几乎只受 GPU 预算限制:prompt 可以按 episode 区分任务,视频以首帧 + 文本为条件自回归生成,16 秒级别的 rollout 一次即可产出。
第三步:IDM 逆动力学模型,把视频"翻译"成动作
视频本身不能驱动机器人,需要IDM(Inverse Dynamics Model,GR00T-Dreams)把 Cosmos 生成的视频映射为关节动作序列:
- 配置模态:为 SO101 编写
modality.json(6 自由度:shoulder_pan / shoulder_lift / elbow_flex / wrist_flex / wrist_roll / gripper)并注册对应的 DataConfig; - 微调 IDM:直接在第一步的 LeRobot 数据集上微调(
torchrun scripts/idm_training.py --dataset-path … --data-config so101); - 批量推断:将 Cosmos 输出(mp4 + json)转换为 IDM 可处理的任务目录结构,跑预处理 + 动作导出,产出全新的、与原始格式完全兼容的LeRobot 动作数据集(parquet)。
💡 注意:IDM 需要的是 Cosmos-Predict2环境(不是 2.5),依赖安装时
pytorch3d要用--no-build-isolation,APEX 可直接移除。
第四步:合并 + 在 LeIsaac 中回放评测
IDM 产出的只是动作轨迹,回放还需要初始状态等环境信息,所以要把它"填回"原始 HDF5 模板:
# 1. LeRobot parquet → LeIsaac HDF5(自动做反归一化与关节限位换算) python scripts/convert/lerobot2isaaclab.py \ --lerobot_dir <idm输出目录> --output_hdf5 <输出.hdf5> \ --column_keys action observation.state # 2. 将合成动作合并进源 HDF5 模板 python scripts/tutorials/cosmos_merge.py \ --lerobot_hdf5 <合成动作.hdf5> \ --source_hdf5 <遥操作录制的源.hdf5> \ --output_hdf5 <最终可回放.hdf5>合并时 cosmos_merge.py 会保留源数据集的结构、属性(如 env_args)和初始状态,仅覆写actions / processed_actions / obs.actions并更新帧数元数据。最后用 LeIsaac 的 action replay 模式在 Isaac Sim 中回放,直观验证合成动作的物理合理性:
python scripts/environments/teleoperation/replay.py \ --task <任务名> --replay_mode=action --dataset_file ./datasets/dataset.hdf5📁 相关文件:lerobot2isaaclab.py、replay.py
新手常踩的 3 个坑
- 视频编码:AV1 编码的视频会让 Cosmos/IDM 解码失败,务必用 H.264;
- prompt 与视频一一对应:
metas/下每个*.txt对应一个视频,prompt 内容来自tasks.jsonl,写错任务描述会生成"跑偏"的视频; - DCP checkpoint 格式:Cosmos 后训练产出的是分布式 checkpoint,推理前必须先转成 consolidated PyTorch 格式。
总结
这条 LeIsaac × Cosmos 的 video2action 管线,用"遥操作采集 → 世界模型扩视频 → 逆动力学还原动作 → 仿真回放验证"四步,把昂贵的单条人工演示放大成可规模化、可评测的合成动作数据集,非常适合模仿学习数据增强的新手入门实践。完整步骤与全部脚本细节可参考官方教程文档 cosmos_tutorial.md。
【免费下载链接】leisaac
LeIsaac provides teleoperation functionality in IsaacLab using the SO101Leader (LeRobot), including data collection, data conversion, and subsequent policy training.
相关推荐
用 LeIsaac 集成 MimicGen 增强数据:从少量演示自动生成大规模训练集
用 LeIsaac 集成 MimicGen 增强数据:从少量演示自动生成大规模训练集 LeIsaac 是一个基于 IsaacLab 的机器人遥操作与数据采集工具
Cosmos-H-Dreams 训练数据全解析:Open-H-Embodiment 2.6 万条手术演示如何炼成 490 万帧动作视频数据
Cosmos H Dreams 训练数据全解析:Open H Embodiment 2.6 万条手术演示如何炼成 490 万帧动作视频数据 Cosmos H D
人工智能媒体生成计算机视觉医疗健康具身智能基础模型LeIsaac 状态机数据生成:不靠人工遥操作,自动批量采集模仿学习演示数据
LeIsaac 状态机数据生成:不靠人工遥操作,自动批量采集模仿学习演示数据 LeIsaac 的 状态机数据生成 (State Machine Data Gen
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考