【免费下载链接】leisaac
LeIsaac provides teleoperation functionality in IsaacLab using the SO101Leader (LeRobot), including data collection, data conversion, and subsequent policy training.
LeIsaac 是一个在 IsaacLab 中实现 SO101Leader(LeRobot)遥操作的开源项目,支持数据采集、数据转换与策略训练。本文讲解如何通过 ZMQ 跨机器通信,把本地连接的机械臂遥操作信号传到云端 GPU 实例,实现真正的LeIsaac 远程遥操作,让 Isaac Sim 仿真跑在云上、机械臂握在手里。
1. 为什么需要跨机器遥操作?
Isaac Sim 对 GPU 要求很高,本地电脑往往带不动,大家通常会把它部署到云端 GPU 实例上。但问题来了:SO101 Leader 机械臂通过 USB 插在你的笔记本上,云端的仿真环境根本"摸不到"这条串口。
LeIsaac 内置了一套ZMQ(ZeroMQ)PUB/SUB 发布订阅机制解决这个矛盾:
- 本地机器:运行一个轻量发布服务,读取机械臂电机位置并通过网络发送;
- 云端机器:订阅这些关节状态,用它们驱动仿真中的机械臂。
无需 USB 转发、无需在本地安装 Isaac Sim,只需要一台能跑 Python 的普通电脑即可。
2. ZMQ 跨机器控制的工作原理
整个链路非常简单,两条命令就完成部署:
本地机器(接机械臂) 云端 GPU(Isaac Sim) ┌───────────────────────────┐ ZMQ PUB/SUB ┌─────────────────────────┐ │ so101_joint_state_server │─────────────────►│ SO101LeaderRemote │ │ 以 50 Hz 读取电机并发布 │ tcp:5556 │ teleop_se3_agent.py │ └───────────────────────────┘ │ --remote_endpoint │ └─────────────────────────┘关键实现位于 so101_joint_state_server.py:它在本地机器上以zmq.PUB模式绑定tcp://0.0.0.0:5556,每 20 毫秒(50 Hz)打包 6 个关节的浮点位置并发出。云端则由 SO101LeaderRemote 设备类以zmq.SUB模式订阅接收,它是本地SO101Leader设备的"即插即用"替代品,环境配置和动作处理完全不用改。
💡 官方文档中这一节的说明见 Remote Teleoperation,可配合阅读。
3. 环境准备:三步装好依赖
先获取项目代码:
git clone https://gitcode.com/gh_mirrors/le/leisaac云端 GPU 机器(跑 Isaac Sim):安装完整仿真栈(PyTorch、Isaac Sim、IsaacLab),并安装 LeIsaac 的remote依赖(即pyzmq):
pip install "source/leisaac[remote]"本地机器(接机械臂):只需一条轻量安装,不需要PyTorch / Isaac Sim / IsaacLab 这些重型依赖:
pip install "source/leisaac[remote]"remote依赖在 pyproject.toml 中定义为pyzmq>=27.0.0,非常轻量。
4. 本地端:启动关节状态发布服务
在插着 Leader 机械臂的机器上,打开终端 1 运行:
python scripts/environments/teleoperation/so101_joint_state_server.py \ --port /dev/ttyACM0 --id leader_arm --rate 50几个要点:
- 自动标定:如果找不到标定文件,脚本会自动进入交互式标定流程(移动机械臂到行程中间、按回车、再走过全行程)。标定结果缓存在
scripts/environments/teleoperation/.cache/{id}.json,之后无需重复标定; - 强制重新标定:加
--recalibrate参数即可; --rate:电机读取频率(Hz),遥操作场景下 30–50 Hz 足够流畅。
如果提示串口权限错误(ConnectionError),可临时执行sudo chmod 666 /dev/ttyACM0,或把当前用户加入dialout组后重启。
5. 云端:一条参数接入远程机械臂
在云端 GPU 实例上,打开终端 2,运行 LeIsaac 的遥操作入口 teleop_se3_agent.py,只需多加一个--remote_endpoint参数:
python scripts/environments/teleoperation/teleop_se3_agent.py \ --task=LeIsaac-SO101-PickOrange-v0 \ --teleop_device=so101leader \ --remote_endpoint=tcp://<本地机器IP>:5556 \ --num_envs=1 --device=cuda --enable_cameras--remote_endpoint的设置逻辑见 teleop_se3_agent.py:一旦指定该参数,程序会自动改用SO101LeaderRemote替代本地串口设备,其余参数(任务名、环境数、相机开关)与本地遥操作完全一致,可以顺手加上--record直接录制 HDF5 数据集。
进入 IsaacLab 窗口后按b键开始遥操作,用本地 Leader 臂控制仿真中的机械臂;完成后按r(重置并标记失败)或n(重置并标记成功)即可切换场景。
6. 网络不通怎么办?SSH 反向端口转发
云实例通常处于 NAT / 防火墙之后,本地 IP 直连不通。此时用SSH 反向端口转发把本地 5556 端口映射到云端的 localhost:
# 在本地笔记本上执行,把本地 5556 端口转发到云实例的 localhost:5556 ssh -R 5556:localhost:5556 ubuntu@<云实例IP>然后把云端命令中的 endpoint 改为tcp://localhost:5556:
python scripts/environments/teleoperation/teleop_se3_agent.py \ --task=LeIsaac-SO101-PickOrange-v0 \ --teleop_device=so101leader \ --remote_endpoint=tcp://localhost:5556 \ --num_envs=1 --device=cuda --enable_cameras这条隧道同时解决了"云访问本地"和"内网穿透"两个难题,是最稳妥的方案。
7. 关键参数速查表
| 参数 | 运行端 | 作用 |
|---|---|---|
--remote_endpoint | 云端 | ZMQ 订阅地址,如tcp://192.168.1.10:5556或tcp://localhost:5556(SSH 隧道时) |
--port | 本地 | 机械臂串口,默认/dev/ttyACM0 |
--id | 本地 | 标定文件 ID,默认leader_arm |
--rate | 本地 | 电机读取频率(Hz),默认 50 |
--recalibrate | 本地 | 忽略已有标定,强制重新标定 |
--bind | 本地 | ZMQ 绑定地址,默认tcp://0.0.0.0:5556 |
8. 常见问题排查
- 订阅端收不到数据:确认本地发布服务已先启动(日志出现
Publishing on tcp://0.0.0.0:5556),再启动云端遥操作;用--rate 30可进一步降频观察; - 连接被拒绝 / 超时:检查两端防火墙放行 5556 端口,或改用第 6 节的 SSH 隧道;
- 机械臂动作不同步:确认本地发布频率未低于 30 Hz,且两端网络延迟较低(建议 50 Hz 默认值);
- 想换任务或场景:直接修改
--task参数即可,LeIsaac 还内置了厨房、卧室等仿真场景,云端部署方式可参考 NVIDIA Brev 云上快速部署。
9. 小结
LeIsaac 的远程遥操作方案把"重活留云端、轻活留本地":云端 GPU 专注跑 Isaac Sim 仿真与数据录制,本地笔记本只负责采集机械臂关节状态,中间一根 ZMQ 管道打通。整套流程只需两条命令加一个--remote_endpoint参数,就能让云端 GPU 与手边机械臂无缝联动,是采集遥操作数据集、训练机器人策略时非常实用的架构。
【免费下载链接】leisaac
LeIsaac provides teleoperation functionality in IsaacLab using the SO101Leader (LeRobot), including data collection, data conversion, and subsequent policy training.
相关推荐
如何在iOS设备上远程控制Android手机:Scrcpy-iOS完整指南
如何在iOS设备上远程控制Android手机:Scrcpy iOS完整指南 想要在iPhone或iPad上轻松控制Android设备吗?Scrcpy iOS正是
移动开发音视频LeIsaac 入门:SO101 Leader 遥操作仿真机械臂的 5 步快速上手指南
LeIsaac 入门:SO101 Leader 遥操作仿真机械臂的 5 步快速上手指南 LeIsaac 是基于 IsaacLab 构建的开源遥操作框架,使用 S
如何用Scrcpy-iOS实现iOS远程控制Android:完整操作指南
如何用Scrcpy iOS实现iOS远程控制Android:完整操作指南 Scrcpy iOS是一款基于Genymobile/scrcpy开发的iOS远程控制A
移动开发音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考