9. lerobot play数据采集#
9.1 环境配置#
环境要求概览
-
操作系统要求
- 平台架构:目前支持 x86_64 (AMD64) 系统
- Ubuntu版本:仅支持 24.04 LTS 或 22.04 LTS
-
硬件最低要求
- CPU:Intel i5 或同等性能以上处理器
- 内存:8 GB RAM
9.1.1 软件安装#
根据您的系统配置,选择对应的安装命令:
9.1.1.1 配置一:x86_64 + Ubuntu 24.04#
9.1.1.2 配置二:x86_64 + Ubuntu 22.04#
常见问题快速解决
问题一: wheel包平台不支持
错误: ERROR: airbot_hardware_py-<*>.whl is not supported
原因: Python 版本与系统不匹配
解决: 重建对应 Python 版本的环境
# Ubuntu 24.04 → Python 3.12
conda create -y -n lerobot python=3.12
# Ubuntu 22.04 → Python 3.10
conda create -y -n lerobot python=3.10
问题二: evdev包安装失败
错误: 安装 lerobot_play-<*>.whl 时 evdev 编译失败
原因: 缺少 GCC 编译工具
解决:
9.1.2 硬件配置#
9.1.2.1 硬件清单#
| 方案名称 | 机械臂配置 |
|---|---|
| Play 单臂 | 1×AIRBOT Play + 1×AIRBOT Replay 或 1×AIRBOT Play + 1×AIRBOT Play with E2 |
| PTK | 2×AIRBOT Play + 2×AIRBOT Replay |
| TOK2 | 2×AIRBOT Play + 2×AIRBOT Replay |
| TOK4 | 2×AIRBOT Play + 2×AIRBOT Play with E2 |
| 备注 | 所有方案均可自由搭配 USB 相机或 RealSense 相机,推荐使用 Intel RealSense D435i |
9.1.2.2 机械臂绑定#
9.1.2.2.1 检查设备识别#
请确保系统能够识别到机械臂,运行以下命令检查 CAN 接口:
信息提示
-
正常识别:若命令输出显示 CAN 接口信息(如
can0、can1等),说明系统已正确识别机械臂设备。此时可继续进行后续的绑定操作。
-
未识别到设备:如果命令执行后没有输出任何 CAN 接口信息,说明系统未检测到机械臂设备,需要安装驱动。
安装完成之后拔插数据线,再次执行ip link | grep can查看 CAN。
9.1.2.2.2 绑定指令#
执行以下命令进行机械臂绑定:
绑定完成之后拔插数据线,再次执行ip link | grep can 查看 CAN。
9.1.2.3 相机设备查询#
使用以下命令分别查询 USB 摄像头和 RealSense 深度相机的设备信息:
如果执行上述
RealSense查询时出现错误:请运行以下命令配置
配置完成后,请重新插拔 RealSense 相机或重启系统以使规则生效。udev权限:
9.2 修改配置文件#
在开始采集数据前,需对硬件设备与数据集参数进行配置。配置文件分为四部分:从臂设置(robot)、主臂设置(teleop)、采集设置(run) 和 数据集设置(dataset)。
快速开始
根据您的硬件组合,可直接下载对应的配置文件模板:
硬件配置 下载链接 Play单臂 config_Play.yaml PTK config_PTK.yaml TOK2 config_TOK2.yaml TOK4 config_TOK4.yaml
9.2.1 从臂设置(robot)#
从臂配置包含 设备参数 和 相机参数 两部分:
9.2.1.1 设备参数配置#
| 参数 | 说明 | 可选值 | 示例 |
|---|---|---|---|
robot.type |
从臂类型 | airbot_play_followerairbot_PTK_followerairbot_TOK2_followerairbot_TOK4_follower |
airbot_play_follower |
robot.port |
CAN 接口 | can0、can1 等(若绑定,需和绑定名称一致) |
can0 |
robot.id |
识别 ID | 建议与 type 保持一致 |
airbot_play_follower |
从臂类型对应说明:
• airbot_play_follower:AIRBOT Play 机械臂 + G2 夹爪
• airbot_PTK_follower:PTK 系列
• airbot_TOK2_follower:TOK2 系列
• airbot_TOK4_follower:TOK4 系列
9.2.1.2 相机参数配置#
支持多相机配置,包括两种类型:
| 相机类型 | 配置值 | 特点 |
|---|---|---|
| USB 相机 | type: opencv |
通用 USB 接口,仅采集 RGB 图像 |
| RealSense 深度相机 | type: realsense |
Intel 深度相机,支持 RGB + 深度图像 |
完整的从臂配置设置如下:
robot:
type: airbot_play_follower
port: can0
id: airbot_play_follower
cameras:
# RealSense相机配置示例
right_hand_camera: # 相机名称,可自由设置
type: realsense # 相机类别
serial_number_or_name: "243322072684" # 相机SN码
width: 640
height: 480
fps: 30
color_mode: RGB # 颜色模式
use_depth: false # 是否启用深度图像,默认关闭
rotation: NO_ROTATION # 是否需要旋转
# USB相机配置示例
env_cam_A: # 相机名称,可自由设置
type: opencv # 相机类别
index_or_path: "/dev/video2" # 相机端口号
width: 640
height: 480
fps: 25
rotation: NO_ROTATION # 是否需要旋转
9.2.2 主臂设置(teleop)#
| 参数 | 说明 | 可选值 | 示例 |
|---|---|---|---|
teleop.type |
主臂类型 | airbot_replayairbot_play_with_E2_leaderairbot_PTK_leaderairbot_TOK2_leaderairbot_TOK4_leader |
airbot_play_with_E2_leader |
teleop.port |
CAN 接口 | can0、can1 等(若绑定,需和绑定名称一致) |
can0 |
teleop.id |
识别 ID | 建议与 type 保持一致 |
airbot_play_with_E2_leader |
主臂类型对应说明:
• airbot_replay:AIRBOT replay示教臂
• airbot_play_with_E2_leader:AIRBOT Play机械臂 + E2示教器
• airbot_PTK_leader:PTK 系列
• airbot_TOK2_leader:TOK2 系列
• airbot_TOK4_leader:TOK4 系列
9.2.3 采集设置(run)#
run:
fps: 30
display_data: false
num_episodes: 25
episode_time_sec: 60
reset_time_sec: 60
single_task: "Grab the black cube"
| 参数 | 说明 | 默认值 |
|---|---|---|
run.fps |
数据采集帧率(Hz),控制主循环频率 | 30 |
run.display_data |
是否实时显示相机画面与关节状态 | false |
run.num_episodes |
最大采集轮数,达到后程序自动停止并保存数据集 | 25 |
run.episode_time_sec |
单轮最大持续时间(秒),超时后自动保存并进入下一轮 | 60 |
run.reset_time_sec |
重置后最大采集时间(秒),与 episode_time_sec 相同 |
60 |
run.single_task |
任务描述文本,作为元数据写入数据集 | "" |
9.2.4 数据集设置(dataset)#
dataset:
repo_id: test_playe2
video: true
num_image_writer_processes: 0
num_image_writer_threads_per_camera: 4
video_encoding_batch_size: 1
push_to_hub: false
| 参数 | 说明 | 默认值 |
|---|---|---|
dataset.repo_id |
本地数据集保存目录名 | |
dataset.video |
是否将图像保存为视频 | true |
dataset.num_image_writer_processes |
图像写入进程数,不推荐修改 | 0 |
dataset.num_image_writer_threads_per_camera |
每个相机使用的写入线程数,不推荐修改 | 4 |
dataset.video_encoding_batch_size |
视频编码时的批处理大小,不推荐修改 | 1 |
dataset.push_to_hub |
是否将采集完成的数据集推送到 LeRobot 官网 | false |
9.3 数据采集流程#
9.3.1 采集步骤#
9.3.1.1 启动采集程序#
9.3.1.2 执行任务#
- 手动操作主臂:使用主臂(
teleop)控制从臂完成指定任务 - 开始采集:按下空格键开始数据采集
- 保存单轮数据:每轮任务完成后,按一下 →(右箭头键)保存当前数据
⚠️ 注意:按下后需等待 一段时间 进行数据落盘。期间机械臂处于非受控状态,切勿放下主臂airbot replay!落盘完成后,可继续采集。
- 重置当前轮次:若演示过程中出现失误,按一下 ←(左箭头键)丢弃本轮数据,并重新开始当前轮次(轮次编号不变)
-
提前退出 :若已完成所需轮次或需中断采集,按下 Esc 键立即退出。系统会保存所有已成功完成的轮次。
💡 快捷键速查
按键 功能 空格 开始当前轮次的数据采集 → 保存当前轮次,进入下一轮准备 ← 丢弃当前轮次,重新开始本轮 Esc 提前终止整个采集任务
9.3.1.3 重置环境#
- 环境复位:每轮开始前,需手动将实验环境恢复至初始状态,包括:
- 物体放回起始位置
- 夹爪复位到初始状态
- 相机视野内物品摆放整齐
- 等待时间:系统会根据配置文件中的
reset_time_sec参数等待环境重置,在此期间可完成准备工作
9.3.1.4 数据保存位置#
其中<repo_id> 由配置文件中的 dataset.repo_id 字段决定。
⚠️ 重要:每次新采集必须修改
dataset.repo_id,否则同名数据集会被覆盖,导致历史数据丢失。
9.3.2 数据集后处理#
采集完成后,可使用 LeRobot 工具对数据集进行修改和处理。
9.3.2.1 支持的操作#
- 删除指定轮次:移除质量较差的演示数据
- 数据集分割:按比例划分训练/验证/测试集
- 数据集合并:整合多个相关数据集
- 特征管理:增加或删除数据字段
9.3.2.2 使用方法#
具体操作方法和 API 文档请参考 LeRobot 官方文档。
提示:建议在修改前备份原始数据集。
9.3.3 数据可视化#
数据采集完成后,可使用 rerun 工具对数据集进行可视化验证,检查采集质量、任务执行情况以及数据完整性。
9.3.3.1 可视化命令示例#
python3 -m lerobot_play.utils.rerun_vis \
--repo-id test_playe2 \
--root /home/discover/.cache/huggingface/lerobot/test_playe2 \
--robot-type airbot_play_follower \
--episode-index 0 \
--max-episodes 1 \
--batch-size 32 \
--num-workers 0
9.3.3.2 参数说明#
| 参数 | 说明 | 默认值 |
|---|---|---|
--repo-id |
数据集名称(与采集配置中的 repo_id 一致) |
- |
--root |
数据集存储路径 | /home/discover/.cache/huggingface/lerobot/` |
--robot-type |
从臂类型(必须与采集时 robot.type 一致) |
- |
--episode-index |
需要可视化的轮次索引(从 0 开始) | 0 |
--max-episodes |
最大加载轮次数 | 1 |
--batch-size |
数据加载批大小 | 32 |
--num-workers |
数据加载子进程数 | 0 |
💡 使用提示
首次加载数据集时可能有短暂卡顿,属于正常现象(需解码视频或读取 HDF5 文件);
加载完成后即可流畅播放、拖动时间轴、查看多相机视角与关节轨迹。
9.3.4 数据回放#
在完成数据采集后,可将某一轮 episode 在真实机器人上进行动作回放,用于验证数据质量或演示任务。
9.3.4.1 单臂设备Play回放命令#
python3 -m lerobot_play.replay \
--dataset.repo_id test_playe2 \
--dataset.root /home/discover/.cache/huggingface/lerobot/test_playe2 \
--robot.type=airbot_play_follower \
--robot.port=can0 \
--robot.id=airbot_play \
--episode_index=0 \
--fps=30
9.3.4.2 双臂设备(如PTK)回放命令#
python -m lerobot_play.replay \
--dataset.repo_id test_03 \
--dataset.root /home/air/.cache/huggingface/lerobot/test_03 \
--robot.type=airbot_PTK_follower \
--robot.left_arm_port=can0 \
--robot.right_arm_port=can1 \
--robot.id=PTK_follower \
--episode_index=0 \
--fps=30
注意
单臂设备使用 --robot.port;
双臂设备(如 PTK)需分别指定 --robot.left_arm_port 和 --robot.right_arm_port;
所有机器人相关参数(type、id、port)必须与采集时的配置完全一致,否则可能导致数据解析失败或控制异常。
| 参数 | 说明 |
|---|---|
--dataset.repo_id |
数据集名称,需与采集配置中的 dataset.repo_id 一致 |
--dataset.root |
数据集完整路径(通常为 /home/discover/.cache/huggingface/lerobot/<repo_id>) |
--robot.type |
从臂类型,例如 airbot_play_follower、airbot_PTK_follower |
--robot.port |
(单臂)CAN 接口名称,如 can0 |
--robot.left_arm_port / --robot.right_arm_port |
(双臂)左右机械臂对应的 CAN 接口 |
--robot.id |
机器人识别 ID,建议与采集时保持一致 |
--episode_index |
要回放的轮次索引(从 0 开始) |
--fps |
回放帧率(Hz),建议与采集时的 run.fps 一致,以保证动作时序准确 |