跳转至

OMX

订购和组装零件

首先,按照官方组装指南组装 OMX 硬件。

OMX 组装指南:https://ai.robotis.com/omx/assembly_guide_omx.html

OMX 机器人从工厂出厂时已预先配置。电机 ID、通信参数和关节偏移量已经设置好,因此在使用 LeRobot 之前无需进行额外的电机设置或校准。

安装 LeRobot 🤗

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

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

pip install -e ".[dynamixel]"

连接机器人

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

lerobot-find-port

此命令运行时,当提示时,断开主动臂或从动臂的 USB 电缆并按 Enter。输出将显示"The port of this MotorsBus is [port]"。这标识了断开连接的手臂的端口。对另一个手臂重复此操作以识别两个端口。

macOS 上的示例输出:

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.

[...断开相应的主动臂或从动臂并按 Enter...]

The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.

其中找到的端口是:/dev/tty.usbmodem575E0032081,对应于您的主动臂或从动臂。

在 Linux 上,我们强烈建议使用 udev 规则为 OMX 主动臂和从动臂分配持久且易读的设备名称。这避免了当机器人被拔出、重新插入或系统重新启动时,设备名称(如 ttyACM0 和 ttyACM1)发生变化的问题。

1. 查找您的设备序列号

您应该已经使用 lerobot-find-port 获得了主动臂和从动臂的端口号,如 ../../ttyACM?。您可以使用 ls -l /dev/serial/by-id/ 命令将这些结果与序列号匹配。 要创建 udev 规则,您需要每个 OMX 设备的唯一序列号。最简单的方法是列出以下设备:

ls -l /dev/serial/by-id/

您将看到类似的输出:

usb-ROBOTIS_OpenRB-150_228BDD7B503059384C2E3120FF0A2B19-if00 -> ../../ttyACM0
usb-ROBOTIS_OpenRB-150_67E1ED68503059384C2E3120FF092234-if00 -> ../../ttyACM1

在每一行中,序列号是 usb-ROBOTIS_OpenRB-150_ 之后和 -if00 之前的长字符串。

从动臂序列号:228BDD7B503059384C2E3120FF0A2B19

主动臂序列号:67E1ED68503059384C2E3120FF092234

2. 创建 udev 规则

创建一个新的 udev 规则文件:

sudo nano /etc/udev/rules.d/99-omx.rules

粘贴以下行,将序列号替换为您在上面找到的值:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="228BDD7B503059384C2E3120FF0A2B19", SYMLINK+="omx_follower"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{serial}=="67E1ED68503059384C2E3120FF092234", SYMLINK+="omx_leader"

保存文件并重新加载 udev 规则:

sudo udevadm control --reload-rules
sudo udevadm trigger

现在拔出并重新插入两个设备一次。

3. 验证符号链接

检查持久设备名称是否存在:

ls -l /dev/omx_follower /dev/omx_leader

您应该看到它们指向 ttyACM* 设备:

/dev/omx_follower -> ttyACM*
/dev/omx_leader   -> ttyACM*

这些名称在重新启动和重新连接时保持稳定。

遥操作

识别正确的端口后,您可以直接使用主动臂遥操作从动臂。

无相机遥操作

lerobot-teleoperate \
  --robot.type=omx_follower \
  --robot.port=<your_follower_port> \
  --robot.id=omx_follower_arm \
  --teleop.type=omx_leader \
  --teleop.port=<your_leader_port> \
  --teleop.id=omx_leader_arm

在遥操作期间,主动臂的运动由从动臂实时镜像。OMX 已经预先配置,遥操作可以立即开始,无需任何校准步骤。

带相机遥操作

您还可以通过为从动臂提供相机配置在遥操作期间启用相机输入。

lerobot-teleoperate \
  --robot.type=omx_follower \
  --robot.port=<your_follower_port> \
  --robot.id=omx_follower_arm \
  --robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
  --teleop.type=omx_leader \
  --teleop.port=<your_leader_port> \
  --teleop.id=omx_leader_arm \
  --display_data=true

启用相机后,相机流将实时显示并与机器人状态同步。此设置对于视觉监控很有用,以后可以重复用于演示记录和模仿学习。

无相机遥操作

lerobot-teleoperate \
  --robot.type=omx_follower \
  --robot.port=/dev/omx_follower \
  --robot.id=omx_follower_arm \
  --teleop.type=omx_leader \
  --teleop.port=/dev/omx_leader \
  --teleop.id=omx_leader_arm

在遥操作期间,主动臂的运动由从动臂实时镜像。OMX 已经预先配置,遥操作可以立即开始,无需任何校准步骤。

带相机遥操作

您还可以通过为从动臂提供相机配置在遥操作期间启用相机输入。

lerobot-teleoperate \
  --robot.type=omx_follower \
  --robot.port=/dev/omx_follower \
  --robot.id=omx_follower_arm \
  --robot.cameras="{front: {type: opencv, index_or_path: '/dev/video0', width: 640, height: 480, fps: 30}}" \
  --teleop.type=omx_leader \
  --teleop.port=/dev/omx_leader \
  --teleop.id=omx_leader_arm \
  --display_data=true

启用相机后,相机流将实时显示并与机器人状态同步。此设置对于视觉监控很有用,以后可以重复用于演示记录和模仿学习。

恭喜 🎉,您的机器人已全部设置好,可以自己学习任务了。

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