用Apple Vision Pro遥操作Unitree G1手臂完整教程
本文提供使用Apple Vision Pro操控Unitree G1机器人手臂的完整教程。通过Vision Pro的手势追踪功能,配合Ubuntu系统环境配置,实现机器人14自由度双臂的精准遥操作。教程涵盖软件环境搭建(包括逆运动学求解、通信协议配置)、硬件适配要求、启动流程及代码结构解析。重点说明证书生成、WebXR功能启用等关键步骤,并强调需根据G1实际参数调整URDF文件和关节控制代码。操作
用Apple Vision Pro遥操作Unitree G1手臂完整教程
一、概述
本文详细介绍了如何借助Apple Vision Pro实现对宇树科技Unitree G1手臂的遥操作。开发者只需佩戴Vision Pro,通过其摄像头进行手势追踪,即可精准控制机器人。
二、环境准备
(一)系统要求
本示例程序已在Ubuntu 20.04和Ubuntu 22.04操作系统下完成测试,其他版本操作系统的构建条件和步骤可能存在差异,需根据实际情况调整。
(二)软件配置
1. 双臂逆运动学环境配置
该配置用于搭建人形机器人G1双臂(共14个自由度)的末端位姿逆运动学求解软件库。Apple Vision Pro获取左右手腕位姿后,通过pinocchio和CasADi库加载URDF并进行逆运动学计算,得出关节电机角度值,meshcat库则用于Web端调试可视化。具体步骤如下:
# 创建并激活conda环境
conda create -n tv python=3.8
conda activate tv
# 安装pinocchio库(需确保版本为3.1.0)
conda install pinocchio -c conda-forge
# 安装meshcat库
pip install meshcat
注意:使用pip安装的pinocchio可能非3.1.0版本,需仔细检查;必须先安装pinocchio并确认成功,再进行后续TeleVision环境配置,颠倒顺序可能导致环境出错;下文所有终端命令默认在conda的tv环境内执行,除非另有说明。
2. unitree_dds_wrapper配置
该配置用于实现计算机主机与人形机器人G1的通信和控制,安装命令如下:
# 克隆仓库
git clone https://github.com/unitreerobotics/unitree_dds_wrapper.git
cd unitree_dds_wrapper/python
# 安装依赖
pip3 install -e .
3. TeleVision环境与Apple Vision Pro通信配置
本示例基于TeleVision开源项目修改,Isaac Gym仿真环境用于测试配置正确性,具体步骤如下:
(1)基本环境配置
# 克隆项目至本地
cd ~
git clone https://github.com/unitreerobotics/avp_teleoperate.git
cd avp_teleoperate
# 安装基本功能库
pip install -r requirements.txt
(2)Isaac Gym安装
- 在Isaac Gym下载页面下载安装包并解压;
- 进入解压后的目录执行安装命令:
cd IsaacGym_Preview_4_Package/isaacgym/python
pip install -e .
(3)证书生成相关配置
① 安装mkcert
# 安装依赖工具
sudo apt-get install build-essential procps curl file git
cd ~
# 安装brew
/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
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
# 安装mkcert
brew install mkcert
② 生成证书
# 查看本机IP地址
ifconfig | grep inet
# 假设本机IP为192.168.123.2,创建证书(替换为实际IP)
mkcert -install && mkcert -cert-file cert.pem -key-file key.pem 192.168.123.2 localhost 127.0.0.1
# 拷贝证书至项目teleop目录
cp cert.pem key.pem ~/avp_teleoperate/teleop/
③ 系统防火墙设置
sudo ufw allow 8012
④ Apple Vision Pro安装证书
# 获取rootCA.pem路径
mkcert -CAROOT
通过苹果“隔空投送”功能将rootCA.pem文件发送到Apple Vision Pro。注意:发送前需在Apple Vision Pro中开启文件接收功能,路径为:设置 >> 通用 >> 隔空投送 >> 所有人(10分钟)。
(4)启用Apple Vision Pro的WebXR相关功能
在Apple Vision Pro中按以下路径设置:设置 >> Apps >> Safari浏览器 >> 高级 >> 功能标志 >> 启用WebXR相关功能(包括Experimental XR Features、WebXR Device API等)。
(5)进入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”并允许跟踪,即可进入测试界面。
三、硬件适配
(一)硬件清单
| 物品名称 | 数量 | 说明 |
|---|---|---|
| Apple Vision Pro | 1 | 参考Apple官方网址 |
| 计算机 | 1 | x86_64架构 |
| 人形机器人G1 | 1 | 宇树科技人形机器人G1 |
| 灵巧手 | 1 | 型号为SEIRE·RO00TS,可参考相关文档 |
| 双目相机 | 1 | 普通USB免驱动双目相机 |
(二)设备摆放要求
- 真实遥操模式下,需确保Unitree G1的硬件活动范围内无人员或其他物品,避免碰撞;
- 机器人可采用吊起或端坐方式摆放,防止双臂活动时发生碰撞;
- 操作人员需正确佩戴Apple Vision Pro,并严格遵循上述软件配置要求;
- 双目相机用于辅助操作人员观察机器人视角下的工作空间,需根据相机型号和所需视野调整安装位置和朝向。
四、启动程序步骤
(一)开启灵巧手服务
- 参考“灵巧手开发”文档配置相关环境,下载灵巧手控制接口程序并拷贝到Unitree G1的PC2中;
- 解压后执行以下命令编译和启动:
# 安装依赖
sudo apt install libboost-all-dev libspdlog-dev
# 编译项目
cd h1_inspire_service && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
# 终端1:运行灵巧手服务
sudo ./inspire_hand -s /dev/ttyUSB0
# 终端2:运行测试程序
./h1_hand_example
- 若左右灵巧手所有手指循环张开、闭合,则表示启动成功,成功后关闭终端2中的
./h1_hand_example程序。
说明:若Unitree G1的灵巧手控制接口程序有专属版本,需替换为G1对应的接口程序及编译命令,具体参考G1官方开发文档。
(二)开启图像推流服务
- 将
avp_teleoperate/teleop/image_server目录下的image_server.py拷贝到Unitree G1的PC2中; - 在PC2中执行以下命令:
sudo python3 image_server.py
注意:需检查OpenCV读取图像的参数是否与双目相机匹配,以及5555默认推流端口是否可用;
3. 测试通信(测试成功后关闭该程序):
python image_client.py
(三)启动遥操作程序
# 运行遥操作启动程序
python teleop_hand_and_arm.py
- 程序启动成功后,终端会输出
Please enter the start signal (enter 's' to start the subsequent program):; - 佩戴Apple Vision Pro的操作人员需将手臂摆放为与Unitree G1初始姿态接近的姿势,避免初始位姿差距过大导致机器人摆动;
- 主机操作人员按下
s键并回车,正式启动遥操作,机器人双臂将跟随操作人员双臂移动。
五、代码目录解析
代码整体结构与TeleVision保持一致,以下重点介绍与Unitree Robot相关的文件目录:
avp_teleoperate/
│
├── act 存放模仿学习策略相关文件
│
├── assets 存放机器人URDF相关文件(需替换为Unitree G1的URDF文件)
│
├── scripts 存放工具类文件
│
├── teleop 存放遥操作核心文件
│ │
│ ├── image_server/ 图像推流服务端与客户端相关代码
│ │ |
│ │ ├── image_client.py 客户端(测试图像推流服务是否正常)
│ │ |
│ │ ├── image_server.py 服务端(捕获相机图像并网络发送,运行于G1)
│ │
│ ├── robot_control/ 存放IK解算、手臂控制相关文件(需适配G1关节参数)
│ │ |
│ │ ├── robot_arm_ik.py 双臂IK解算代码(需根据G1自由度及关节限制调整)
│ │ |
│ │ ├── robot_arm.py 双臂控制代码(需映射G1关节控制接口)
│ │ |
│ │ ├── robot_hand.py 机械手控制代码(需适配G1灵巧手控制协议)
│ │
│ │──teleop_hand_and_arm.py 遥操作启动程序代码
│ │
│ │──teleop_hand.py 环境配置测试程序
说明:需将assets目录下的URDF文件替换为Unitree G1对应的URDF文件,同时调整robot_control目录下的IK解算、关节控制代码,确保与G1的关节自由度、运动限制及控制接口匹配。
六、注意事项
- 严格按照文档要求安装硬件设备、连接线缆,确保Unitree G1的供电及通信线路连接稳定;
- 遥操过程中,避免机器人双臂活动轨迹重合导致碰撞,确保活动范围内无人员或障碍物;
- 使用例程时,需确保输入参数和操作流程正确,尤其注意G1专属配置(如URDF文件、关节参数)已完成适配;
- 机器人运行时会产生热量,运行中或刚停止时,请勿触摸电机关节部位;
- 例程使用结束后,务必关闭程序并断电。
七、常见问题(FAQ)
Q: 双目相机可以换为其他型号吗?
A: 任意型号USB免驱动双目相机均可(推荐使用FOV较大的相机,保证充足视野)。新相机可通过teleop/image_server/下的image_client.py和image_server.py程序进行测试。
Q: 其他人形机器人可以使用该例程吗?
A: 不可以直接使用,但可借鉴相关思路,需修改URDF、IK解算程序及关节映射等代码,适配目标机器人的硬件参数和控制接口。
Q: 遇到运行错误AttributeError: type object 'Callable' has no attribute...,怎么办?
A: 尝试执行命令pip uninstall typing解决。
Q: 双臂可以进行遥操作,但灵巧手不动,怎么办?
A: 双臂和灵巧手的控制指令相互独立。首先通过“开启灵巧手服务”小节中的h1_hand_example程序(或G1专属测试程序)检测灵巧手是否正常工作;若异常,可参考Unitree G1的“灵巧手开发”页面或联系相关技术支持。
Q: 替换为Unitree G1后,遥操作时机器人运动异常(如抖动、无法到达目标姿态)怎么办?
A: 需检查以下几点:1. assets目录下的URDF文件是否为G1专属版本;2. robot_arm_ik.py中的关节自由度、运动限制参数是否与G1匹配;3. 逆运动学求解算法是否适配G1的机械结构;4. 相机安装位置是否合理,导致Vision Pro手势追踪精度受影响。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)