3. 开发环境搭建

LeRobot 的实机部署对运行环境非常敏感:同一份源码,在 Python 版本、PyTorch 与 CUDA 版本、驱动版本不匹配时,往往会在导入阶段或首次连接机械臂时直接失败。因此,环境搭建不是“装几个包”的机械操作,而是把驱动层、CUDA 运行时、PyTorch 计算后端、LeRobot 源码与硬件 SDK 五层对齐的过程。本节按“先隔离、再对齐、后验证”的顺序,给出可复现的搭建路径。

一、核心原理:五层依赖必须版本对齐

LeRobot 运行在 Python 之上,但真正决定能否跑通实机的是底层链路。可以把它理解为一条自下而上的依赖链:GPU 驱动决定可支持的最高 CUDA 版本;CUDA 运行时决定 PyTorch 能编译出哪个 cu 版本;PyTorch 版本又决定 LeRobot 与部分策略库(如 diffusers、transformers)的兼容范围;最后,硬件 SDK(如 Feetech/Dynamixel 串口驱动、相机 SDK)决定实机通信是否可用。任何一层“越级”都会在运行时报错。

关键结论:不要先装 LeRobot 再补 CUDA。正确顺序是先确定 GPU 驱动 → 选定 CUDA → 安装匹配的 PyTorch → 再安装 LeRobot 及其依赖。
LeRobot 环境依赖链与验证路径 ① GPU 驱动层 nvidia-smi → 查看 Driver / CUDA Version ② CUDA 运行时 nvcc -V → 与驱动兼容的 Toolkit ③ PyTorch 计算后端 torch.cuda.is_available() → True ④ LeRobot 源码与依赖 pip install -e . → 可 import lerobot ⑤ 硬件 SDK 与串口权限 ls /dev/ttyACM* → 可读写 验证顺序:nvidia-smi → nvcc -V → python -c "import torch;print(torch.cuda.is_available())" → python -c "import lerobot" → 串口回环测试 任一层失败,先修复该层,不要跳到下一层,否则错误会被掩盖。

二、方法流程:从零到可运行的四步

  1. 创建隔离环境。推荐 Python 3.10(LeRobot 对 3.10/3.11 支持最稳),使用 conda 或 venv 隔离,避免污染系统 Python。
  2. 安装匹配的 PyTorch。先查驱动支持的 CUDA 上限,再选择对应 cu 版本的 PyTorch 安装命令。
  3. 克隆并编译 LeRobot 源码。使用可编辑安装,便于后续修改策略与硬件接口。
  4. 验证硬件链路。检查串口设备、权限、相机枚举,再运行最小实机脚本。
# 1. 创建环境
conda create -n lerobot python=3.10 -y
conda activate lerobot

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

# 3. 克隆并可编辑安装 LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e .

# 4. 验证
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
python -c "import lerobot; print(lerobot.__version__)"

三、CUDA 配置与常见问题对照

CUDA 配置的核心是“驱动版本 ≥ 运行时版本 ≥ PyTorch 编译版本”。下表列出实机部署中最常见的报错与处理方式,可作为排障清单使用。

现象 / 报错 根因 处理方式
torch.cuda.is_available() 返回 False PyTorch 装成 CPU 版,或 CUDA 与驱动不匹配 重装对应 cu 版本 PyTorch,核对 nvidia-smi 的 CUDA Version
CUDA error: no kernel image is available PyTorch 编译架构与 GPU 算力不匹配 安装支持该算力的 PyTorch 版本,或设置 TORCH_CUDA_ARCH_LIST 重新编译
ImportError: libcudart.so 找不到 CUDA 运行时未加入 LD_LIBRARY_PATH 在 ~/.bashrc 中导出 CUDA_HOME 与 LD_LIBRARY_PATH
Permission denied: /dev/ttyACM0 当前用户不在 dialout 组 sudo usermod -aG dialout $USER 后重新登录
pip install -e . 卡在编译依赖 缺少 build 工具或网络超时 先升级 pip/setuptools/wheel,必要时配置国内镜像源

四、案例与复盘:一次典型的“能训练不能实机”故障

某团队在服务器上完成了 ACT 策略训练,loss 正常下降,但把模型搬到实机工控机后,脚本在连接机械臂时卡死。排查发现:工控机上 LeRobot 是用系统 Python 安装的,PyTorch 为 CPU 版,且串口权限未配置。训练端与部署端环境不一致,导致“训练能跑、实机不能动”。

复盘要点:训练机与实机必须使用同一份 requirements 锁定文件;部署前先跑 python -c "import torch;print(torch.cuda.is_available())" 与串口回环测试,再加载策略。环境问题应在加载模型之前暴露,而不是在机械臂动作时暴露。
建议:把环境搭建过程写成 setup.sh 并纳入版本管理,记录 Python、PyTorch、CUDA、LeRobot commit 四个版本号。这样在换机、重装或多人协作时,可以快速复现同一环境,减少“我这里能跑”的沟通成本。