跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

宇树 G1 人形机器人 VR 遥操与 IL 开发:xr_teleoperate 到 unitree_IL_lerobot

宇树 G1 人形机器人 VR 遥操作开发与数据训练流程。涵盖 avp_teleoperate 及升级版 xr_teleoperate 的环境配置、硬件连接(Vision Pro/Quest)与启动方法。讲解如何将采集的 JSON 格式数据转换为 LeRobot 格式,并基于 pi0、Diffusion Policy 等策略进行模型训练与真机测试。提供 Ubuntu 环境搭建、SDK 安装及仿真部署的详细步骤。

leon发布于 2026/4/11更新于 2026/5/2215 浏览
宇树 G1 人形机器人 VR 遥操与 IL 开发:xr_teleoperate 到 unitree_IL_lerobot

前言

本文介绍基于宇树 G1 人形机器人的 VR 遥操作开发与数据训练流程。涉及开源库 avp_teleoperate 及其升级版 xr_teleoperate,以及 unitree_IL_lerobot 的集成使用。

第一部分 基于宇树开源的 avp(xr 以前的版本) 摇操程序

1.1 Ubuntu、双臂 inverse kinematics 环境配置、unitree_dds_wrapper 配置

  1. Ubuntu 20.04 和 Ubuntu 22.04 操作系统下进行测试

注意,原 h1_2 分支中的临时版本 unitree_dds_wrapper 已更新为 Python 版控制通信库 unitree_sdk2_python。

# 安装 unitree_sdk2_python 库
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .

双臂 inverse kinematics 环境配置 该部分用于配置人形机器人 H1 双臂(共 14 个自由度)的末端位姿逆运动学求解相关的软件库。Apple Vision Pro 获取左右两个手腕位姿后,使用 pinocchio 和 CasADi 库加载 URDF 并进行逆运动学计算。

conda create -n tv python=3.8
conda activate tv
# 确保 pinocchio 版本为 3.1.0
conda install pinocchio -c conda-forge
pip install meshcat
pip install casadi

*注意:使用 pip 安装的 pinocchio 有可能不是最新版本 3.1.0,本环境需要使用 3.1.0 版本。必须先安装 pinocchio 并确保安装成功,然后再进行 TeleVision 的环境配置。

1.2 TeleVision 环境配置和 Apple Vision Pro 通信配置

1.2.1 基本环境配置和 Isaac Gym 安装
cd ~
git clone https://github.com/unitreerobotics/avp_teleoperate.git
cd avp_teleoperate
pip install -r requirements.txt

之后,在 Isaac Gym 下载页面下载 Isaac Gym 安装包并解压,然后到 IsaacGym_Preview_4_Package/isaacgym/python 目录下执行下面命令:

pip install -e .
1.2.2 证书生成相关配置

由于苹果不允许在非 HTTPS 连接上使用 WebXR。要在本地测试应用程序,需要创建一个自签名证书并在客户端上安装它。

首先,安装 mkcert

brew install mkcert
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
sudo apt-get install build-essential procps curl file git
cd ~
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bash_profile

接下来,生成证书

mkcert -CAROOT

系统防火墙设置

sudo ufw allow 8012

假设本机 IP 地址是 192.168.123.2,创建证书:

mkcert -install && mkcert -cert-file cert.pem -key-file key.pem 192.168.123.2 localhost 127.0.0.1

把生成的 cert.pem 和 key.pem 两个文件拷贝到项目的 teleop 目录下:

cp cert.pem key.pem ~/avp_teleoperate/teleop/

查看本机 IP 地址:

tv) unitree@Host:~/avp_teleoperate$ ifconfig | grep inet
1.2.3 启用 Apple Vision Pro 的 WebXR 相关功能、进入 VR

设置 >> Apps >> Safari 浏览器 >> 高级 >> 功能标志 >> 启用 WebXR 相关功能。

在新版本 Vision OS 2 系统中,将证书通过 AirDrop 复制到 Apple Vision Pro 设备后,将会在设置 APP 中左上角账户栏的下方出现证书相关信息栏,点击进去即可启用对该证书的信任。

接下来,便可以进入 VR:

cd ~/avp_teleoperate/teleop
python teleop_hand.py

