LeKiwi

LeKiwi

在以下步骤中,我们将说明如何组装 LeKiwi 移动机器人。

采购零件

请遵循此 README。其中包含物料清单(附有采购零件的链接)以及 3D 打印零件的说明。 如果你第一次进行打印或没有 3D 打印机,它会提供建议。

有线版本

如果你使用的是有线 LeKiwi 版本,可以跳过 Raspberry Pi 的安装和 SSH 设置。你也可以直接在 PC 上运行所有命令,包括 LeKiwi 脚本和用于 teleoperation 的 leader arm 脚本。

在 Pi 上安装软件

现在我们必须设置将在 LeKiwi 机器人上运行的远程 PC。这通常是一台 Raspberry Pi,但也可以是任何能在 5V 下运行、并有足够 USB 端口(2 个或更多)连接相机和电机控制板的 PC。

安装操作系统

有关设置 Raspberry Pi 及其 SD 卡的信息,请参阅:设置 Pi。这里说明了如何下载 Imager 以安装 Raspberry Pi OS 或 Ubuntu。

设置 SSH

设置好 Pi 后,你应该启用并设置 SSH(Secure Shell 协议),这样你就可以从笔记本电脑登录 Pi,而无需在 Pi 上配备屏幕、键盘和鼠标。关于如何操作的优秀教程可以在这里找到。登录 Pi 可以在命令提示符 (cmd) 中完成;如果你使用 VSCode,也可以使用扩展。

在 Pi 上安装 LeRobot 🤗

在你的 Raspberry Pi 上,使用我们的安装指南安装 LeRobot

除了这些说明之外,你还需要在 Pi 上安装 Feetech SDK 和 ZeroMQ:

pip install -e ".[lekiwi]"

在本地安装 LeRobot

如果你已经在笔记本电脑/PC 上安装了 LeRobot,可以跳过此步骤;否则,请按照我们在 Pi 上所执行的相同步骤进行操作。

遵循我们的安装指南

除了这些说明之外,你还需要在笔记本电脑/PC 上安装 Feetech SDK 和 ZeroMQ:

pip install -e ".[lekiwi]"

太好了 🤗!你现在已完成 LeRobot 的安装,我们可以开始组装 SO100/SO101 机械臂和移动底座了 🤖。 以后每次想要使用 LeRobot 时,你可以进入我们安装 LeRobot 的 ~/lerobot 文件夹并运行其中一条命令。

分步组装说明

首先,我们将组装两个 SO100/SO101 机械臂。一个安装在移动底座上,另一个用于 teleoperation。然后我们将组装移动底座。组装说明可以在以下两个页面上找到:

查找与电机板关联的 USB 端口

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

lerobot-find-port
Mac
Linux

示例输出:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081']
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,对应你的板子。

配置电机

配置电机的说明可以在 SO101 文档中找到。除了机械臂电机的 id 外,我们还需要设置移动底座电机的 id。这些 id 需要按特定顺序才能正常工作。下面是移动底座电机 id 和电机安装位置的图片。请注意,我们在 LeKiwi 上只使用一个电机控制板。这意味着轮子的电机 id 为 7、8 和 9。

你可以运行此命令为 LeKiwi 设置电机。它将首先设置机械臂的电机(id 6..1),然后设置轮子的电机 (9,8,7)

lerobot-setup-motors \
    --robot.type=lekiwi \
    --robot.port=/dev/tty.usbmodem58760431551 # <- paste here the port found at previous step
Motor ID's for mobile robot

排查通信问题

如果你在连接 Mobile SO100 时遇到问题,请按照以下步骤诊断并解决问题。

1. 验证 IP 地址配置

确保在命令或代码中使用了正确的 Pi IP。要检查 Raspberry Pi 的 IP 地址,请(在 Pi 命令行上)运行:

hostname -I

2. 检查是否可以从笔记本电脑/PC 访问 Pi

尝试从你的笔记本电脑 ping Raspberry Pi:

ping <your_pi_ip_address>

如果 ping 失败:

  • 确保 Pi 已开机并连接到同一网络。
  • 检查 Pi 上是否已启用 SSH。

3. 尝试 SSH 连接

如果你无法 SSH 登录 Pi,它可能没有正确连接。请使用:

ssh <your_pi_user_name>@<your_pi_ip_address>

如果你遇到连接错误:

  • 通过运行以下命令确保 Pi 上已启用 SSH:
    sudo raspi-config
    然后导航到:Interfacing Options -> SSH 并启用它。

calibration

现在我们必须 calibrate leader arm 和 follower arm。轮子电机无需 calibration。 calibration 过程非常重要,因为它能让在一个机器人上训练的神经网络在另一个机器人上工作。

calibrate follower arm(在移动底座上)

确保机械臂已连接到 Raspberry Pi,并(通过 SSH 在 Raspberry Pi 上)运行此脚本或 API 示例以启动 follower arm 的 calibration:

lerobot-calibrate \
    --robot.type=lekiwi \
    --robot.id=my_awesome_kiwi # <- Give the robot a unique name

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

