主题
视频录制功能说明
🎥 默认行为(已更新)
视频录制现在默认启用! 这样您可以直观地看到生成的轨迹质量。
默认设置
- ✅ 视频录制:默认启用
- 📹 录制间隔:默认每 5 个 episode 录一个(
--video_interval 5) - 💾 输出位置:
data/{task}/scripted/{run_id}/videos/*.mp4
为什么默认启用?
正如您所说,肉眼无法看到 HDF5 文件里的内容。视频录制可以:
- 直观检查轨迹质量
- 验证域随机化效果(物体位置变化)
- 发现潜在问题(碰撞、抖动等)
- 用于演示和汇报
性能开销
- 时间开销:~10-20%(可接受)
- 磁盘占用:每个视频约 500-800 KB
- 10 个 episode,间隔 5:约 1 MB(2 个视频)
- 100 个 episode,间隔 5:约 10 MB(20 个视频)
- 1000 个 episode,间隔 5:约 100 MB(200 个视频)
🚀 使用方法
1. 默认使用(推荐)
bash
# 使用默认设置:视频启用,每 5 个 episode 录一个
uv run sim2lerobot scripted collect \
--task lift_cube \
--num_demos 50 \
--num_envs 8 \
--enable_dr
# 结果:生成 50 条轨迹 + 约 10 个视频2. 录制所有 episode
bash
# 每个 episode 都录制视频(用于详细检查)
uv run sim2lerobot scripted collect \
--enable_dr \
--num_demos 20 \
--video_interval 1
# 结果:生成 20 条轨迹 + 20 个视频3. 禁用视频(快速生成)
bash
# 如果只关心数据量,不需要可视化检查
uv run sim2lerobot scripted collect \
--enable_dr \
--num_demos 100 \
--no_video
# 结果:生成 100 条轨迹,无视频(速度提升 10-20%)4. 调整录制间隔
bash
# 每 10 个 episode 录一个(节省磁盘空间)
uv run sim2lerobot scripted collect \
--enable_dr \
--num_demos 100 \
--video_interval 10
# 结果:生成 100 条轨迹 + 约 10 个视频📦 批量生成脚本
批量生成脚本也默认启用视频:
bash
# 使用默认设置
uv run python scripts/batch_generate_with_dr.py \
--num_batches 5 \
--demos_per_batch 100 \
--num_envs 16
# 禁用视频以加快速度
uv run python scripts/batch_generate_with_dr.py \
--num_batches 5 \
--demos_per_batch 100 \
--num_envs 16 \
--no_video
# 录制更多视频
uv run python scripts/batch_generate_with_dr.py \
--num_batches 5 \
--demos_per_batch 100 \
--num_envs 16 \
--video_interval 2📁 视频文件结构
data/lift_cube/scripted/{run_id}/
├── episodes.hdf5 # HDF5 数据文件
├── run.log # 本次运行 stdout
├── meta.json # args + 成功/失败统计等元信息
└── videos/ # 视频目录
├── episode-episode-0.mp4 # Episode 0 的视频
├── episode-episode-2.mp4 # Episode 2 的视频(interval=2)
├── episode-episode-4.mp4 # Episode 4 的视频
└── ...🎬 视频内容
视频显示:
- 机器人运动:抓取和提升动作
- 物体位置:验证域随机化效果(每个视频中物体位置不同)
- 目标可视化:目标位置标记
- 环境视角:第三人称视角,可看到完整场景
💡 推荐配置
场景 1: 快速测试(10-20 条轨迹)
bash
# 录制所有视频以仔细检查
uv run sim2lerobot scripted collect \
--enable_dr --num_demos 10 --video_interval 1场景 2: 中等规模(50-200 条轨迹)
bash
# 使用默认间隔 5(平衡质量检查和磁盘占用)
uv run sim2lerobot scripted collect \
--enable_dr --num_demos 100场景 3: 大规模生产(1000+ 条轨迹)
bash
# 方案 A:使用更大间隔节省磁盘
uv run python scripts/batch_generate_with_dr.py \
--num_batches 10 --demos_per_batch 100 \
--video_interval 10
# 方案 B:完全禁用视频以最大化速度
uv run python scripts/batch_generate_with_dr.py \
--num_batches 10 --demos_per_batch 100 \
--no_video🔍 查看视频
视频是标准 MP4 格式,可以用任何视频播放器打开:
bash
# Linux
vlc data/lift_cube/scripted/{run_id}/videos/episode-episode-0.mp4
# 或使用系统默认播放器
xdg-open data/lift_cube/scripted/{run_id}/videos/episode-episode-0.mp4
# 列出所有视频
ls -lh data/lift_cube/scripted/{run_id}/videos/*.mp4🎯 验证域随机化效果
观看多个视频可以直观看到域随机化的效果:
- 物体位置变化:每个视频中立方体的初始位置不同
- 轨迹多样性:机器人的运动轨迹略有不同(适应不同初始位置)
- 质量一致性:所有视频都应该成功完成任务
⚙️ 参数总结
| 参数 | 默认值 | 说明 |
|---|---|---|
--video | True | 启用视频录制 |
--no_video | False | 禁用视频录制 |
--video_interval | 5 | 录制间隔(每 N 个 episode) |
✅ 测试结果
刚刚完成的测试:
- ✅ 生成 10 条轨迹
- ✅ 录制 1 个视频(interval=2)
- ✅ 视频大小:638 KB
- ✅ 视频位置:
data/lift_cube/scripted/{run_id}/videos/episode-episode-0.mp4
视频录制功能正常工作! 🎥