用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安装
  1. 在Isaac Gym下载页面下载安装包并解压;
  2. 进入解压后的目录执行安装命令:
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免驱动双目相机

(二)设备摆放要求

  1. 真实遥操模式下,需确保Unitree G1的硬件活动范围内无人员或其他物品,避免碰撞;
  2. 机器人可采用吊起或端坐方式摆放,防止双臂活动时发生碰撞;
  3. 操作人员需正确佩戴Apple Vision Pro,并严格遵循上述软件配置要求;
  4. 双目相机用于辅助操作人员观察机器人视角下的工作空间,需根据相机型号和所需视野调整安装位置和朝向。

四、启动程序步骤

(一)开启灵巧手服务

  1. 参考“灵巧手开发”文档配置相关环境,下载灵巧手控制接口程序并拷贝到Unitree G1的PC2中;
  2. 解压后执行以下命令编译和启动:
# 安装依赖
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
  1. 若左右灵巧手所有手指循环张开、闭合,则表示启动成功,成功后关闭终端2中的./h1_hand_example程序。
    说明:若Unitree G1的灵巧手控制接口程序有专属版本,需替换为G1对应的接口程序及编译命令,具体参考G1官方开发文档。

(二)开启图像推流服务

  1. avp_teleoperate/teleop/image_server目录下的image_server.py拷贝到Unitree G1的PC2中;
  2. 在PC2中执行以下命令:
sudo python3 image_server.py

注意:需检查OpenCV读取图像的参数是否与双目相机匹配,以及5555默认推流端口是否可用;
3. 测试通信(测试成功后关闭该程序):

python image_client.py

(三)启动遥操作程序

# 运行遥操作启动程序
python teleop_hand_and_arm.py
  1. 程序启动成功后,终端会输出Please enter the start signal (enter 's' to start the subsequent program):
  2. 佩戴Apple Vision Pro的操作人员需将手臂摆放为与Unitree G1初始姿态接近的姿势,避免初始位姿差距过大导致机器人摆动;
  3. 主机操作人员按下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的关节自由度、运动限制及控制接口匹配。

六、注意事项

  1. 严格按照文档要求安装硬件设备、连接线缆,确保Unitree G1的供电及通信线路连接稳定;
  2. 遥操过程中,避免机器人双臂活动轨迹重合导致碰撞,确保活动范围内无人员或障碍物;
  3. 使用例程时,需确保输入参数和操作流程正确,尤其注意G1专属配置(如URDF文件、关节参数)已完成适配;
  4. 机器人运行时会产生热量,运行中或刚停止时,请勿触摸电机关节部位;
  5. 例程使用结束后,务必关闭程序并断电。

七、常见问题(FAQ)

Q: 双目相机可以换为其他型号吗?
A: 任意型号USB免驱动双目相机均可(推荐使用FOV较大的相机,保证充足视野)。新相机可通过teleop/image_server/下的image_client.pyimage_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手势追踪精度受影响。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