Skip to content

视频录制功能说明

🎥 默认行为(已更新)

视频录制现在默认启用! 这样您可以直观地看到生成的轨迹质量。

默认设置

  • 视频录制:默认启用
  • 📹 录制间隔:默认每 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

🎯 验证域随机化效果

观看多个视频可以直观看到域随机化的效果:

  • 物体位置变化:每个视频中立方体的初始位置不同
  • 轨迹多样性:机器人的运动轨迹略有不同(适应不同初始位置)
  • 质量一致性:所有视频都应该成功完成任务

⚙️ 参数总结

参数默认值说明
--videoTrue启用视频录制
--no_videoFalse禁用视频录制
--video_interval5录制间隔(每 N 个 episode)

✅ 测试结果

刚刚完成的测试:

  • ✅ 生成 10 条轨迹
  • ✅ 录制 1 个视频(interval=2)
  • ✅ 视频大小:638 KB
  • ✅ 视频位置:data/lift_cube/scripted/{run_id}/videos/episode-episode-0.mp4

视频录制功能正常工作! 🎥


📚 相关文档