LeRobot 文档

SO-101

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

SO-101

在以下步骤中,我们将解释如何组装我们的旗舰机器人 SO-101。

采购零件

请遵循此 README。其中包含物料清单、采购零件的链接、3D 打印零件的说明,以及针对首次打印或没有 3D 打印机用户的建议。

安装 LeRobot 🤗

要安装 LeRobot,请遵循我们的 安装指南

除了这些说明,你还需要安装 Feetech SDK

pip install -e ".[feetech]"

分步组装说明

从动机臂使用 6 个 STS3215 电机,减速比为 1/345。而主动机臂则使用三种不同减速比的电机,以确保它既能支撑自身重量,又能在不需要很大力气的情况下移动。下表显示了每个关节需要哪种电机。

主动机臂关节 电机 减速比
基座 / 肩部平移 1 1 / 191
肩部升降 2 1 / 345
肘部屈伸 3 1 / 191
腕部屈伸 4 1 / 147
腕部旋转 5 1 / 147
夹爪 6 1 / 147

清理零件

移除 3D 打印零件上的所有支撑材料。最简单的方法是使用小螺丝刀撬起支撑材料。

建议在继续组装之前,先将一根 3 针电缆安装到放置好的电机上。

关节 1

  • 将第一个电机放入基座。
  • 用 4 颗 M2x6mm 螺丝(最小的螺丝)固定电机。顶部两颗,底部两颗。
  • 滑入第一个电机支架,并用两颗 M2x6mm 螺丝(每侧一颗)固定。
  • 安装两个电机舵盘,用一颗 M3x6mm 螺丝固定顶部舵盘。
  • 连接肩部零件。
  • 用 4 颗 M3x6mm 螺丝从顶部,4 颗 M3x6mm 螺丝从底部拧紧肩部零件。
  • 添加肩部电机支架。

关节 2

  • 从顶部滑入第二个电机。
  • 用 4 颗 M2x6mm 螺丝固定第二个电机。
  • 将两个电机舵盘安装到电机 2 上,同样使用 M3x6mm 舵盘螺丝。
  • 用 4 颗 M3x6mm 螺丝在两侧连接上臂。

关节 3

  • 插入电机 3 并用 4 颗 M2x6mm 螺丝固定。
  • 将两个电机舵盘安装到电机 3 上,并再次用一颗 M3x6mm 舵盘螺丝固定其中一个。
  • 用 4 颗 M3x6mm 螺丝在两侧将前臂连接到电机 3。

关节 4

  • 滑入电机支架 4。
  • 滑入电机 4。
  • 用 4 颗 M2x6mm 螺丝固定电机 4,并安装其电机舵盘,使用一颗 M3x6mm 舵盘螺丝。

关节 5

  • 将电机 5 插入腕部支架,并用 2 颗 M2x6mm 前螺丝固定。
  • 仅在腕部电机上安装一个电机舵盘,并用一颗 M3x6mm 舵盘螺丝固定。
  • 用 4 颗 M3x6mm 螺丝在两侧将腕部固定到电机 4。

夹爪 / 手柄

从动机臂
主动机臂
  • 将夹爪连接到电机 5,用 4 颗 M3x6mm 螺丝将其连接到腕部的电机舵盘上。
  • 插入夹爪电机,并用 2 颗 M2x6mm 螺丝在两侧固定。
  • 安装电机舵盘,并再次使用一颗 M3x6mm 舵盘螺丝。
  • 安装夹爪并用 4 颗 M3x6mm 螺丝在两侧固定。

配置电机

1. 查找与每个机械臂关联的 USB 端口

要查找每个总线伺服适配器的端口,请通过 USB 和电源将 MotorBus 连接到您的计算机。运行以下脚本,并在提示时断开 MotorBus。

lerobot-find-port
Mac
Linux

示例输出

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,对应于您的主控臂或从动臂。

2. 设置电机的 ID 和波特率

每个电机都通过总线上的唯一 ID 进行识别。全新电机通常带有一个默认 ID 为 `1`。为了让电机和控制器之间正常通信,我们首先需要为每个电机设置一个唯一的、不同的 ID。此外,总线上传输数据的速度由波特率决定。为了相互通信,控制器和所有电机都需要配置相同的波特率。

为此,我们首先需要单独连接每个电机和控制器来设置这些参数。由于我们会将这些参数写入电机内部存储器的非易失性部分(EEPROM),所以我们只需要做一次。

如果您正在重复使用来自其他机器人的电机,您可能也需要执行此步骤,因为 ID 和波特率可能不匹配。

下面的视频展示了设置电机 ID 的步骤顺序。

电机设置视频

从动机臂

将计算机的 USB 电缆和电源连接到从动机臂的控制器板上。然后,运行以下命令或使用您在上一步中获得的端口运行 API 示例。您还需要使用 `id` 参数给您的主动机臂命名。

命令
API 示例
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.

按照指示,插入夹爪的电机。确保它是唯一连接到板上的电机,并且该电机本身尚未与其他任何电机菊花链连接。当您按下 `[Enter]` 键时,脚本将自动为该电机设置 ID 和波特率。

故障排除

如果此时出现错误,请检查您的电缆并确保它们已正确插入。

  • 电源
  • 电脑和控制器板之间的 USB 电缆
  • 从控制器板到电机的 3 针电缆

如果您使用的是 Waveshare 控制器板,请确保两个跳线都设置在 B 通道(USB)上。

然后您应该看到以下消息

'gripper' motor id set to 6

接着是下一条指令

Connect the controller board to the 'wrist_roll' motor only and press enter.

您可以从控制器板上断开 3 针电缆,但可以将其连接在夹爪电机的另一端,因为它已经在正确的位置。现在,将另一根 3 针电缆插入腕部旋转电机并将其连接到控制器板上。与前一个电机一样,确保它是唯一连接到板上的电机,并且电机本身没有连接到任何其他电机。

按照指示为每个电机重复此操作。

在按 Enter 键之前,请在每一步检查您的布线。例如,在操作电路板时,电源线可能会断开。

完成后,脚本将简单地结束,此时电机已准备好使用。您现在可以将每个电机的 3 针电缆连接到下一个电机,并将第一个电机(ID=1 的‘肩部平移’电机)的电缆连接到控制器板,该板现在可以安装在机械臂的基座上。

主动机臂

对主动机臂执行相同的步骤。

命令
API 示例
lerobot-setup-motors \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem575E0031751  # <- paste here the port found at previous step

校准

接下来,您需要校准您的机器人,以确保主动机臂和从动机臂在处于相同物理位置时具有相同的位置值。校准过程非常重要,因为它允许在一个机器人上训练的神经网络在另一个机器人上工作。

从动机臂

运行以下命令或 API 示例来校准从动臂

命令
API 示例
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

下面的视频展示了如何执行校准。首先,您需要将机器人移动到所有关节都处于其活动范围中间的位置。然后,在按 Enter 键后,您必须移动每个关节使其通过其完整的运动范围。

校准视频

主动机臂

执行相同的步骤来校准主控臂,运行以下命令或 API 示例

命令
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

恭喜 🎉,您的机器人已准备好自主学习任务。请按照本教程开始训练它:真实世界机器人入门

如果你有任何问题或需要帮助,请在 Discord 上联系我们。

< > 在 GitHub 上更新