
在以下步骤中,我们将说明如何组装我们的旗舰机器人 SO-101。
请按照此 README 操作。其中包含物料清单(附有采购零件的链接)以及 3D 打印零件的说明。 如果你是第一次打印或没有 3D 打印机,它也会给出建议。
要安装 LeRobot,请按照我们的安装指南操作
除这些说明外,你还需要安装 Feetech SDK:
pip install -e ".[feetech]"follower arm 使用 6 个 1/345 减速比的 STS3215 电机。而 leader arm 使用三个不同减速比的电机,以确保它既能承受自身重量,又能以较小的力被移动。下表显示了每个关节所需的电机。
| leader arm 轴 | 电机 | 减速比 |
|---|---|---|
| 底座 / 肩部水平旋转 | 1 | 1 / 191 |
| 肩部抬升 | 2 | 1 / 345 |
| 肘部弯曲 | 3 | 1 / 191 |
| 腕部弯曲 | 4 | 1 / 147 |
| 腕部滚转 | 5 | 1 / 147 |
| gripper | 6 | 1 / 147 |
要找到每个总线舵机适配器的端口,请通过 USB 和电源将 MotorBus 连接到你的计算机。运行以下脚本,并在提示时断开 MotorBus:
lerobot-find-port
示例输出:
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
Remove the USB cable from your MotorsBus and press Enter when done.
[...Disconnect corresponding leader or follower arm and press Enter...]
The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.其中找到的端口为:/dev/tty.usbmodem575E0032081,对应你的 leader arm 或 follower arm。
每个电机由总线上的唯一 id 标识。全新电机通常带有默认 id 1。为了让电机与控制器之间的通信正常工作,我们首先需要为每个电机设置一个唯一的、互不相同的 id。此外,总线上数据传输的速度由波特率决定。为了能够相互通信,控制器和所有电机都需要配置相同的波特率。
为此,我们首先需要用控制器逐个连接每个电机来设置这些参数。由于我们会将这些参数写入电机内部存储(EEPROM)的非易失性区域,因此只需执行一次。
如果你要复用另一台机器人的电机,很可能也需要执行此步骤,因为 id 和波特率可能不匹配。
下面的视频展示了设置电机 id 的步骤顺序。
将计算机的 USB 线和电源连接到 follower arm 的控制板。然后,使用上一步获得的端口运行以下命令或运行 API 示例。你还需要通过 id 参数为 follower arm 指定一个名称。
lerobot-setup-motors \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem585A0076841 # <- paste here the port found at previous step你应该会看到以下指令
Connect the controller board to the 'gripper' motor only and press enter.按照提示,插上 gripper 的电机。确保它是唯一连接到控制板的电机,并且该电机尚未与其他任何电机菊花链连接。当你按下 [Enter] 时,脚本会自动为该电机设置 id 和波特率。
如果此时遇到错误,请检查线缆并确保它们连接正确:
如果你使用的是 Waveshare 控制板,请确保两个跳线都设置在 B 通道(USB)上。
然后你应该会看到以下消息:
'gripper' motor id set to 6接着是下一条指令:
Connect the controller board to the 'wrist_roll' motor only and press enter.你可以从控制板上拔下 3 针线缆,但另一端可以保持在 gripper 电机上连接,因为它已经在正确的位置。现在,将另一根 3 针线缆插到腕部滚转电机上,并将其连接到控制板。与前一个电机一样,确保它是唯一连接到控制板的电机,并且该电机本身未连接到任何其他电机。
按照提示对每个电机重复该操作。
在按 Enter 之前,每一步都要检查接线。例如,在操作控制板时,电源线可能会断开。
完成后,脚本将直接结束,此时电机即可使用。现在你可以将每个电机的 3 针线缆接到下一个电机,并将第一个电机(id=1 的“肩部水平旋转”)的线缆接到控制板,控制板此时可以安装到机械臂的底座上。
对 leader arm 执行相同的步骤。
lerobot-setup-motors \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous step去除 3D 打印零件上的所有支撑材料。最简单的方法是用小螺丝刀从支撑材料下方撬起。
建议在放置好电机后,先为每个电机安装一根 3 针线缆,然后再继续组装。
接下来,你需要 calibrate 机器人,以确保 leader arm 和 follower arm 处于相同物理位置时具有相同的位置值。 calibration 过程非常重要,因为它能让在一台机器人上训练的神经网络在另一台机器人上工作。
运行以下命令或 API 示例来 calibrate follower arm:
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
--robot.id=my_awesome_follower_arm # <- Give the robot a unique name下面的视频展示了如何进行 calibration。首先,你需要将机器人移动到所有关节都处于其行程中点的位置。然后在按下回车后,你需要让每个关节完成其完整的运动范围。
按照相同步骤 calibrate leader arm,运行以下命令或 API 示例:
lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
--teleop.id=my_awesome_leader_arm # <- Give the robot a unique name恭喜 🎉,你的机器人已准备好自行学习任务。按照本教程开始训练它:真实世界机器人入门
在 GitHub 上更新如果你有任何问题或需要帮助,请在 Discord 上联系我们。