4.2 VR 单臂遥操作
4.2 VR 单臂遥操作
使用 VR 设备(如 Meta Quest)替代物理 Leader 臂来控制 Follower 臂,通过 xlerobot_vr 模式实现动作捕捉与遥操作。
⚠️ 安全提醒:VR 遥操作的动作幅度较大,建议初期使用时两人同时在场——一人控制、一人观察。当操作幅度过大可能导致机械臂撞击或掉落时,立即断电防止舵机损坏。建议每采集 20 组数据退出保存一次。
参考文档:https://xlerobot.readthedocs.io/en/latest/software/getting_started/VLA_ACT.html
4.2.1 VR 环境配置
VR 设备需要连接外网,推荐使用 UU 加速器 配置比较方便。确保 VR 与电脑处于同一网段,然后根据教程配置好 IP 和 DNS。

4.2.2 电脑环境配置
克隆仓库
本次需要 clone 两个仓库:
git clone https://github.com/JoyandAI/lerobot.git -b feat/xlerobot
git clone https://github.com/JoyandAI/XLeRobot.git
修改 vr_monitor.py
进入 xlerobot_vr 目录,修改 vr_monitor.py 中 XLeVR 对应的文件路径:
cd src/lerobot/teleoperators/xlerobot_vr
vim vr_monitor.py

修改配置文件
编辑 config_xlerobot.py,修改当前对应的硬件配置文件。若购买的是 Jetson 全套设备,端口已绑定,使用默认配置即可;其余用户可参考文档进行设备文件绑定,或直接使用端口号。
cd src/lerobot/teleoperators/xlerobot_vr
vim config_xlerobot.py

确认设备是否绑定成功:
ls /dev/so* /dev/ca*
若命令行出现相关参数则为绑定成功。未绑定的可参考 机械臂设备文件绑定和摄像头设备文件绑定。
修改遥操作脚本中的 ID
在 8_xlerobot_teleop_vr.py 中找到 id 字段,改为自己机器人对应的 ID:

如果还需要在 VR 模式下录制数据集,同样修改 8_vr_teleop_with_dataset_recording.py 中的 id 字段。
4.2.3 VR 连接与遥操作
启动 VR 遥操作
确保 VR 设备已挂好梯子,且与电脑/Jetson 在同一网段下! 无梯子将无法进入遥操作。
SSH 登录 Jetson 后(电脑本地同理),启动遥操作脚本:
python ~/lerobot/examples/xlerobot/8_xlerobot_teleop_vr.py
启动后会看到如下窗口:

在浏览器中输入对应的网址和端口,进入 VR 控制页面,点击中间的绿色按钮开始 VR 遥控操作:

注意事项
VR 手柄初次使用时,请保持手肘与水平面成 90° 夹角,手柄朝上放置,与 Follower 臂保持同一朝向。移动过程中务必缓慢移动,逐步适应手柄灵敏度。
若出现机械臂卡死或乱动的情况:
- 第一时间按下右边手柄的 Meta 按钮进入菜单
- 点击 VR 头显左侧开关,关掉显示
- 立即给机械臂断电
操作方式
前后上下移动手柄,理解 VR 和机械臂的映射关系:
- 右手柄轮盘:控制底盘前后左右方向(如有底盘的设备)
- 右手柄前侧按钮:控制夹爪的开/关
- 左手柄上按钮 + 左手柄轮盘左:重新录制本轮数据
- 左手柄轮盘右:提前结束本轮录制
- 左手柄轮盘下:结束录制(不保存本轮)


数据采集步骤
- 将机械臂置于零位,按左臂上按钮,再按左手柄轮盘左,重新录制本轮
- 开始采集数据集(使用
8_vr_teleop_with_dataset_recording.py录制) - 若采集过程中出现问题:先按右手柄 Meta 按钮进入菜单 → 关掉头显开关 → 摘下 VR 头显 → 重置采集环境 → 重新打开头显 → 按左手柄轮盘左重新录制
- 单轮采集完成后,按左手柄轮盘右提前结束本轮
- 重置环境,继续录制
- 结束采集时,在新一轮开始时按左手柄轮盘下结束录制(不保存本轮)
4.2.4 在其他场景中使用 VR
如果想在 lerobot-record 或其他操控命令中使用 VR,只需在命令中添加相同的三行 --teleop 参数:
--teleop.type=xlerobot_vr \
--teleop.single_arm_mode=true \
--teleop.arm_controller=right
⚠️ 注意:使用 VR 时需要网络代理(梯子),确保 VR 设备与主机在同一网络下。
克隆 XLeRobot 仓库
linux: git clone https://github.com/JoyandAI/lerobot.git -b feat/xlerobot
git clone https://github.com/JoyandAI/XLeRobot.git
macos: git clone https://github.com/JoyandAI/lerobot.git -b feat/xlerobot
git clone https://github.com/JoyandAI/XLeRobot.git
windows: git clone https://github.com/JoyandAI/lerobot.git -b feat/xlerobot
git clone https://github.com/JoyandAI/XLeRobot.git
VR 遥操作启动
linux: python ~/lerobot/examples/xlerobot/8_xlerobot_teleop_vr.py
macos: python ~/lerobot/examples/xlerobot/8_xlerobot_teleop_vr.py
windows: python %USERPROFILE%\lerobot\examples\xlerobot\8_xlerobot_teleop_vr.py
lerobot-teleoperate VR 模式(命令行方式)
linux: lerobot-teleoperate \
--robot.type=so101_follower \
--robot.id=so101 \
--robot.port=/dev/ttyACM0 \
--teleop.type=xlerobot_vr \
--teleop.single_arm_mode=true \
--teleop.arm_controller=right
macos: lerobot-teleoperate \
--robot.type=so101_follower \
--robot.id=so101 \
--robot.port=/dev/tty.usbmodem58760431541 \
--teleop.type=xlerobot_vr \
--teleop.single_arm_mode=true \
--teleop.arm_controller=right
windows: lerobot-teleoperate `
--robot.type=so101_follower `
--robot.id=so101 `
--robot.port=COM5 `
--teleop.type=xlerobot_vr `
--teleop.single_arm_mode=true `
--teleop.arm_controller=right