🤗HF Dataset | arXiv | XHand Coupling CAD
LeRobot Extension for Franka FER Robot & XHand Robot. An instantiation of the LeVR framework.
这个 LeRobot Franka 扩展主要包含三部分:franka_server、franka_xhand_teleoperator,以及 src/lerobot 下新增的类实现。系统流程见下图:
这个 fork 在原 Franka 路线之外,新增了 UR5e 路线:
src/lerobot/robots/ur5e:通过 Universal Robots RTDE 控制 UR5e 机械臂。src/lerobot/robots/ur5e_xhand:UR5e + XHand 组合机器人。src/lerobot/robots/dexh13:帕西尼 DexH13 灵巧手,13 个主动关节。src/lerobot/robots/ur5e_dexh13:UR5e + DexH13 组合机器人。src/lerobot/teleoperators/ur5e_vr:基于 VR 手腕位姿控制 UR5e。src/lerobot/teleoperators/ur5e_xhand_vr:UR5e + XHand 共享 VR 数据的遥操作。src/lerobot/teleoperators/dexh13_vr:基于手部 landmarks 的 DexH13 遥操作。src/lerobot/teleoperators/ur5e_dexh13_vr:UR5e + DexH13 共享 VR 数据的遥操作。scripts/ur5e和scripts/ur5e_xhand:示例控制脚本。scripts/ur5e_dexh13:UR5e + DexH13 遥操作与数据录制脚本。
和 Franka 路线不同,UR5e 不使用 franka_server。请在 LeRobot 同一个环境中安装 UR RTDE Python 绑定:
[uv] pip install ur-rtdeUR5e + XHand / DexH13 的 VR 遥操作仍然需要构建 VR message router 扩展:
cd franka_xhand_teleoperator
[uv] pip install -e .然后可以运行下面的 UR5e 示例:
python scripts/ur5e/ur5e_vr_teleoperator.py --robot-ip YOUR_UR5E_IP
python scripts/ur5e_xhand/ur5e_xhand_vr_teleoperator.py --robot-ip YOUR_UR5E_IP --xhand-port /dev/ttyUSB0
python scripts/ur5e_xhand/record_ur5e_xhand_vr.py --dataset-path ./datasets/ur5e_xhand_demo --robot-ip YOUR_UR5E_IP --xhand-port /dev/ttyUSB0
python scripts/ur5e_dexh13/ur5e_dexh13_vr_teleoperator.py --robot-ip YOUR_UR5E_IP --dexh13-protocol SDK --dexh13-hand-port /dev/ttyUSB0
python scripts/ur5e_dexh13/record_ur5e_dexh13_vr.py --dataset-path ./datasets/ur5e_dexh13_demo --robot-ip YOUR_UR5E_IP --dexh13-protocol SDK --dexh13-hand-port /dev/ttyUSB0新增的 LeRobot 配置类型包括:ur5e、dexh13、ur5e_xhand、ur5e_dexh13、ur5e_vr、dexh13_vr、ur5e_xhand_vr、ur5e_dexh13_vr。
DexH13 通信支持 STUB、SDK、MODBUS_TCP、MODBUS_RTU。SDK 路线使用 PaXini DexHandSDK v1.1.0,也就是 pxdex.dh13.DexH13Control,并把 LeRobot 的 13 个主动关节 action 映射到 SDK 的 16 个角度槽位。手部遥操作默认使用 dex-retargeting / DexPilot 和仓库内置的 dexh13_right URDF;如果要回退到轻量几何映射,可使用 --dexh13-hand-backend geometry。在机器人控制电脑上安装厂商 SDK:
sudo dpkg -i DexHandSDK-1.1.0-Linux.deb
python3 -m pip install pxdex-1.1.0-cp310-cp310-linux_x86_64.whl厂商 SDK 包面向 Ubuntu 22.04 / Python 3.10.12 构建。如果你的 LeRobot 环境是 Python 3.12,请为 DexH13 使用 Python 3.10 环境,或向厂商获取匹配版本的 pxdex wheel。DexH13 说明书还说明:RJ45 EtherCAT 和 RS485 Modbus-RTU 不应同时用于控制;如果两者同时连接,RS485 生效,RJ45 不能使用。
完整命令级复现流程见 REPRODUCTION_UR5E_DEXH13.md。Meta Quest USB/ADB 连接教程见 QUEST_CONNECTION.md。PICO WiFi 推流教程见 pico/PICO_CONNECTION.md。
原项目在 LeRobot commit ce3b9f627e55223d6d1c449d348c6b351b35d082、Ubuntu 24.04、Python 3.12 下测试。使用该扩展时,可将本仓库内容覆盖到你的 LeRobot 目录中,然后执行下面步骤。
这部分需要在控制机器人的实时机器上构建和部署。
cd franka_server
bash build.sh构建 franka_server 后,在机器人 RTPC 上运行;如果控制和开发在同一台机器,也可以另开一个终端运行。
franka_server Dependencies
Note
在使用 LeRobot 工具移动机械臂前,需要先在 RTPC 上执行下面命令启动 server。
./franka_server [YOUR_FRANKA_ROBOT_IP]这部分需要构建并安装到当前 Python 环境。
cd franka_xhand_teleoperator
[uv] pip install -e .此外,还需要按照 这个仓库 配置 Meta Quest VR App。
XHand 依赖
对于 XHand,项目使用了基于 Yuzhe Qin 的 dex-retargeting 修改而来的仓库,将人手动作映射到机器人手。
启用 XHand 动作 retargeting:
# 首先更新所有 git submodule
git submodule update --init --recursive
# 构建依赖
cd vr-dex-retargeting
[uv] pip install -e .还需要安装 RobotEra 的 Python API 来控制 XHand。请从 RobotEra 文档中心 下载 Python wheel,并安装到当前环境。
# 使用与你 Python 版本对应的 wheel
[uv] pip install xhand_controller-1.1.7-cp312-cp312-linux_x86_64.whl 将本仓库内容复制并合并到 LeRobot 的 src 目录下。这里包含与框架其他部分配合所需的新 Robot 和 Teleoperator 类实现。
Note
由于时间和项目需求限制,原作者没有为 Franka Hand gripper 开发接口,因为项目中没有使用它;欢迎贡献补充。
可以像使用其他 LeRobot 机器人一样调用相关工具。示例脚本位于 scripts。
Caution
如果像 Franka + XHand 这样组合多个机器人,建议在自己的 Python 脚本里直接调用工具方法,而不是完全依赖已有命令行参数实现。组合机器人配置可能会触发 Draccus 的循环 import。原作者当前通过手写训练和部署脚本绕过该问题;如果你有更好的方式,也欢迎改进。
orange_cube.mp4
toaster.mp4
box_pnp.mp4
演示任务的开源数据集可在 HuggingFace 这里 获取。
如果这项工作对你有帮助,请考虑引用:
@misc{weng2025levr,
title={LeVR: A Modular VR Teleoperation Framework for Imitation Learning in Dexterous Manipulation},
author={Zhengyang Kris Weng and Matthew L. Elwin and Han Liu},
year={2025},
eprint={2509.14349},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2509.14349},
}
Apache-2.0
