Koch v1.1

在以下步骤中,我们说明如何组装 Koch v1.1 机器人。

订购并组装零件

遵循此 README 中提供的采购和组装说明。它将指导你设置 follower arm 和 leader arm,如下图所示。

关于组装过程的直观 demonstration,你可以参考 此视频教程

自该视频制作以来,我们简化了配置阶段。因此,有两点与该视频中的说明不同:

  • 不要立即插上所有电机线缆,等到在 配置电机 中指示时再插。
  • 不要立即将控制板(PCB)拧到底座上,等到在 配置电机 中指示时再拧。

安装 LeRobot 🤗

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

除这些说明外,你还需要安装 Dynamixel SDK:

pip install -e ".[dynamixel]"

配置电机

1. 查找每条机械臂对应的 USB 端口

要查找每个总线舵机适配器的端口,请运行此脚本:

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,对应你的 leader arm 或 follower arm。

2. 设置电机 id 和波特率

每个电机由总线上的唯一 id 标识。全新时,电机通常带有默认 id 1。为使电机与控制器之间的通信正常工作,我们首先需要为每个电机设置一个唯一且不同的 id。此外,总线上数据传输的速度由波特率决定。为了相互通信,控制器和所有电机都必须配置相同的波特率。

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

如果你是从其他机器人挪用电机,很可能也需要执行此步骤,因为 id 和波特率可能不匹配。

follower arm

将 USB 线从电脑和 5V 电源连接到 follower arm 的控制板。然后,运行以下命令或使用上一步获得的端口运行 API 示例。你还需要用 id 参数为 leader arm 指定名称。

关于如何设置电机 id 的直观参考,请参阅 此视频,我们在其中演示了 SO101 机械臂的流程。

Command
API example
lerobot-setup-motors \
    --robot.type=koch_follower \
    --robot.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous step

你应该会看到以下提示。

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

按照指示,插上 gripper 的电机。确保它是唯一连接到板上的电机,并且该电机本身尚未与任何其他电机菊花链连接。当你按下 [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 针线缆,但另一端的 gripper 电机可以保持连接,因为它已经位于正确位置。现在,将另一根 3 针线缆插到腕部旋转电机上,并将其连接到控制板。与前一个电机一样,确保它是唯一连接到板上的电机,并且该电机本身未连接到任何其他电机。

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

在按 Enter 之前,每一步都检查接线。例如,电源线可能在你操作板子时断开。

完成后,脚本会直接结束,此时电机即可使用。现在你可以将每个电机的 3 针线缆连接到下一个电机,并将第一个电机(id=1 的 ‘shoulder pan’)的线缆连接到控制板,控制板此时可以安装到机械臂底座上。

leader arm

对 leader arm 执行相同步骤,但相应修改命令或脚本。

Command
API example
lerobot-setup-motors \
    --teleop.type=koch_leader \
    --teleop.port=/dev/tty.usbmodem575E0031751 \  # <- paste here the port found at previous step

calibration

接下来,你需要 calibrate 机器人,以确保 leader arm 和 follower arm 在处于相同物理位置时具有相同的位置值。 calibration 过程非常重要,因为它允许在一个机器人上训练的神经网络在另一个机器人上工作。

follower arm

运行以下命令或 API 示例来 calibrate follower arm:

Command
API example
lerobot-calibrate \
    --robot.type=koch_follower \
    --robot.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
    --robot.id=my_awesome_follower_arm  # <- Give the robot a unique name

我们统一了大多数机器人的 calibration 方法。因此,此 Koch 机械臂的 calibration 步骤与 SO100 和 SO101 的步骤相同。首先,我们必须将机器人移动到每个关节处于其活动范围中间的位置,然后按 Enter。其次,我们将所有关节移动经过其完整活动范围。关于 SO101 相同过程的参考视频可在 此处 找到。

leader arm

对 leader arm 执行相同步骤进行 calibration,运行以下命令或 API 示例:

Command
API example
lerobot-calibrate \
    --teleop.type=koch_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 上更新