04LeRobot双臂异构系统遥操作
LeRobot 双臂远程控制系统(Windows 主臂 + Linux 从臂)
本项目提供一个基于 Web 的 SO-101 双臂远程遥操作系统:主臂(Leader)连接在 Windows 电脑上,本地从臂(Follower)连接在 Linux 服务器上。系统复用了 HuggingFace LeRobot 官方驱动,支持端口检测、相机选择、CLI 校准、远程主臂数据上传与网页端遥操作。
目录
系统组成与依赖
Linux 服务器环境配置
Windows 主臂环境配置
启动与网页操作流程
校准说明
远程主臂数据上传
遥操作步骤
常用 API
常见问题与排查
系统组成与依赖
| |
| |
| |
| |
| |
注意:由于主臂实际连在 Windows 上,若标记为 Remote,Windows 端需要单独配置 LeRobot 环境并运行校准与数据推送脚本。
Linux 服务器环境配置
准备 LeRobot 源码
代码块
Bash
git clone https://github.com/huggingface/lerobot.git /home/sunrise/17robo/250602/lerobot
pip install -e ".[feetech]"
# 或使用已有版本,注意与 Windows 侧保持一致
创建并激活 Python 环境(示例使用 mamba)
代码块
Bash
启动服务器脚本
代码块
Bash
cd /home/sunrise/lerobot_bimanual_remote
export LEROBOT_SRC=/home/sunrise/17robo/250602/lerobot # 如路径不同请自行修改
./start_server.sh
#可以先找到bus位置,需要修改配置文件
#python lerobot/scripts/find_motors_bus_port.py
python lerobot/scripts/control_robot.py \
--robot.type=so101 \
--robot.cameras='{}' \
--control.type=calibrate \
--control.arms='["main_follower"]'
•
脚本会询问校准文件夹(默认 .cache/calibration/so101_bimanual)。
•
自动把 LEROBOT_SRC 添加到 PYTHONPATH,确保可以导入 LeRobot。
•
启动后终端会显示访问地址,例如 http://192.168.1.100:8000。
Windows 主臂环境配置
安装 Python 3.10+,建议使用 Anaconda / Miniconda。
克隆与 Linux 侧一致的 LeRobot 源码:
代码块
PowerShell
git clone https://github.com/huggingface/lerobot.git C:\lerobot
# 可以考虑git checkout user/michel-aractingi/2025-06-02-docs-for-hil-serl
cd C:\lerobot
pip install -e ".[feetech]"
根据实际串口(COM3, COM4 等)准备好主臂连接。
校准和数据推送脚本都在 Windows 本地执行(详见下文)。
启动与网页操作流程
访问网页:在任意浏览器打开 http://<Linux_IP>:8000。
端口识别:
◦
Windows 主臂:使用设备管理器或 PowerShell Get-WmiObject Win32_SerialPort 查到 COMx。
◦
Linux 从臂:在网页 “🔍 USB Port Detection” 中执行拔插识别。
手动配置:在 “Manual Configuration” 中填写四个串口并点击 Configure Ports。
相机:如需使用,点击 Scan Cameras,选择对应索引并 Configure Cameras。
状态栏会展示连接状态、校准目录和当前主臂来源(Local / Remote)。
校准说明
系统内置 LeRobot 官方标定流程,网页按钮仅触发 CLI 命令。
Linux 从臂:
◦
在网页 “Calibration” 区域点击 CLI: Left Follower / CLI: Right Follower。
◦
立即切换到运行 start_server.sh 的终端,按提示移动并回车确认(Middle → Zero → Rotated → Rest 等)。
◦
完成后会在 CALIBRATION_DIR 生成 left_follower.json 等文件,并自动加载至总线。
Windows 主臂(Remote 模式):
◦
在 Windows 终端运行:
◦
◦
这个时候需要修改代码:
◦
每次校准修改代码之后,不用重新pip install 一次:
这里我们两个主臂,左COM3右COM4,因此需要改两次
我的配置是:
左COM3,右COM4
从臂左/dev/ttyACM1右/dev/ttyACM0
代码块
Plain Text
```powershell
1 file changed
+24
-4
control_configs.py
+24
•
按提示完成标定后,将生成的 main_leader.json 拷贝到 Linux 服务器的 CALIBRATION_DIR(名称需对应 left_leader.json / right_leader.json)。
•
若主臂标记为本地(非 Remote),可直接在 Linux 侧运行对应按钮。
总结:只要主臂实际接在 Windows,上述 Windows CLI 校准就必不可少;否则从臂无法正确跟随主臂的零位。
远程主臂数据上传
遥操作时需要持续上传主臂的实时关节角度(单位:度)。常见做法:
HTTP 循环推送
代码块
Python
import requests
LINUX_SERVER = "http://192.168.1.100:8000"
def push_leader(side, positions):
requests.post(
f"{LINUX_SERVER}/api/leader/update",
json={"arm": f"{side}_leader", "positions": positions},
WebSocket 推送(连接 ws://<Linux_IP>:8000/ws/control):
代码块
JSON
{"type": "leader_state", "arm": "left_leader", "positions": {"shoulder_pan": 10.5, ...}}
无论使用哪种方式,都需要与主臂硬件保持同步读取。建议在 Windows 侧参考 control_robot.py --control.type=teleoperate 的实现,直接获取 Present_Position。
遥操作步骤
完成四只手臂的校准(并确认校准文件存在于 CALIBRATION_DIR)。
在 Windows 上启动主臂数据推送脚本(HTTP 或 WebSocket)。
在网页点击 Connect Robot → Start Teleoperation。
状态改为 “Teleoperation: Active” 后,移动主臂即可观察从臂同步动作;视频区域显示三路相机画面。
结束时点击 Stop Teleoperation,再 Disconnect Robot。
常用 API
代码块
HTTP
# 相机
常见问题与排查
| |
| |
| |
| |
| |
| |
| |
如需进一步调试,可直接运行 LeRobot CLI 命令(例如 control_robot.py --control.type=teleoperate)验证硬件通信是否正常。
完成以上步骤,即可使用网页完成 SO-101 双臂远程遥操作:Windows 主臂负责采集并推送状态,Linux 从臂通过 LeRobot 驱动实时跟随。