打开 Apple Vision Pro 的浏览器输入 https://192.168.123.2:8012?ws=wss://192.168.123.2:8012,点击 "Enter VR" 并且允许跟踪。

1.3 硬件清单

1.3.1 VR 和头部的双目相机
物品名称数量说明
Apple Vision Pro1参考 Apple 官方网址
计算机1x86_64 架构
人形机器人 H11具体型号为 H1_2
灵巧手1H1 可搭载 Inspire Robotics (RH56DFX) 的仿人五指灵巧手
头部双目相机1普通 USB 免驱动双目相机
头部相机支架1参考 GitHub 仓库 hardware 目录
1.3.2 手腕上的深度相机 D405
物品名称数量说明
英特尔 RealSense D405 相机2深度相机
腕部相机环形支架2参考 GitHub 仓库 hardware 目录
左腕相机支架1参考 GitHub 仓库 hardware 目录
右腕相机支架1参考 GitHub 仓库 hardware 目录

1.4 启动程序

1.4.1 开启灵巧手服务

可以参考《RH56DFX 灵巧手开发》配置相关环境和编译控制程序。

  1. 下载灵巧手控制接口程序,并将之拷贝到 机器人 Unitree H1_2 的 PC2 中。
  2. 在 PC2 中解压完成后,使用下述命令进行编译:
unitree@PC2:~$ sudo apt install libboost-all-dev libspdlog-dev
cd h1_inspire_service & mkdir build & cd build
unitree@PC2:~/h1_inspire_service/build$ cmake .. -DCMAKE_BUILD_TYPE=Release
unitree@PC2:~/h1_inspire_service/build$ make
# 终端 1. 运行 h1 inspire 手部服务
unitree@PC2:~/h1_inspire_service/build$ sudo ./inspire_hand -s /dev/ttyUSB0
# 终端 2. 运行示例
unitree@PC2:~/h1_inspire_service/build$ ./h1_hand_example
1.4.2 开启图像推流服务 image_server

把 avp_teleoperate/teleop/image_server 目录中的 image_server.py 拷贝到机器人 Unitree G1/H1/H1_2 的开发计算单元 PC2 中,并在 PC2 内执行下面命令:

# 提醒:目前该图像传输程序支持 OpenCV 和 Realsense SDK 两种读取图像的方式
unitree@PC2:~/image_server$ python image_server.py

注意:这里需要检查 OpenCV 读取图像时的参数是否与双目相机硬件匹配,以及对于推流使用的默认 5555 端口是否可用。

1.4.3 启动遥操作程序

在需要使用 SDK 进行开发调试时,请确保 G1 已经进入调试模式(阻尼:①长按 L2 + 单击 B,或零力矩:长按 L2 + 单击 Y 模式下,遥控器长按 L2 + 单击 R2 进入调试模式),以停止运动控制程序发送指令。

操作员 B 修改 ~/avp_teleoperate/teleop/teleop_hand_and_arm.py 中 img_config 图像客户端配置。程序如果正常启动,终端最后一行将停留在 'Please enter the start signal (enter 'r' to start the subsequent program):' 的字符串输出。

操作员 A 戴上 Apple Vision Pro 设备。在 Apple Vision Pro 上打开 Safari,访问:https://192.168.123.2:8012?/ws=wss://192.168.123.2:8012。点击 Enter VR 并选择 Allow 以启动 VR 会话。

操作员 B 可以在终端中按下 r 键以启动远程操作程序。

根据你的机器人配置选择不同的启动参数。以下是一些启动命令示例:

# 1. G1(29DoF) 机器人 + Dex3-1 灵巧手
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py --arm=G1_29 --hand=dex3
# 2. 仅 G1(29DoF) 机器人
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py
# 3. G1 (23DoF) 机器人
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py --arm=G1_23
# 4. H1_2 机器人 + 一代 Inspire 灵巧手
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py --arm=H1_2 --hand=inspire1
# 5. H1 机器人
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py --arm=H1
# 6. 如果您想开启数据可视化 + 录制,还可以追加 --record 选项
tv) unitree@Host:~/avp_teleoperate/teleop$ python teleop_hand_and_arm.py --arm=G1_23 --record

1.5 avp_teleoperate 与 OpenTeleVision 的差异对比