有线版本

如果你使用的是有线 LeKiwi 版本,请在你的笔记本电脑上运行所有命令。

calibrate leader arm

然后,calibrate leader arm(它连接到笔记本电脑/PC)。在你的笔记本电脑上运行以下命令或 API 示例:

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

teleoperation LeKiwi

如果你使用的是 Mac,可能需要授予终端访问键盘的权限以进行 teleoperation。前往“系统偏好设置 > 安全性与隐私 > 输入监控”,并勾选终端对应的复选框。

要进行 teleoperation,请 SSH 登录你的 Raspberry Pi,运行 conda activate lerobot 和此命令:

python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi

然后在你的笔记本电脑上,同样运行 conda activate lerobot 并运行该 API 示例,确保在 examples/lekiwi/teleoperate.py 中设置了正确的 remote_ipport

python examples/lekiwi/teleoperate.py

你的笔记本电脑上应该会看到类似这样的内容:[INFO] Connected to remote robot at tcp://172.17.133.91:5555 and video stream at tcp://172.17.133.91:5556. 现在你可以移动 leader arm,并使用键盘 (w,a,s,d) 向前、向左、向后、向右驱动。使用 (z,x) 左转或右转。你可以使用 (r,f) 加快和减慢移动机器人的速度。共有三种速度模式,见下表:

速度模式线速度 (m/s)旋转速度 (deg/s)
0.490
0.2560
0.130
按键action
W前进
A左移
S后退
D右移
Z左转
X右转
R加快速度
F减慢速度

如果你使用不同的键盘,可以在 LeKiwiClientConfig 中更改每条命令的按键。

有线版本

如果你使用的是有线 LeKiwi 版本,请在你的笔记本电脑上运行所有命令。

录制 dataset

一旦你熟悉了 teleoperation,就可以录制你的第一个 dataset。

我们使用 Hugging Face Hub 功能上传你的 dataset。如果你之前没有使用过 Hub,请确保能通过 CLI 使用具有写入权限的 token 登录,此 token 可以从 Hugging Face 设置生成。

通过运行此命令将你的 token 添加到 CLI:

hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential

然后将你的 Hugging Face 仓库名称存储在一个变量中:

HF_USER=$(hf auth whoami | awk -F': *' 'NR==1 {print $2}')
echo $HF_USER

现在你可以录制 dataset 了。要录制 episode 并将 dataset 上传到 Hub,请执行这个为 LeKiwi 量身定制的 API 示例。请确保先调整脚本中的 remote_iprepo_idporttask。如果你想运行脚本更长时间,可以增大 NB_CYCLES_CLIENT_CONNECTION

python examples/lekiwi/record.py

dataset 上传

在本地,你的 dataset 存储在此文件夹中:~/.cache/huggingface/lerobot/{repo-id}。数据录制结束时,你的 dataset 将上传到你的 Hugging Face 页面(例如 https://huggingface.co/datasets/cadene/so101_test),你可以通过运行以下命令获取:

echo https://huggingface.co/datasets/${HF_USER}/so101_test

你的 dataset 将自动添加 LeRobot 标签,以便社区轻松找到它,你也可以添加自定义标签(例如本示例中的 tutorial)。

你可以通过搜索 LeRobot 标签在 Hub 上查找其他 LeRobot dataset。

收集数据的技巧

一旦你熟悉了数据录制,就可以为训练创建更大的 dataset。一个很好的入门任务是抓取不同位置的对象并将其放入箱子中。我们建议至少录制 50 个 episode,每个位置 10 个 episode。保持相机固定,并在整个录制过程中保持一致抓取行为。还要确保你操作的对象在相机画面中可见。一个很好的经验法则是:仅通过查看相机图像,你自己就应该能够完成该任务。

在以下各节中,你将训练你的神经网络。在实现可靠的抓取性能后,你可以开始引入更多变化,例如额外的抓取位置、不同的抓取技术和改变相机位置。

避免过快引入过多变化,因为这可能会妨碍你的结果。

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

故障排查:

  • 在 Linux 上,只要你在交互式终端中运行录制(保持终端处于焦点),录制控制键(方向键、Escape)就能在 X11、Wayland 和无头/SSH 会话中工作——无需设置 $DISPLAY;字母等价键 n / r / q 也可用。请注意,LeKiwi 底座的键盘 teleoperation有所不同:它依赖全局按键后端,因此只在 X11 会话、Windows 桌面或授予了辅助功能/输入监控权限的 macOS 上工作——在 Wayland 或无头机器上不行。参见 pynput 限制

回放 episode

要回放 episode,请运行下面的 API 示例,确保更改 remote_ipport、LeRobotDatasetId 和 episode index。

python examples/lekiwi/replay.py

恭喜 🎉,你的机器人已准备好自行学习一项任务。通过本教程的训练部分开始训练它:真实机器人入门

评估你的 policy

要评估你的 policy,请运行 evaluate.py API 示例,确保更改 remote_ipport、模型..

python examples/lekiwi/evaluate.py

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

在 GitHub 上更新