真机回放与数据可视化
7.1 真机回放
把录下来的 action 序列重新发给从臂执行,用来验证数据本身是否可用。不涉及主臂,也不需要相机。
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 数据可视化
不驱动真机,只在屏幕上回看两路画面与关节曲线:
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:
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)决定。