1.5.1 核心架构的差异对比
avp_teleoperateOpenTeleVision
项目定位与目标由 Unitree Robotics 开发,专注于使用 Apple Vision Pro 控制 Unitree 系列机器人学术研究项目,有 CoRL 2024 论文支持,更通用的远程操作框架
核心架构差异分层设计——明确分为三大模块:image_server, open_television, robot_control功能模块化:act(模仿学习) 和 teleop(远程操作) 两大功能模块
技术实现差异图像处理使用专门的 image_server、image_client 架构;支持多相机同步通用 VR 交互,使用 WebRTC 实现跨设备通信
1.5.2 代码结构上的差异对比

avp_teleoperate 的代码结构:

avp_teleoperate/
├── LICENSE
├── README.md
├── requirements.txt
├── assets/
├── hardware/
├── img/
└── teleop/
    ├── teleop_hand_and_arm.py
    ├── image_server/
    ├── open_television/
    ├── robot_control/
    └── utils/

第二部分 xr_teleoperate:avp_teleoperate 的升级版

2.1 安装

xr 整个系统的示意图和原来 avp 的差不太多。系统依然是 Ubuntu 20.04 或 Ubuntu 22.04。

2.1.1 基础环境
# 创建 conda 基础环境
conda create -n tv python=3.10 pinocchio=3.1.0 numpy=1.26.4 -c conda-forge
conda activate tv
# 克隆本仓库
git clone https://github.com/unitreerobotics/xr_teleoperate.git
cd xr_teleoperate
# 浅克隆子模块
git submodule update --init --depth 1
# 安装 televuer 模块
cd teleop/televuer
pip install -e .
# 生成 televuer 模块所需的证书文件
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem
# 安装 dex-retargeting 模块
cd ../robot_control/dex-retargeting/
pip install -e .
cd ../../../
pip install -r requirements.txt
2.1.2 unitree_sdk2_python
# 安装 unitree_sdk2_python 库
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .

注意:在 xr_teleoperate >= v1.1 版本中,unitree_sdk2_python 仓库的 commit 必须是等于或高于特定版本。

2.2 仿真部署

2.2.1 环境配置

首先,请安装 unitree_sim_isaaclab。其次,启动 unitree_sim_isaaclab 仿真环境。

conda activate unitree_sim_env
cd ~/unitree_sim_isaaclab
python sim_main.py --device cpu --enable_cameras --task Isaac-PickPlace-Cylinder-G129-Dex3-Joint --enable_dex3_dds --robot_type g129
2.2.2 启动遥操

以下是本程序的启动参数说明:

⚙️ 参数📜 说明
--record【启用数据录制模式】按 r 键进入遥操后,按 s 键可开启数据录制
--motion【启用运动控制模式】开启本模式后,可在机器人运控程序运行下进行遥操作程序
--headless【启用无图形界面模式】适用于本程序部署在开发计算单元等无显示器情况
--sim【启用仿真模式】

基础控制参数:

⚙️ 参数📜 说明🔘 目前可选值
--xr-mode选择 XR 输入模式hand(手势跟踪), controller(手柄跟踪)
--arm选择机器人设备类型G1_29, G1_23, H1_2, H1
--ee选择手臂的末端执行器设备类型dex1, dex3, inspire1, brainco

启动命令示例:

cd ~/xr_teleoperate/teleop/
python teleop_hand_and_arm.py --xr-mode=hand --arm=G1_29 --ee=dex3 --sim --record

程序正常启动后,戴上您的 XR 头显设备,连接对应的 WiFi 热点。在终端中按下 r 键后,正式开启遥操作程序。

2.3 真机部署

2.3.1 图像服务

将 xr_teleoperate/teleop/image_server 目录中的 image_server.py 复制到宇树机器人(G1/H1/H1_2 等)的开发计算单元 PC2。

scp ~/xr_teleoperate/teleop/image_server/image_server.py [email protected]:~/image_server/

并在 PC2 上执行以下命令:

unitree@PC2:~/image_server$ python image_server.py
2.3.2 BrainCo 手部服务

请参考官方文档。安装完毕后,请手动启动两个巧手的服务,命令示例如下:

