Skip to main content

reBot Arm B601-RS LeRobot 入门

License: MITPython VersionPlatformPinocchio

6-DOF Robotic Arm · Multi-Motor Support · Kinematics Solver · Trajectory Planning · Fully Open Source

reBot Arm B601-RS是由Seeed开源的是一个致力于降低具身智能学习门槛的机械臂项目。我们毫无保留地开源了所有结构设计和代码,一起让机器人技术触手可及。

LeRobot 致力于为真实世界的机器人提供 PyTorch 中的模型、数据集和工具。其目标是降低机器人学的入门门槛,使每个人都能通过共享数据集和预训练模型进行贡献和受益。LeRobot 集成了经过验证的前沿方法,专注于模仿学习和强化学习。它提供了一套预训练模型、包含人类收集的示范数据集和仿真环境,使用户无需进行机器人组装即可开始使用。

本维基提供了 reBot-DevArm 调试教程,并在 Lerobot 框架内实现数据收集和训练。

caution

Seeed Studio 教程严格按官方文档更新,如遇无法解决的软件或环境问题,请先查阅文末FAQ,或者联系客服加入SeeedStudio Lerobot交流群询问,也可以在这里询问:LeRobot GitHub 或 Discord频道。

初始系统环境​

  • Ubuntu 22.04/Ubuntu 24.04
  • NVIDIA GPU 与 CUDA 12+(用于 GPU 加速训练/推理,可选)
  • Python 3.12
  • Torch 2.6(CPU 版可运行基础流程,GPU 加速需 CUDA 版)

安装LeRobot​

LeRobot 的基础环境可以在 CPU 上安装和运行。若需要 GPU 加速训练或推理,请确认电脑配有 NVIDIA GPU,并根据 CUDA 版本安装匹配的 PyTorch 与 Torchvision。

1

1. 安装 Miniforge​

cd ~
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

~/miniforge3/bin/conda init bash
source ~/.bashrc
2

2. 克隆 LeRobot 仓库​

mkdir ~/rebot_lerobot
cd ~/rebot_lerobot
git clone https://github.com/Seeed-Projects/lerobot.git
3

3. 创建 Conda 环境并安装 LeRobot​

tip

关于功能包的详细功能,请参考:

lerobot 仓库已有 pyproject.toml,创建 conda 环境并安装所有依赖包。

cd ~/rebot_lerobot

# 创建 conda 环境(Python 3.12)
conda create -y -n lerobot python=3.12

# 激活环境
conda activate lerobot

# 安装 lerobot 主项目(可编辑模式)
pip install -e ./lerobot

# 添加依赖包
pip install lerobot-teleoperator-rebot-arm-102
pip install lerobot-robot-seeed-b601
pip install motorbridge
4

4. 安装视频依赖​

ffmpeg 是视频解码依赖,通过 conda 安装:

conda install ffmpeg -c conda-forge
tip

版本说明:

  • 默认会安装 ffmpeg 7.X(支持 libsvtav1 编码器)
  • 如果遇到版本兼容问题,可以指定安装 ffmpeg 7.1.1:
    conda install ffmpeg=7.1.1 -c conda-forge
  • 可通过 ffmpeg -encoders | grep svtav1 检查是否支持 libsvtav1 编码器

Ubuntu x86 无需执行其他视频依赖配置,请继续完成步骤 5。

5

5. 检查 PyTorch 和 Torchvision​

由于通过 pip 安装 LeRobot 环境时可能会将原有的 PyTorch 和 Torchvision 替换为 CPU 版本,因此需要在 Python 中进行检查。

python3
import torch
print(torch.cuda.is_available())
exit()

如果输出结果为 False,表示当前环境中的 PyTorch 是 CPU 版本。没有 NVIDIA GPU 的电脑输出 False 是正常现象,可以继续用 CPU 运行基础流程,但训练会明显变慢。若电脑配有 NVIDIA GPU 且需要 GPU 加速,请根据 PyTorch 官方安装指南 安装与 CUDA 版本匹配的 PyTorch 和 Torchvision,此时最终检查结果应为 True。

