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 上联系我们。