# Terminal 1.
sudo ./brainco_hand --id 126 --serial /dev/ttyUSB1
# Terminal 2.
sudo ./brainco_hand --id 127 --serial /dev/ttyUSB2
2.3.3 启动遥操
  1. 在没有开启运动控制模式(--motion)时,请务必确保机器人已经进入调试模式(L2+R2)。
  2. 如果要开启运动控制模式遥操作,请提前使用 R3 遥控确保机器人进入主运控模式。
  3. 开启运动控制模式(--motion)时:右手柄按钮 A 为遥操作退出功能按钮;左手柄和右手柄的两个摇杆按键同时按下为软急停按键。

第三部分 unitree_IL_lerobot 的安装与运行

3.1 环境安装与数据采集、转换

3.1.1 环境安装:LeRobot 环境安装、unitree_sdk2_python
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python && pip install -e .

# 下载源码
git clone --recurse-submodules https://github.com/unitreerobotics/unitree_IL_lerobot.git
git submodule update --init --recursive
# 创建 conda 环境
conda create -y -n unitree_lerobot python=3.10
conda activate unitree_lerobot
# 安装 LeRobot
cd lerobot && pip install -e .
cd .. && pip install -e .
3.1.2 数据采集

可以通过 avp/xr 现采,或者从 huggingface 上加载数据集。

from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
import tqdm
episode_index = 1
dataset = LeRobotDataset(repo_id="unitreerobotics/G1_ToastedBread_Dataset")
from_idx = dataset.episode_data_index["from"][episode_index].item()
to_idx = dataset.episode_data_index["to"][episode_index].item()
for step_idx in tqdm.tqdm(range(from_idx, to_idx)):
    step = dataset[step_idx]

可视化:

cd unitree_lerobot/lerobot
python lerobot/scripts/visualize_dataset.py \
  --repo-id unitreerobotics/G1_ToastedBread_Dataset \
  --episode-index 0
3.1.3 针对 avp/xr 现采数据的 数据转换:json 格式转换到 lerobot 格式

转换 json 格式到 lerobot 格式——通过 convert_unitree_json_to_lerobot 函数:

python unitree_lerobot/utils/convert_unitree_json_to_lerobot.py \
  --raw-dir $HOME/datasets/g1_grabcube_double_hand \
  --repo-id your_name/g1_grabcube_double_hand \
  --robot_type Unitree_G1_Dex3 \
  --push_to_hub true

排序和重命名:

python unitree_lerobot/utils/sort_and_rename_folders.py \
  --data_dir $HOME/datasets/g1_grabcube_double_hand

3.2 训练与测试

3.2.1 训练

训练 pi0:

cd unitree_lerobot/lerobot
python lerobot/scripts/train.py \
  --dataset.repo_id=unitreerobotics/G1_ToastedBread_Dataset \
  --policy.type=pi0

训练 diffusion policy:

python lerobot/scripts/train.py \
  --dataset.repo_id=unitreerobotics/G1_ToastedBread_Dataset \
  --policy.type=diffusion

训练 ACT:

python lerobot/scripts/train.py \
  --dataset.repo_id=unitreerobotics/G1_ToastedBread_Dataset \
  --policy.type=act
3.2.2 真机测试

在打开 image_server 之后,然后执行以下程序:

# --policy.path 训练保存模型路径
# --repo_id 训练加载的数据集
python unitree_lerobot/eval_robot/eval_g1/eval_g1.py \
  --policy.path=unitree_lerobot/lerobot/outputs/train/2025-03-25/22-11-16_diffusion/checkpoints/100000/pretrained_model \
  --repo_id=unitreerobotics/G1_ToastedBread_Dataset

如果你想验证模型在数据集上的表现,使用下面去测试:

python unitree_lerobot/eval_robot/eval_g1/eval_g1_dataset.py \
  --policy.path=unitree_lerobot/lerobot/outputs/train/2025-03-25/22-11-16_diffusion/checkpoints/100000/pretrained_model \
  --repo_id=unitreerobotics/G1_ToastedBread_Dataset

