Skip to content

真机回放与数据可视化 ​

7.1 真机回放 ​

把录下来的 action 序列重新发给从臂执行,用来验证数据本身是否可用。不涉及主臂,也不需要相机。

bash
lerobot-replay \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem5B8E1136841 \
  --robot.id=my_awesome_follower_arm \
  --dataset.repo_id=local/so101_demo \
  --dataset.root=/Users/xxx/project/lerebot/datasets/so101_demo \
  --dataset.episode=0

危险:回放会真的驱动机械臂。跑之前:清空工作区、把从臂摆到接近录制起点时的姿态(否则开头会大幅跳变)、手放在电源旁随时准备断电。参数只有 robot + dataset(--dataset.episode 指定第几条),不需要 --teleop.*。

7.2 数据可视化 ​

不驱动真机,只在屏幕上回看两路画面与关节曲线:

bash
lerobot-dataset-viz \
  --repo-id local/so101_demo \
  --root /Users/xxx/project/lerebot/datasets/so101_demo \
  --episode-index 0
  • 参数名用连字符(--repo-id / --episode-index),和 record 的 --dataset.repo_id 写法不同,别混。
  • 它是本地读取(--root 直接指向数据集目录,与 record 的 --dataset.root 语义一致),不联网、不去 Hub 下载。
  • --episode-index 从 0 开始。窗口没弹出来时,加 --save 1 --output-dir /tmp 存成 .rrd,再 rerun /tmp/local_so101_demo_episode_0.rrd。
  • Mac 上若多进程加载卡住,加 --num-workers 0。
  • 数据在云端(比如训练机上)时,加 --mode distant --web-port 9090:它在远端起一个 Rerun Web 服务,用浏览器看,不用装本地查看器。

遥操作和录制里的 --display_data=true 弹的是本地窗口(源码是 rr.spawn()),没有对应的 Web 开关;想把这两者也放进浏览器,得改源码里 init_rerun() 的启动方式,属于社区做法,不是官方选项。日常排查用本地窗口就够。

直接看 mp4 ​

不想启 Rerun,也可以直接看录制时已编码好的 mp4:

bash
D=/Users/xxx/project/lerebot/datasets/so101_demo

# 手部画面(末端相机)
open $D/videos/observation.images.wrist/chunk-000/file-000.mp4

# 环境画面(外置相机)
open $D/videos/observation.images.environment/chunk-000/file-000.mp4

顺便核对条数:datasets/so101_demo/meta/info.json 里的 total_episodes 与 total_frames。

别被文件数骗了:LeRobot v3 是打包存储:多条 episode 会合并进同一个 .parquet / .mp4。所以 data/chunk-000/ 或 videos/…/chunk-000/ 下有几个文件,不等于有几条 episode(例如 31 条只落成 3 个文件:file-000 装 1 条、file-001 装 2 条、file-002 装 28 条)。

真实条数看 meta/info.json 的 total_episodes;每条 episode 的帧数与所在文件,读 meta/episodes/ 下的 parquet(字段 episode_index / length / data/file_index / videos.<key>/file_index)。文件切分阈值由 info.json 的 data_files_size_in_mb(默认 100)与 video_files_size_in_mb(默认 200)决定。