tip

如果你使用的是 Jetson 设备,请根据 此教程 安装 GPU 版 PyTorch 和 Torchvision。

NVIDIA RTX 50 系列显卡需要 CUDA 12.8 及以上版本的 PyTorch 预览版:

pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128

校准机械臂​

接下来,你需要对你的 reBot B601-RS 机器人接上电源和数据线进行校准,以确保在相同的物理位置时,Leader 臂和 Follower 臂的位置信息一致。
这个校准过程至关重要,因为它可以让在一个 reBot B601-RS 机器人上训练的神经网络在另一个机器人上也能正常工作。如果需要重新校准机械臂,请完全删除~/.cache/huggingface/lerobot/calibration/robots或者~/.cache/huggingface/lerobot/calibration/teleoperators下的文件并重新校准机械臂,否者会出现报错提示,校准的机械臂信息会存储该目录下的json文件中。

tip

如果无法链接follower,请导航至gettingstarted wiki尝试使用motorbridge提供的接口测试机械臂是否正常。

B601-RS只需要在组装完成后校准一次,以下是校准指令,参考零位如图(夹爪要完全闭合)。


# follower
sudo ip link set can0 down 2>/dev/null
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

lerobot-calibrate \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan

如果你使用 Jetson(Jetpack 6.x),请执行以下命令查找 Jetson 对应的 CAN 端口号:

for i in /sys/class/net/can*; do
[ "$(basename "$(readlink -f "$i/device/driver" 2>/dev/null)")" = "pcan" ] && basename "$i"
done

输出示例:

can2  # 也可能是 can0、can1、其他 can 编号

后续所有 follower 命令使用的端口号必须和此处输出保持一致。

若你的 Jetson 未安装 PCAN 驱动,通信将会持续异常。请参考【RS快速上手】章节中的 Jetson PCAN 驱动安装教程: 快速入门

遥操作​

danger

所有机械臂运动场景同样需要注意!

遥操作过程中如果主从臂电源脱落,电源接触不良,信号线脱落,必须先停止代码,机械臂恢复到初始0点位置,在通上电源重新运行程序,避免数据错乱导致机械臂失控造成危险。

先对串口给予权限:

# leader
sudo chmod 666 /dev/ttyUSB*
# follower
sudo ip link set can0 down 2>/dev/null
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

运行遥操作:

lerobot-teleoperate \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader

添加摄像头​

RealSense 深度相机可以为 LeRobot 提供 RGB-D 感知能力,适用于目标识别、点云重建以及桌面操作等任务。这里推荐使用的型号是 RealSense D405 和 RealSense D435i。

RealSense D405

RealSense D405 是一款短距离双目深度相机,专为高精度近距离任务(如桌面机器人操作)设计,典型工作范围为 7 cm 到 50 cm。

RealSense D435i

RealSense D435i 集成了深度感知、RGB 成像以及 IMU,适用于中近距离应用,例如 3D 重建、SLAM 以及机器人环境感知。

1

切换到 Camera 分支

第 1 步

当前相机支持位于 DepthCameraSupport 分支:

git checkout DepthCameraSupport
git pull origin DepthCameraSupport

确认当前分支:

git branch --show-current

预期输出:

DepthCameraSupport
2

安装 RealSense

第 2 步

如果只使用 RealSense:

pip install -e ".[realsense]"
3

授予 USB 设备权限

第 3 步

