首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >配置和校准LeRobot电机

配置和校准LeRobot电机

作者头像
GPUS Lady
修改2025-07-12 17:07:02
修改2025-07-12 17:07:02
3540
举报
  1. 查找舵机的ID

要查找每个总线舵机ID端口,请运行以下脚本:

代码语言:javascript
复制
python -m lerobot.find_port

在Linux系统上,你可能需要运行以下命令来授予对USB端口的访问权限:

代码语言:javascript
复制
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1

示例输出:

代码语言:txt
复制
Finding all available ports for the MotorBus.
['/dev/ttyACM0', '/dev/ttyACM1']
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/ttyACM1
Reconnect the USB cable.

找到的端口为:/dev/tty.usbmodem575E0032081,对应你的主动臂或从动臂。

2.设置电机ID和波特率

总线上每个电机均通过唯一ID进行标识。新电机通常默认ID为1。为确保电机与控制器之间能够正常通信,我们首先需要为每个电机设置一个唯一且不同的ID。此外,总线上数据传输的速度由波特率决定。为使控制器和所有电机能够相互通信,它们必须配置为相同的波特率。

为此,我们首先需要使用控制器逐个连接每个电机以设置这些参数。由于我们将把这些参数写入电机内部存储器(EEPROM)的非易失性部分,因此只需执行一次此操作。

如果你将电机从其他机器人重新用于此机器人,由于ID和波特率可能不匹配,因此你可能也需要执行此步骤。

从臂

将USB线和电源连接到从动臂的控制器板。然后,运行以下命令,或使用上一步获取的端口运行API示例。你还需要使用id参数为你的主动臂命名。

命令:

代码语言:javascript
复制
python -m lerobot.setup_motors \    --robot.type=so101_follower \    --robot.port=/dev/tty.usbmodem585A0076841  # <- 在此处粘贴上一步找到的端口

API例子:

代码语言:txt
复制
from lerobot.robots.so101_follower import SO101Follower, SO101FollowerConfig

config = SO101FollowerConfig(
    port="/dev/tty.usbmodem585A0076841",
    id="my_awesome_follower_arm",
)
follower = SO101Follower(config)
follower.setup_motors()

你应该会看到以下指示:

代码语言:txt
复制
Connect the controller board to the 'gripper' motor only and press enter.

按照指示,连接夹爪电机。确保它是唯一连接到控制器板的电机,并且该电机本身尚未与其他任何电机串联。按[回车]键后,脚本将自动为该电机设置ID和波特率。

故障排除

然后,你应该会看到以下消息:

代码语言:txt
复制
'gripper' motor id set to 6

接着是下一条指示:

代码语言:txt
复制
Connect the controller board to the 'wrist_roll' motor only and press enter.

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

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

在按回车键之前,请检查每一步的接线是否正确。例如,在操作控制器板时,电源线可能会断开。

完成后,脚本将结束运行,此时电机已准备好使用。现在,你可以将每个电机的3针电缆依次连接到下一个电机,并将第一个电机(ID=1的“肩部平移”电机)的电缆连接到控制器板,控制器板现在可以连接到机械臂的底座。

主臂

对主臂执行相同的步骤。

命令:

代码语言:javascript
复制
python -m lerobot.setup_motors \    --teleop.type=so101_leader \    --teleop.port=/dev/tty.usbmodem575E0031751  # <- 在此处粘贴上一步找到的端口

API例子:

代码语言:txt
复制
from lerobot.teleoperators.so101_leader import SO101Leader, SO101LeaderConfig

config = SO101LeaderConfig(
    port="/dev/tty.usbmodem585A0076841",
    id="my_awesome_leader_arm",
)
leader = SO101Leader(config)
leader.setup_motors()

校准

接下来,你需要对机器人进行校准,以确保主动臂和从动臂在处于相同物理位置时具有相同的位姿数值。校准过程非常重要,因为它能让在一台机器人上训练的神经网络能够应用于另一台机器人。

从臂

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

命令:

代码语言:javascript
复制
python -m lerobot.calibrate \    --robot.type=so101_follower \    --robot.port=/dev/tty.usbmodem58760431551 \ # <- 你的机器人端口    --robot.id=my_awesome_follower_arm # <- 为机器人起一个唯一名称

API示例:

代码语言:txt
复制
from lerobot.robots.so101_follower import SO101FollowerConfig, SO101Follower

config = SO101FollowerConfig(
    port="/dev/tty.usbmodem585A0076891",
    id="my_awesome_follower_arm",
)

follower = SO101Follower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()

主臂

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

命令:

代码语言:javascript
复制
python -m lerobot.calibrate \    --teleop.type=so101_leader \    --teleop.port=/dev/tty.usbmodem58760431551 \ # <- 你的机器人端口    --teleop.id=my_awesome_leader_arm # <- 为机器人起一个唯一名称

API示例:

代码语言:txt
复制
from lerobot.teleoperators.so101_leader import SO101LeaderConfig, SO101Leader

config = SO101LeaderConfig(
    port="/dev/tty.usbmodem58760431551",
    id="my_awesome_leader_arm",
)

leader = SO101Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()

恭喜🎉,你的机器人已准备好自主学习任务。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档