目录

  1. 前言
  2. 第一部分 基于宇树开源的 avp(xr 以前的版本) 摇操程序
  3. 1.1 Ubuntu、双臂 inverse kinematics 环境配置、unitreeddswrapper 配置
  4. 安装 unitreesdk2python 库
  5. 确保 pinocchio 版本为 3.1.0
  6. 1.2 TeleVision 环境配置和 Apple Vision Pro 通信配置
  7. 1.2.1 基本环境配置和 Isaac Gym 安装
  8. 1.2.2 证书生成相关配置
  9. 1.2.3 启用 Apple Vision Pro 的 WebXR 相关功能、进入 VR
  10. 1.3 硬件清单
  11. 1.3.1 VR 和头部的双目相机
  12. 1.3.2 手腕上的深度相机 D405
  13. 1.4 启动程序
  14. 1.4.1 开启灵巧手服务
  15. 终端 1. 运行 h1 inspire 手部服务
  16. 终端 2. 运行示例
  17. 1.4.2 开启图像推流服务 image_server
  18. 提醒:目前该图像传输程序支持 OpenCV 和 Realsense SDK 两种读取图像的方式
  19. 1.4.3 启动遥操作程序
  20. 1. G1(29DoF) 机器人 + Dex3-1 灵巧手
  21. 2. 仅 G1(29DoF) 机器人
  22. 3. G1 (23DoF) 机器人
  23. 4. H1_2 机器人 + 一代 Inspire 灵巧手
  24. 5. H1 机器人
  25. 6. 如果您想开启数据可视化 + 录制,还可以追加 --record 选项
  26. 1.5 avp_teleoperate 与 OpenTeleVision 的差异对比
  27. 1.5.1 核心架构的差异对比
  28. 1.5.2 代码结构上的差异对比
  29. 第二部分 xrteleoperate:avpteleoperate 的升级版
  30. 2.1 安装
  31. 2.1.1 基础环境
  32. 创建 conda 基础环境
  33. 克隆本仓库
  34. 浅克隆子模块
  35. 安装 televuer 模块
  36. 生成 televuer 模块所需的证书文件
  37. 安装 dex-retargeting 模块
  38. 2.1.2 unitreesdk2python
  39. 安装 unitreesdk2python 库
  40. 2.2 仿真部署
  41. 2.2.1 环境配置
  42. 2.2.2 启动遥操
  43. 2.3 真机部署
  44. 2.3.1 图像服务
  45. 2.3.2 BrainCo 手部服务
  46. Terminal 1.
  47. Terminal 2.
  48. 2.3.3 启动遥操
  49. 第三部分 unitreeILlerobot 的安装与运行
  50. 3.1 环境安装与数据采集、转换
  51. 3.1.1 环境安装:LeRobot 环境安装、unitreesdk2python
  52. 下载源码
  53. 创建 conda 环境
  54. 安装 LeRobot
  55. 3.1.2 数据采集
  56. 3.1.3 针对 avp/xr 现采数据的 数据转换:json 格式转换到 lerobot 格式
  57. 3.2 训练与测试
  58. 3.2.1 训练
  59. 3.2.2 真机测试
  60. --policy.path 训练保存模型路径
  61. --repo_id 训练加载的数据集
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 灵感画廊 AI 绘画环境配置指南
  • Python 爬虫零基础入门:系统路线与工程化实战
  • HarmonyOS 5.0 星闪技术智能家居边缘计算网关开发
  • Flutter 组件 tavily_dart 在 OpenHarmony 上的进阶适配与聚合搜索方案
  • ComfyUI 源码部署:基于 Python Embed 版本构建独立整合包
  • Buzz 离线语音转文字工具安装与 Whisper 模型使用指南
  • Graylog 开源日志管理平台使用指南
  • C++ STL:从零手写 string 及高频易错点复盘
  • Buzz 离线语音转文字工具:基于 Whisper 的本地部署指南
  • openclaw-termux:将 OpenClaw AI Gateway 部署至 Android(含 App 与终端)
  • Java Map 常用方法与核心实现类详解
  • MinIO 开源版本部署实战:避开许可证陷阱
  • Spring AI 实现 MCP Server 和 Client
  • OpenClaw 机器人抓取平台搭建全流程详解
  • 基于 Bright Data MCP Server 构建实时数据驱动的 AI 情报系统实战
  • iOS 新系统兼容适配:UITabBar 液态玻璃效果与 WiFi SSID 获取
  • OpenClaw 漏洞预警:为 AI 代理构建可追溯的日志审计方案
  • PX4 无人机结合 MID360 与 FAST-LIO 实现室内自主定位与定点
  • mssql1069错误(由于登录失败而无法启动服务)解决方法
  • MySQL 与 Navicat 在 Windows 下的安装及配置教程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online