sudo chmod a+rw /dev/bus/usb/*/*
4

检测相机

第 4 步

lerobot-find-cameras realsense

该步骤将输出:

  • 相机型号
  • 序列号
  • USB 信息
  • 默认流配置
5

运行 RealSense 示例

第 5 步

双 RealSense 测试:

lerobot-teleoperate \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan \
--robot.cameras='{
d435i_color: {
type: realsense_d435i_color,
serial_number_or_name: "419522072950",
width: 640,
height: 480,
fps: 30,
color_mode: rgb,
color_stream_format: rgb8,
rotation: 0,
warmup_s: 1
},
d435i_depth: {
type: realsense_d435i_depth,
serial_number_or_name: "419522072950",
width: 640,
height: 480,
fps: 30,
max_depth_m: 2.0,
depth_alpha: 0.2,
rotation: 0,
warmup_s: 5
},
d405_color: {
type: realsense_d405_color,
serial_number_or_name: "409122273421",
width: 640,
height: 480,
fps: 30,
color_mode: rgb,
color_stream_format: rgb8,
rotation: 0,
warmup_s: 1
},
d405_depth: {
type: realsense_d405_depth,
serial_number_or_name: "409122273421",
width: 640,
height: 480,
fps: 30,
depth_alpha: 0.03,
rotation: 0,
warmup_s: 5
}
}' \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader \
--display_data=true
6

检查参数设置

第 6 步

  • depth_alpha 用于控制深度图的缩放比例,可根据显示效果和目标距离范围进行调整。
  • 如果连接三台及以上深度相机,建议将 fps 降低至 15 以提高整体稳定性。
  • 建议分辨率保持在 640x480,以在稳定性和实时性能之间取得平衡。

数据集制作采集​

lerobot-record \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.id=follower1 \
--robot.can_adapter=socketcan \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"}}" \
--teleop.type=rebot_arm_102_leader \
--teleop.port=/dev/ttyUSB0 \
--teleop.id=rebot_arm_102_leader \
--display_data=true \
--dataset.repo_id=seeed_rebot_b601_rs/test \
--dataset.num_episodes=5 \
--dataset.single_task="Grab the black cube" \
--dataset.push_to_hub=false \
--dataset.episode_time_s=30 \
--dataset.reset_time_s=30

其中repo_id可以自定义修改,push_to_hub=false,最后数据集会保存在主目录的~/.cache/huggingface/lerobot下会创建上述seeed_rebot_b601_rs/test文件夹

记录功能

record功能提供了一套工具,用于在机器人运行期间捕获和管理数据。

1. 数据存储

  • 数据以 LeRobotDataset 格式存储,并在记录过程中保存到磁盘中。
  • 默认情况下,数据集在记录完成后会推送到你的 Hugging Face 页面。
  • 若要禁用上传,请使用:--dataset.push_to_hub=False。

2. 检查点与恢复

  • 在记录过程中会自动创建检查点。
  • 如果记录过程中断,可以通过重新运行相同的命令并添加 --resume=true 来恢复记录。

⚠️ 重要提示:在恢复时,需将 --dataset.num_episodes 设置为要额外记录的剧集数量(而不是数据集中目标的总剧集数量)。

  • 若要从头开始记录,请手动删除数据集目录。

3. 记录参数

通过命令行参数设置数据记录的流程:

参数描述默认值
--dataset.episode_time_s每个数据剧集的持续时间(秒)60
--dataset.reset_time_s每个剧集后环境重置时间(秒)60
--dataset.num_episodes要记录的总剧集数量50

4. 记录过程中的键盘控制

使用键盘快捷键控制数据记录流程:

键动作
→(右箭头)提前终止当前剧集/重置;进入下一个。
←(左箭头)取消当前剧集;重新录制。
ESC立即停止会话,编码视频,并上传数据集。
tip

如果你的键盘按下后没有反应,可能你需要降低你pynput的版本,例如安装个1.6.8版本的。

pip install pynput==1.6.8

数据收集技巧

  • 任务建议:在不同位置抓取物体并将其放入箱子中。
  • 规模:记录 ≥50 个剧集(每个位置 10 个剧集)。
  • 一致性:
    • 保持摄像头固定。
    • 保持相同的抓取行为。
    • 确保操作的物体在摄像头画面中可见。
  • 逐步推进:
    • 先从可靠的抓取开始,然后再增加变化(新位置、抓取技巧、摄像头调整)。
    • 避免复杂性急剧增加,以防止失败。

💡 经验法则:仅使用摄像头画面作为指导,只根据屏幕反馈的视频图像,来控制机械臂完成任务。

如果你想要深入了解这个重要主题,可以查看我们撰写的关于什么是好的数据集的博客文章。

故障排除

Linux 问题: 如果在记录过程中右箭头/左箭头/ESC 键无响应:

  • 验证 $DISPLAY 环境变量是否已设置(参见 pynput 限制)。

可视化数据集​

echo ${HF_USER}/rebot_test  

如果您上传了数据,您也可以在本地通过以下命令进行可视化:

lerobot-dataset-viz \
--repo-id ${HF_USER}/rebot_test \
--episode-index 0 \
--display-compressed-images=false

如果您使用了 --dataset.push_to_hub=false ,没有上传数据,您也可以通过以下命令在本地进行可视化:

lerobot-dataset-viz \
--repo-id seeed_rebot_b601_rs/test \
--episode-index 0 \
--display-compressed-images=false

这里,seeed_rebot_b601_rs/test 是数据收集时自定义的 repo_id 名称。

回放一个数据集​

tip

不稳定,可跳过,可尝试。

现在,尝试在您的机器人上重播第一个数据集:

lerobot-replay \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.can_adapter=socketcan \
--robot.id=follower1 \
--dataset.repo_id=seeed_rebot_b601_rs/test \
--dataset.episode=0

此时,机器人应该做出与你遥操记录时一样的动作。

训练及评估​

参考官方教程ACT

训练

要训练一个控制您机器人策略,使用 python -m lerobot.scripts.train 脚本。需要一些参数。以下是一个示例命令:

lerobot-train \
--dataset.repo_id=${HF_USER}/rebot_test \
--policy.type=act \
--output_dir=outputs/train/act_rebot_test \
--job_name=act_rebot_test \
--policy.device=cuda \
--wandb.enable=false \
--steps=300000

如果您想在本地数据集上进行训练,请确保 repo_id 与数据收集时使用的名称匹配,并添加 --policy.push_to_hub=false。

lerobot-train \
--dataset.repo_id=seeed_rebot_b601_rs/test \
--policy.type=act \
--output_dir=outputs/train/act_rebot_test \
--job_name=act_rebot_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.push_to_hub=false \
--steps=300000
tip

如果您是RTX50系列显卡,在训练时需要增加--dataset.video_backend=pyav部分,绕过 torchvision 预览版的 API 缺失,即训练命令为:

lerobot-train \
--dataset.repo_id=seeed_rebot_b601_rs/test \
--dataset.video_backend=pyav \
--policy.type=act \
--output_dir=outputs/train/act_rebot_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.push_to_hub=false \
--steps=300000

命令解释

  • 数据集指定:我们通过 --dataset.repo_id=${HF_USER}/rebot_test 参数提供了数据集。
  • 训练步数:我们通过 --steps=300000 修改训练步数,算法默认为800000,根据自己的任务难易程度,来进行调整,如果不确定,可以调高一些,因为训练过程中会生成检查点,评估可以从检查点开始。
  • 策略类型:我们使用 policy.type=act 提供了策略,同样你可以更换[act,diffusion,pi0,pi0fast,sac,smolvla]等策略,这将从 configuration_act.py 加载配置。重要的是,这个策略会自动适应您机器人的电机状态、电机动作和摄像头数量,这些信息已保存在您的数据集中。
  • 设备选择:我们提供了 policy.device=cuda,因为我们正在 Nvidia GPU 上进行训练,但您可以使用 policy.device=mps 在 Apple Silicon 上进行训练。
  • 可视化工具:我们提供了 wandb.enable=true 来使用 Weights and Biases 可视化训练图表。这是可选的,但如果您使用它,请确保您已通过运行 wandb login 登录。

评估

您可以使用 lerobot/record.py 中的 record 功能,但需要将策略训练结果训练结果权重文件作为输入。例如,运行以下命令记录 10 个评估回合:

lerobot-record \
--robot.type=seeed_b601_rs_follower \
--robot.port=can0 \
--robot.can_adapter=socketcan \
--robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"}, side: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30, fourcc: "MJPG"} }' \
--robot.id=follower1 \
--display_data=false \
--dataset.repo_id=seeed/eval_test123 \
--dataset.single_task="Put lego brick into the transparent box" \
--policy.path=outputs/train/act_rebot_test/checkpoints/last/pretrained_model
  1. --policy.path 参数,指示您的策略训练结果权重文件的路径(例如 outputs/train/act_rebot_test/checkpoints/last/pretrained_model)。如果您将模型训练结果权重文件上传到 Hub,也可以使用模型仓库(例如 ${HF_USER}/act_rebot_test)。
  2. 数据集的名称dataset.repo_id以 eval_ 开头,这个操作会在你评估的时候为你单独录制评估时候的视频和数据,将保存在eval_开头的文件夹下,例如seeed/eval_test123。
  3. 如果评估阶段遇到File exists: 'home/xxxx/.cache/huggingface/lerobot/xxxxx/seeed/eval_xxxx'请先删除eval_开头的这个文件夹再次运行程序。
  4. 当遇到mean is infinity. You should either initialize with stats as an argument or use a pretrained model请注意--robot.cameras这个参数中的front和side等关键词必须和采集数据集的时候保持严格一致。

FAQ​

  • 如果实用本文档教程,请git clone本文档推荐的github仓库https://github.com/Seeed-Projects/lerobot.git,本文档推荐的仓库是验证过后的稳定版本,Lerobot官方仓库是实时更新的最新版本,会出现一些无法预知的问题,例如数据集版本不同,指令不同等。

  • 如果遇到

    Could not connect on port "/dev/ttyUSB0" 或 "/dev/ttyACM0"

    并且通过 ls /dev/ttyUSB* 或 ls /dev/ttyACM* 看到设备存在,则是忘记给串口权限了,终端输入 sudo chmod 666 /dev/ttyUSB* /dev/ttyACM* 即可

  • 如果遇到

    No valid stream found in input file. Is -1 of the desired media type?

    请安装 ffmpeg 7.1.1:conda install ffmpeg=7.1.1 -c conda-forge。

  • 在3060的8G笔记本上训练ACT的50组数据的时间大概为6小时,在4090和A100的电脑上训练50组数据时间大概为2~3小时。

  • 数据采集过程中要确保摄像头位置和角度和环境光线的稳定,并且减少摄像头采集到过多的不稳定背景和行人,否则部署的环境变化过大会导致机械臂无法正常抓取。

  • 数据采集命令的num-episodes要确保采集数据足够,不可中途手动暂停,因为在数据采集结束后才会计算数据的均值和方差,这在训练中是必要的数据。

  • 如果程序提示无法读取USB摄像头图像数据,请确保USB摄像头不是接在Hub上的,USB摄像头必须直接接入设备,确保图像传输速率快。

tip

如果你遇到无法解决的软件问题或环境依赖问题,除了查看本教程末尾的常见问题(FAQ)部分外,请及时在 LeRobot 平台 或 LeRobot Discord 频道 反馈问题。

参考文档​

矽递科技英文Wiki文档:How to use the SO100Arm robotic arm in Lerobot

TheRobotStudio Project: SO-ARM10x

Huggingface Project: Lerobot

Dnsty: Jetson Containers

Jetson AI Lab

Diffusion Policy

ACT or ALOHA

TDMPC

VQ-BeT

技术支持与产品讨论​

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...