设置 Haply 远程操作#

Haply Devices 提供触觉设备,可实现具有定向力反馈的直观机器人远程操作。Haply Inverse3 与 VerseGrip 配对,创建了一个具有力反馈功能的末端执行器控制系统。

Isaac Lab 支持 Haply 设备用于需要精确空间控制和触觉反馈的远程操作工作流程。这使操作员能够在操作任务期间感受接触力,从而提高控制质量和任务性能。

本指南介绍如何设置和使用 Haply 设备与 Isaac Lab 进行机器人远程操作。

概述#

使用 Haply 与 Isaac Lab 涉及以下组件:

  • Isaac Lab 模拟机器人环境并将接触力流式传输回操作员

  • Haply Inverse3 在操作员的工作空间中提供 3 自由度位置跟踪和力反馈

  • Haply VerseGrip 添加方向感知和用于夹爪控制的按钮输入

  • Haply SDK 管理 Isaac Lab 和 Haply 硬件之间的 WebSocket 通信

本指南将引导您完成:

系统要求#

硬件要求#

  • Isaac Lab 工作站

    • Ubuntu 22.04 或 Ubuntu 24.04

    • 200Hz 物理模拟的硬件要求:

      • CPU: 8 核 Intel Core i7 或 AMD Ryzen 7(或更高)

      • 内存: 32GB RAM(推荐 64GB)

      • GPU: RTX 3090 或更高

    • 网络: 与 Haply 设备在同一局域网中,用于 WebSocket 通信

  • Haply 设备

    • Haply Inverse3 - 用于位置跟踪和力反馈的触觉设备

    • Haply VerseGrip - 用于方向和按钮输入的无线控制器

    • 两个设备都必须开机并连接到 Haply SDK

软件要求#

  • Isaac Lab(请遵循 安装指南

  • Haply SDK(由 Haply Robotics 提供)

  • Python 3.10+

  • websockets Python 包(随 Isaac Lab 自动安装)

安装#

1. 安装 Isaac Lab#

遵循 Isaac Lab 安装指南 设置您的环境。

websockets 依赖项自动包含在 Isaac Lab 的要求中。

2. 安装 Haply SDK#

Haply Devices 网站下载 Haply SDK。安装 SDK 软件并配置设备。

3. 验证安装#

测试 Haply Device Manager 是否检测到您的 Haply 设备。您应该看到 Inverse3 和 VerseGrip 都已连接。

设备设置#

1. 物理设置#

  • 将 Haply Inverse3 放在稳定的表面上

  • 确保 VerseGrip 已充电并配对

  • 舒适地定位自己以到达 Inverse3 工作空间

  • 保持工作空间无障碍物

2. 启动 Haply SDK#

根据 Haply 的文档启动 Haply SDK。SDK 通常:

  • localhost:10001 上运行 WebSocket 服务器

  • 以 200Hz 的频率流式传输设备数据

  • 显示两个设备的连接状态

3. 测试通信#

您可以使用以下 Python 脚本测试 WebSocket 连接:

import asyncio
import websockets
import json

async def test_haply():
    uri = "ws://localhost:10001"
    async with websockets.connect(uri) as ws:
        response = await ws.recv()
        data = json.loads(response)
        print("Inverse3:", data.get("inverse3", []))
        print("VerseGrip:", data.get("wireless_verse_grip", []))

asyncio.run(test_haply())

您应该看到来自 Inverse3 和 VerseGrip 的设备数据流。

运行演示#

Haply 远程操作演示展示了使用 Franka Panda 机械臂进行具有力反馈的机器人操作。

基本用法#

# Ensure Haply SDK is running
./isaaclab.sh -p scripts/demos/haply_teleoperation.py --websocket_uri ws://localhost:10001 --pos_sensitivity 1.65
REM Ensure Haply SDK is running
isaaclab.bat -p scripts\demos\haply_teleoperation.py --websocket_uri ws://localhost:10001 --pos_sensitivity 1.65

演示将:

  1. 通过 WebSocket 连接到 Haply 设备

  2. 在仿真中生成 Franka Panda 机器人和一个立方体

  3. 将 Haply 位置映射到机器人末端执行器位置

  4. 将接触力流式传输回 Inverse3 以提供触觉反馈

控制#

  • 移动 Inverse3: 控制机器人末端执行器位置

  • VerseGrip 按钮 A: 打开夹爪

  • VerseGrip 按钮 B: 关闭夹爪

  • VerseGrip 按钮 C: 旋转末端执行器 60°

高级选项#

使用命令行参数自定义演示:

# Use custom WebSocket URI
./isaaclab.sh -p scripts/demos/haply_teleoperation.py \
    --websocket_uri ws://192.168.1.100:10001

# Adjust position sensitivity (default: 1.0)
./isaaclab.sh -p scripts/demos/haply_teleoperation.py \
     --websocket_uri ws://localhost:10001 \
     --pos_sensitivity 2.0

演示功能#

  • 工作空间映射: Haply 工作空间映射到具有安全限制的机器人可达空间

  • 逆运动学: 逆运动学(IK)计算所需末端执行器姿态的关节位置

  • 力反馈: 来自末端执行器传感器的接触力被发送到 Inverse3 以提供触觉反馈

故障排除#

无触觉反馈#

问题: 在 Inverse3 上感受不到触觉反馈

解决方案:

  • 验证 Inverse3 是 Haply SDK 中的活动设备

  • 检查仿真中的接触力是否为非零(尝试抓取立方体)

  • 确保 limit_force 未设置得太低(默认值: 2.0N)

后续步骤#

  • 自定义演示: 修改工作空间映射或添加自定义按钮行为

  • 实现您自己的控制器: 在您自己的脚本中使用 HaplyDevice

有关设备 API 的更多信息,请参阅 API 文档中的 HaplyDevice