3. 数据采集环境搭建

数据采集是 LeRobot 工作流的起点,而环境搭建决定了后续采集能否稳定、可复现地运行。本节围绕一条主线展开:先准备隔离的 Python 环境,再安装 LeRobot 及其依赖,最后完成硬件连接与驱动检查。整个过程的核心原则是版本可控、依赖隔离、链路可验证。只要这三步做到位,后续的遥操作采集、相机录制与数据集写入就会顺畅很多。

本节目标:搭建一个可复现的 LeRobot 采集环境,使机械臂、相机、遥操作设备能够被系统正确识别,并能通过 LeRobot 命令完成一次最小化的连通性验证。

一、核心原理:为什么环境搭建要分三层

LeRobot 采集环境可以理解为三层结构:运行时层(Python 解释器与虚拟环境)、软件层(LeRobot 包及其依赖,如 PyTorch、NumPy、OpenCV、串口库等)、硬件层(机械臂、相机、遥操作主臂、USB/串口连接与驱动)。三层之间是逐层依赖的关系:运行时层决定软件层能否安装成功,软件层决定硬件层能否被正确调用。任何一层出问题,都会表现为“采集脚本报错”或“设备无响应”。

因此,推荐使用 conda 或 venv 创建独立环境,避免与系统 Python 或其他项目冲突。Python 版本建议选择 3.10 或 3.11,这两个版本对 PyTorch 与 LeRobot 的兼容性较好。安装 LeRobot 时优先从源码安装,便于后续切换到特定分支或提交版本,保证采集行为可复现。

LeRobot 采集环境:三层结构与硬件链路 ① 运行时层 · Python 环境 conda create -n lerobot Python 3.10 / 3.11 pip / setuptools 升级 环境隔离,避免冲突 ② 软件层 · LeRobot 与依赖 git clone lerobot pip install -e . PyTorch / torchvision 按 CUDA 版本选择 OpenCV / NumPy 图像与数值处理 pyserial / feetech 串口通信 ③ 硬件层 · 设备连接与驱动检查 从动机械臂 /dev/ttyUSB0 波特率 1000000 遥操作主臂 /dev/ttyUSB1 与从臂同协议 相机 USB /dev/video0 OpenCV 读取帧 权限与驱动 dialout 用户组 udev 规则 / udevadm 验证:lerobot 命令可运行 → 设备可枚举 → 相机可读帧 → 遥操作可回传

二、方法流程:从零到可采集

  1. 创建并激活虚拟环境:使用 conda 创建独立环境,指定 Python 3.10。
  2. 安装 LeRobot:克隆源码仓库,进入目录后以可编辑模式安装。
  3. 安装依赖:根据是否有 NVIDIA GPU 选择 PyTorch 安装命令,再补齐 OpenCV、pyserial 等采集必需库。
  4. 连接硬件:接入从动臂、主臂与相机,确认串口与视频设备节点。
  5. 驱动与权限检查:将当前用户加入 dialout 组,检查设备权限与串口通信。
  6. 最小验证:运行 LeRobot 命令,确认环境与设备均可用。
# 1. 创建并激活环境
conda create -n lerobot python=3.10 -y
conda activate lerobot

# 2. 获取并安装 LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e .

# 3. 安装 PyTorch(示例:CUDA 12.1)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

# 4. 采集常用依赖
pip install opencv-python pyserial numpy

# 5. 硬件与权限检查
ls /dev/ttyUSB* /dev/video*
sudo usermod -aG dialout $USER
sudo udevadm control --reload-rules && sudo udevadm trigger

# 6. 最小验证
python -c "import lerobot, torch, cv2; print('env ok')"

三、案例场景:一台 SO-100 采集站的搭建

假设我们使用一台 Ubuntu 22.04 主机,连接 SO-100 从动臂、SO-100 主臂和一台 USB 相机。按上述流程操作后,ls /dev/ttyUSB* 应看到两个串口设备,ls /dev/video* 应看到相机节点。若串口只出现一个,通常是 USB 转串口线未插紧或供电不足;若相机节点缺失,可尝试更换 USB 口或检查 v4l2-ctl --list-devices 输出。

随后运行 LeRobot 的设备枚举或遥操作测试命令,观察主臂动作是否能映射到从臂。若主臂无响应,优先检查串口号是否写错、波特率是否匹配、用户是否在 dialout 组中。完成这一步后,即可进入正式的数据采集环节。

四、常见误区与复盘清单

误区 典型表现 排查与修正
直接使用系统 Python 依赖冲突,安装报错 改用 conda/venv 隔离环境
PyTorch 与 CUDA 版本不匹配 torch.cuda.is_available() 为 False 按官方索引重新安装对应版本
串口号写错或权限不足 Permission denied / 设备无响应 确认 /dev/ttyUSB* 并加入 dialout 组
相机被其他程序占用 OpenCV 无法读取帧 关闭占用进程,重新插拔相机
未做最小验证就正式采集 采集中途报错,数据不完整 先跑通枚举与遥操作测试
建议把环境搭建过程记录成一份可复用的清单:Python 版本、LeRobot 提交号、PyTorch 版本、串口号、相机节点、用户组配置。这样在换机或重装时,可以快速复现同一套采集环境。
不要跳过驱动与权限检查。很多“采集脚本报错”并非代码问题,而是设备节点不存在、权限不足或波特率不匹配。先确认硬件链路,再排查软件逻辑,能显著减少无效调试时间。

完成本节的环境搭建后,你已经具备了一个可运行、可验证的 LeRobot 采集基础。接下来只需在此基础上接入具体的采集流程,即可开始录制第一条机器人数据。