SO-101 设置指南

从零件到首次数据收集。 预计时间:约 3-4 小时(不包括 3D 打印时间)。

1

集会

约 60 分钟 + 打印时间

SO-101 是一款完全开源的手臂。 所有部件都是 3D 打印的,或者作为 HuggingFace 上的 LeRobot BOM 中列出的现成硬件提供。

您需要的零件

  • 6× Feetech STS3215 伺服电机
  • 3D 打印结构部件(SO-101 GitHub 存储库中的 STL 文件)
  • USB转串口转接线(CH340或CP2102芯片)
  • 12V电源(最小3A)
  • 伺服电缆和连接器硬件(每个 BOM)

装配清单

  • 打印所有结构部件(底座、连杆、末端执行器)
  • 将 STS3215 伺服系统安装到各自的连接外壳中
  • 将伺服电缆穿过印刷电缆通道
  • 按正确顺序菊花链伺服系统(从底座到尖端的 ID 1–6)
  • 通电前将底座固定在稳定的表面上
  • 阅读 安全页面 通电前
从哪里获取 BOM 和 STL 文件: 完整的物料清单和可打印零件保存在 HuggingFace LeRobot 存储库中。 在上搜索“SO-101” 乐机器人GitHub.
1b

3D 打印零件

约 8–16 小时打印时间

SO-101 的所有结构部件均可使用标准桌面打印机进行 FDM 打印。 STL 文件被组织成每个手臂的单文件打印,使切片变得简单。

推荐的切片器设置

环境 价值
材料 聚乳酸+
喷嘴直径 0.4 毫米(或 0.6 毫米)
层高 0.2 毫米(0.6 毫米喷嘴为 0.4 毫米)
填充密度 15%
支持 到处; 忽略 >45° 的坡度
床层附着力 PEI 或玻璃上的标准胶棒
经过测试的打印机 Prusa MINI+、Creality Ender 3、Bambu Lab A/P/X 系列

STL 文件 — 要打印的文件

预先安排的单文件打印可用于常见的床尺寸:

  • 220×220毫米床(Ender 3):
    • 追随者: STL/SO101/Follower/Ender_Follower_SO101.stl
    • 领导者: STL/SO101/Leader/Ender_Leader_SO101.stl
  • 205×250毫米地板(Prusa/UP):
    • 追随者: STL/SO101/Follower/Prusa_Follower_SO101.stl
    • 领导者: STL/SO101/Leader/Prusa_Leader_SO101.stl
首先验证尺寸精度。 在打印整个手臂之前,先打印仪表 STL STL/Gauges/ 并针对乐高积木或 STS3215 伺服系统进行测试。 仪表正确配合可确认您的打印机校准准确。 在进行完整打印之前,根据需要调整缩放比例。
没有打印机? 请参阅 3DPRINT.md 指南 在 SO-ARM100 存储库中获取打印服务选项。 预印套件也可从 帕塔机器人 (我们), 西德工作室 (国际),以及 自动发现 (欧盟)。
2

软件安装

约 15 分钟

HuggingFace LeRobot 原生支持 SO-101。 不需要额外的插件——只需安装乐机器人即可。

安装乐机器人

# Using pip
pip install lerobot

# Or with uv (recommended)
uv pip install lerobot

Linux串口权限

在 Linux 上,串行端口位于 /dev/ttyACM* 要求用户处于 dialout 团体。 运行一次并注销并重新登录:

sudo usermod -aG dialout $USER
# Then log out and back in, or run:
newgrp dialout

先决条件

  • Python 3.10+
  • Linux(推荐 Ubuntu 22.04)或 macOS
  • 已安装 USB 转串口驱动程序(macOS 上的 CH340 驱动程序;通常在 Linux 上预安装)
3

端口检测和校准

约20分钟

找到手臂正确的USB串口,然后运行乐机器人校准脚本来设置舵机零位。

找到串口

python lerobot/scripts/find_motors_bus_port.py

出现提示时插拔 USB 电缆。 该脚本识别手臂连接到哪个端口。 典型值:

# Linux:  /dev/ttyACM0  (or ttyUSB0 for CH340 adapters)
# macOS:  /dev/tty.usbmodem*  or  /dev/tty.usbserial-*

运行校准

出现提示时,将手臂移动到其整个运动范围:

python lerobot/scripts/calibrate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0
重新组装后重新校准。 校准数据存储在本地。 如果拆卸并重新组装接头,请重新运行校准以恢复准确的零位置。
4

第一次运动测试

约 15 分钟

在单臂模式下运行远程操作脚本,以在连接引导臂之前验证所有关节是否正确响应。

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0

要验证什么

  • 所有 6 个关节均响应命令,不跳跃
  • 终端无伺服失速或过载警告
  • 夹具在全范围内打开和关闭
  • 任何接头位置均不会卡住电缆
紧急停止 断开 USB 电缆,立即切断与手臂的通信。 通电操作期间,请保持双手远离工作空间。
5

远程操作

约 30 分钟

SO-101 可作为独立手臂或作为带有引导臂的跟随手臂进行远程操作。 使用第二只手臂作为领导者可以产生更高质量的模仿学习演示。

独立模式(键盘/编程)

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0

带引导臂(例如 DK1 引导臂)

python lerobot/scripts/teleoperate.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --teleop.type=so101 \
  --teleop.port=/dev/ttyACM1
双手设置: SO-101 可与 DK1 引导臂一起用作从动臂。 两者都是 LeRobot 原生的,并通过 USB 串行通信。 请参阅 DK1页面 了解完整的双手设置详细信息。
6

数据收集

进行中

使用录制演示 record.py。 数据以LeRobot格式保存,可以直接推送到HuggingFace Hub进行训练。

基本录音

python lerobot/scripts/record.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --dataset.repo_id=your-org/so101-dataset \
  --dataset.task="pick cube"

带 USB 摄像头

python lerobot/scripts/record.py \
  --robot.type=so101 \
  --robot.port=/dev/ttyACM0 \
  --robot.cameras.top.type=opencv \
  --robot.cameras.top.index=0 \
  --dataset.repo_id=your-org/so101-dataset \
  --dataset.task="pick cube"

记录最佳实践

  • 训练前每项任务至少记录 50 次演示
  • 不同场景中不同物体的位置和方向
  • 使用描述性的 --dataset.task 供以后过滤的名称
  • OAK-D 或英特尔实感摄像头非常适合深度数据收集
  • 每次会话后验证数据集上传到 HuggingFace Hub

后续步骤

收集数据后,使用 LeRobot 的训练脚本训练 ACT 或扩散策略模型。 阅读全文 SO-101学习路径 从设置到模型部署的结构化进程。

设置完成?

加入社区分享结果并获取高级配置帮助。